gltrace_api.cpp revision 4c0596f4cc7d3a0bbbe5862cb38585a58ef4d0a3
10469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy/*
20469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy * Copyright 2011, The Android Open Source Project
30469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy *
40469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy * Licensed under the Apache License, Version 2.0 (the "License");
50469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy * you may not use this file except in compliance with the License.
60469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy * You may obtain a copy of the License at
70469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy *
80469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy *     http://www.apache.org/licenses/LICENSE-2.0
90469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy *
100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy * Unless required by applicable law or agreed to in writing, software
110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy * distributed under the License is distributed on an "AS IS" BASIS,
120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy * See the License for the specific language governing permissions and
140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy * limitations under the License.
150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy *
160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy * THIS FILE WAS GENERATED BY A SCRIPT. DO NOT EDIT.
170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy */
180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy#include <cutils/log.h>
2056ac6ff9bdc3c117e820c5a361ab45049c8b03f8Siva Velusamy#include <utils/Timers.h>
214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall#include <GLES3/gl3.h>
220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy#include "gltrace.pb.h"
240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy#include "gltrace_context.h"
250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy#include "gltrace_fixup.h"
260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy#include "gltrace_transport.h"
270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamynamespace android {
290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamynamespace gltrace {
300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
314c0596f4cc7d3a0bbbe5862cb38585a58ef4d0a3Jesse Hall// Definitions for GL2 APIs
320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glActiveTexture(GLenum texture) {
340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glActiveTexture);
380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument texture
400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_texture = glmsg.add_args();
410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->set_isarray(false);
420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->set_type(GLMessage::DataType::ENUM);
430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->add_intvalue((int)texture);
440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
4605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
4705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glActiveTexture(texture);
4905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
5005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
529801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
539801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
5505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
5605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
5893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glAttachShader(GLuint program, GLuint shader) {
620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glAttachShader);
660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument program
680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_program = glmsg.add_args();
690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_isarray(false);
700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_type(GLMessage::DataType::INT);
710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->add_intvalue(program);
720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument shader
740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_shader = glmsg.add_args();
750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shader->set_isarray(false);
760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shader->set_type(GLMessage::DataType::INT);
770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shader->add_intvalue(shader);
780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
8005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
8105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glAttachShader(program, shader);
8305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
8405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
869801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
879801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
889801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
8905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
9005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
9293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glBindAttribLocation(GLuint program, GLuint index, const GLchar* name) {
960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glBindAttribLocation);
1000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument program
1020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_program = glmsg.add_args();
1030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_isarray(false);
1040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_type(GLMessage::DataType::INT);
1050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->add_intvalue(program);
1060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument index
1080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_index = glmsg.add_args();
1090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_index->set_isarray(false);
1100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_index->set_type(GLMessage::DataType::INT);
1110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_index->add_intvalue(index);
1120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument name
1140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_name = glmsg.add_args();
1150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_name->set_isarray(false);
11639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_name->set_type(GLMessage::DataType::INT64);
11739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_name->add_int64value((uintptr_t)name);
1180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
12005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
12105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glBindAttribLocation(program, index, name);
12305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
12405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
1279801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) name,
1289801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
1299801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
13005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
13105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
1329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
13393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
1340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
1350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glBindBuffer(GLenum target, GLuint buffer) {
1370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
1380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
1390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glBindBuffer);
1410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
1430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
1440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
1450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
1460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
1470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument buffer
1490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_buffer = glmsg.add_args();
1500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_buffer->set_isarray(false);
1510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_buffer->set_type(GLMessage::DataType::INT);
1520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_buffer->add_intvalue(buffer);
1530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
15505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
15605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glBindBuffer(target, buffer);
15805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
15905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
1629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
1639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
16405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
16505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
1669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
16793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
1680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
1690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glBindFramebuffer(GLenum target, GLuint framebuffer) {
1710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
1720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
1730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glBindFramebuffer);
1750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
1770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
1780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
1790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
1800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
1810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument framebuffer
1830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_framebuffer = glmsg.add_args();
1840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffer->set_isarray(false);
1850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffer->set_type(GLMessage::DataType::INT);
1860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffer->add_intvalue(framebuffer);
1870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
18905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
19005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glBindFramebuffer(target, framebuffer);
19205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
19305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
1969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
1979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
19805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
19905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
2009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
20193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
2020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
2030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
2040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glBindRenderbuffer(GLenum target, GLuint renderbuffer) {
2050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
2060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
2070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
2080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glBindRenderbuffer);
2090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
2100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
2110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
2120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
2130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
2140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
2150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
2160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument renderbuffer
2170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
2180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffer->set_isarray(false);
2190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffer->set_type(GLMessage::DataType::INT);
2200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffer->add_intvalue(renderbuffer);
2210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
2220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
22305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
22405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glBindRenderbuffer(target, renderbuffer);
22605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
22705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
2299801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
2309801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
2319801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
23205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
23305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
2349801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
23593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
2360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
2370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
2380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glBindTexture(GLenum target, GLuint texture) {
2390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
2400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
2410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
2420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glBindTexture);
2430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
2440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
2450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
2460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
2470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
2480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
2490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
2500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument texture
2510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_texture = glmsg.add_args();
2520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->set_isarray(false);
2530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->set_type(GLMessage::DataType::INT);
2540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->add_intvalue(texture);
2550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
2560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
25705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
25805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glBindTexture(target, texture);
26005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
26105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
2620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
2639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
2649801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
2659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
26605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
26705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
2689801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
26993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
2700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
2710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
2724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) {
2730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
2740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
2750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
2760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glBlendColor);
2770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
2780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument red
2790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_red = glmsg.add_args();
2800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->set_isarray(false);
2810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->set_type(GLMessage::DataType::FLOAT);
2820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->add_floatvalue(red);
2830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
2840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument green
2850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_green = glmsg.add_args();
2860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->set_isarray(false);
2870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->set_type(GLMessage::DataType::FLOAT);
2880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->add_floatvalue(green);
2890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
2900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument blue
2910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_blue = glmsg.add_args();
2920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->set_isarray(false);
2930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->set_type(GLMessage::DataType::FLOAT);
2940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->add_floatvalue(blue);
2950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
2960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument alpha
2970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_alpha = glmsg.add_args();
2980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->set_isarray(false);
2990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->set_type(GLMessage::DataType::FLOAT);
3000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->add_floatvalue(alpha);
3010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
3020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
30305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
30405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glBlendColor(red, green, blue, alpha);
30605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
30705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
3099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
3109801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
3119801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
31205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
31305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
3149801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
31593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
3160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
3170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
3180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glBlendEquation(GLenum mode) {
3190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
3200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
3210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
3220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glBlendEquation);
3230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
3240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument mode
3250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_mode = glmsg.add_args();
3260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->set_isarray(false);
3270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->set_type(GLMessage::DataType::ENUM);
3280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->add_intvalue((int)mode);
3290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
3300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
33105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
33205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glBlendEquation(mode);
33405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
33505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
3379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
3389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
3399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
34005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
34105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
3429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
34393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
3440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
3450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
3460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) {
3470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
3480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
3490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
3500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glBlendEquationSeparate);
3510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
3520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument modeRGB
3530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_modeRGB = glmsg.add_args();
3540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_modeRGB->set_isarray(false);
3550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_modeRGB->set_type(GLMessage::DataType::ENUM);
3560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_modeRGB->add_intvalue((int)modeRGB);
3570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
3580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument modeAlpha
3590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_modeAlpha = glmsg.add_args();
3600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_modeAlpha->set_isarray(false);
3610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_modeAlpha->set_type(GLMessage::DataType::ENUM);
3620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_modeAlpha->add_intvalue((int)modeAlpha);
3630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
3640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
36505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
36605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glBlendEquationSeparate(modeRGB, modeAlpha);
36805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
36905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
3700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
3719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
3729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
3739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
37405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
37505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
3769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
37793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
3780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
3790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
3800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glBlendFunc(GLenum sfactor, GLenum dfactor) {
3810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
3820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
3830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
3840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glBlendFunc);
3850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
3860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument sfactor
3870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_sfactor = glmsg.add_args();
3880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_sfactor->set_isarray(false);
3890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_sfactor->set_type(GLMessage::DataType::ENUM);
3900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_sfactor->add_intvalue((int)sfactor);
3910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
3920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument dfactor
3930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_dfactor = glmsg.add_args();
3940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_dfactor->set_isarray(false);
3950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_dfactor->set_type(GLMessage::DataType::ENUM);
3960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_dfactor->add_intvalue((int)dfactor);
3970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
3980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
39905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
40005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glBlendFunc(sfactor, dfactor);
40205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
40305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
4059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
4069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
4079801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
40805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
40905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
4109801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
41193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
4120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
4130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
4140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) {
4150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
4160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
4170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
4180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glBlendFuncSeparate);
4190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
4200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument srcRGB
4210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_srcRGB = glmsg.add_args();
4220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_srcRGB->set_isarray(false);
4230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_srcRGB->set_type(GLMessage::DataType::ENUM);
4240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_srcRGB->add_intvalue((int)srcRGB);
4250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
4260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument dstRGB
4270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_dstRGB = glmsg.add_args();
4280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_dstRGB->set_isarray(false);
4290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_dstRGB->set_type(GLMessage::DataType::ENUM);
4300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_dstRGB->add_intvalue((int)dstRGB);
4310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
4320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument srcAlpha
4330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_srcAlpha = glmsg.add_args();
4340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_srcAlpha->set_isarray(false);
4350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_srcAlpha->set_type(GLMessage::DataType::ENUM);
4360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_srcAlpha->add_intvalue((int)srcAlpha);
4370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
4380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument dstAlpha
4390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_dstAlpha = glmsg.add_args();
4400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_dstAlpha->set_isarray(false);
4410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_dstAlpha->set_type(GLMessage::DataType::ENUM);
4420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_dstAlpha->add_intvalue((int)dstAlpha);
4430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
4440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
44505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
44605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glBlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha);
44805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
44905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
4519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
4529801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
4539801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
45405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
45505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
4569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
45793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
4580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
4590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
4600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage) {
4610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
4620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
4630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
4640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glBufferData);
4650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
4660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
4670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
4680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
4690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
4700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
4710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
4720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument size
4730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_size = glmsg.add_args();
4740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_isarray(false);
4750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_type(GLMessage::DataType::INT);
4769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    arg_size->add_intvalue(size);
4770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
4780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument data
4790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_data = glmsg.add_args();
4800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_data->set_isarray(false);
48139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_data->set_type(GLMessage::DataType::INT64);
48239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_data->add_int64value((uintptr_t)data);
4830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
4840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument usage
4850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_usage = glmsg.add_args();
4860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_usage->set_isarray(false);
4870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_usage->set_type(GLMessage::DataType::ENUM);
4880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_usage->add_intvalue((int)usage);
4890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
4900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
49105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
49205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
4930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glBufferData(target, size, data, usage);
49405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
49505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
4960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
4979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
4989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) data,
4999801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
5009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
50105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
50205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
5039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
50493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
5050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
5060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
5070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data) {
5080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
5090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
5100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
5110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glBufferSubData);
5120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
5130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
5140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
5150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
5160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
5170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
5180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
5190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument offset
5200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_offset = glmsg.add_args();
5210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_offset->set_isarray(false);
5220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_offset->set_type(GLMessage::DataType::INT);
5239801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    arg_offset->add_intvalue(offset);
5240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
5250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument size
5260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_size = glmsg.add_args();
5270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_isarray(false);
5280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_type(GLMessage::DataType::INT);
5299801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    arg_size->add_intvalue(size);
5300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
5310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument data
5320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_data = glmsg.add_args();
5330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_data->set_isarray(false);
53439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_data->set_type(GLMessage::DataType::INT64);
53539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_data->add_int64value((uintptr_t)data);
5360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
5370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
53805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
53905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glBufferSubData(target, offset, size, data);
54105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
54205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
5449801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
5459801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) data,
5469801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
5479801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
54805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
54905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
5509801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
55193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
5520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
5530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
5540469dd6d55fa331bfd7de9431da98b6340d82271Siva VelusamyGLenum GLTrace_glCheckFramebufferStatus(GLenum target) {
5550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
5560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
5570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
5580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glCheckFramebufferStatus);
5590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
5600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
5610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
5620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
5630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
5640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
5650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
5660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
56705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
56805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
5690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLenum retValue = glContext->hooks->gl.glCheckFramebufferStatus(target);
57005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
57105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
5720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
5730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
5740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
5750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
5760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::ENUM);
5770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_intvalue((int)retValue);
5780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
5799801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
5809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
5819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
58205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
58305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
5849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
58593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
5860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
5870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
5880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
5890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
5900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glClear(GLbitfield mask) {
5910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
5920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
5930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
5940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glClear);
5950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
5960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument mask
5970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_mask = glmsg.add_args();
5980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mask->set_isarray(false);
5990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mask->set_type(GLMessage::DataType::INT);
6000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mask->add_intvalue(mask);
6010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
6020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
60305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
60405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glClear(mask);
60605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
60705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
6099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
6109801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
6119801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
61205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
61305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
6149801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
61593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
6160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
6170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
6184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) {
6190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
6200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
6210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
6220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glClearColor);
6230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
6240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument red
6250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_red = glmsg.add_args();
6260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->set_isarray(false);
6270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->set_type(GLMessage::DataType::FLOAT);
6280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->add_floatvalue(red);
6290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
6300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument green
6310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_green = glmsg.add_args();
6320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->set_isarray(false);
6330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->set_type(GLMessage::DataType::FLOAT);
6340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->add_floatvalue(green);
6350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
6360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument blue
6370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_blue = glmsg.add_args();
6380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->set_isarray(false);
6390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->set_type(GLMessage::DataType::FLOAT);
6400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->add_floatvalue(blue);
6410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
6420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument alpha
6430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_alpha = glmsg.add_args();
6440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->set_isarray(false);
6450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->set_type(GLMessage::DataType::FLOAT);
6460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->add_floatvalue(alpha);
6470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
6480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
64905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
65005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glClearColor(red, green, blue, alpha);
65205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
65305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
6559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
6569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
6579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
65805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
65905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
6609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
66193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
6620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
6630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
6644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glClearDepthf(GLfloat depth) {
6650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
6660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
6670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
6680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glClearDepthf);
6690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
6700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument depth
6710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_depth = glmsg.add_args();
6720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_isarray(false);
6730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_type(GLMessage::DataType::FLOAT);
6740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->add_floatvalue(depth);
6750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
6760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
67705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
67805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
6790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glClearDepthf(depth);
68005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
68105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
6820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
6839801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
6849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
6859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
68605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
68705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
6889801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
68993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
6900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
6910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
6920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glClearStencil(GLint s) {
6930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
6940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
6950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
6960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glClearStencil);
6970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
6980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument s
6990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_s = glmsg.add_args();
7000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_s->set_isarray(false);
7010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_s->set_type(GLMessage::DataType::INT);
7020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_s->add_intvalue(s);
7030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
7040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
70505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
70605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glClearStencil(s);
70805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
70905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
7119801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
7129801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
7139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
71405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
71505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
7169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
71793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
7180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
7190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
7200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) {
7210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
7220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
7230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
7240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glColorMask);
7250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
7260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument red
7270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_red = glmsg.add_args();
7280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->set_isarray(false);
7290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->set_type(GLMessage::DataType::BOOL);
7300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->add_boolvalue(red);
7310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
7320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument green
7330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_green = glmsg.add_args();
7340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->set_isarray(false);
7350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->set_type(GLMessage::DataType::BOOL);
7360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->add_boolvalue(green);
7370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
7380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument blue
7390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_blue = glmsg.add_args();
7400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->set_isarray(false);
7410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->set_type(GLMessage::DataType::BOOL);
7420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->add_boolvalue(blue);
7430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
7440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument alpha
7450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_alpha = glmsg.add_args();
7460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->set_isarray(false);
7470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->set_type(GLMessage::DataType::BOOL);
7480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->add_boolvalue(alpha);
7490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
7500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
75105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
75205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glColorMask(red, green, blue, alpha);
75405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
75505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
7579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
7589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
7599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
76005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
76105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
7629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
76393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
7640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
7650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
7660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glCompileShader(GLuint shader) {
7670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
7680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
7690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
7700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glCompileShader);
7710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
7720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument shader
7730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_shader = glmsg.add_args();
7740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shader->set_isarray(false);
7750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shader->set_type(GLMessage::DataType::INT);
7760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shader->add_intvalue(shader);
7770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
7780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
77905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
78005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
7810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glCompileShader(shader);
78205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
78305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
7840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
7859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
7869801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
7879801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
78805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
78905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
7909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
79193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
7920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
7930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
7940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data) {
7950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
7960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
7970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
7980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glCompressedTexImage2D);
7990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
8000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
8010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
8020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
8030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
8040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
8050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
8060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument level
8070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_level = glmsg.add_args();
8080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_isarray(false);
8090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_type(GLMessage::DataType::INT);
8100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->add_intvalue(level);
8110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
8120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument internalformat
8130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_internalformat = glmsg.add_args();
8140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->set_isarray(false);
8150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->set_type(GLMessage::DataType::ENUM);
8160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->add_intvalue((int)internalformat);
8170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
8180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
8190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
8200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
8210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
8220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
8230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
8240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
8250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
8260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
8270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
8280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
8290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
8300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument border
8310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_border = glmsg.add_args();
8320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_border->set_isarray(false);
8330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_border->set_type(GLMessage::DataType::INT);
8340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_border->add_intvalue(border);
8350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
8360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument imageSize
8370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_imageSize = glmsg.add_args();
8380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_imageSize->set_isarray(false);
8390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_imageSize->set_type(GLMessage::DataType::INT);
8400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_imageSize->add_intvalue(imageSize);
8410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
8420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument data
8430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_data = glmsg.add_args();
8440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_data->set_isarray(false);
84539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_data->set_type(GLMessage::DataType::INT64);
84639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_data->add_int64value((uintptr_t)data);
8470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
8480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
84905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
85005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
8510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data);
85205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
85305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
8540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
8559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
8569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) data,
8579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
8589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
85905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
86005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
8619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
86293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
8630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
8640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
8650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data) {
8660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
8670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
8680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
8690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glCompressedTexSubImage2D);
8700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
8710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
8720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
8730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
8740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
8750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
8760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
8770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument level
8780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_level = glmsg.add_args();
8790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_isarray(false);
8800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_type(GLMessage::DataType::INT);
8810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->add_intvalue(level);
8820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
8830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument xoffset
8840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_xoffset = glmsg.add_args();
8850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->set_isarray(false);
8860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->set_type(GLMessage::DataType::INT);
8870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->add_intvalue(xoffset);
8880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
8890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument yoffset
8900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_yoffset = glmsg.add_args();
8910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->set_isarray(false);
8920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->set_type(GLMessage::DataType::INT);
8930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->add_intvalue(yoffset);
8940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
8950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
8960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
8970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
8980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
8990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
9000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
9010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
9020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
9030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
9040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
9050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
9060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
9070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument format
9080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_format = glmsg.add_args();
9090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->set_isarray(false);
9100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->set_type(GLMessage::DataType::ENUM);
9110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->add_intvalue((int)format);
9120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
9130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument imageSize
9140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_imageSize = glmsg.add_args();
9150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_imageSize->set_isarray(false);
9160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_imageSize->set_type(GLMessage::DataType::INT);
9170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_imageSize->add_intvalue(imageSize);
9180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
9190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument data
9200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_data = glmsg.add_args();
9210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_data->set_isarray(false);
92239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_data->set_type(GLMessage::DataType::INT64);
92339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_data->add_int64value((uintptr_t)data);
9240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
9250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
92605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
92705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data);
92905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
93005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
9310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
9329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
9339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) data,
9349801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
9359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
93605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
93705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
9389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
93993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
9400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
9410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
9420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) {
9430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
9440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
9450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
9460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glCopyTexImage2D);
9470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
9480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
9490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
9500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
9510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
9520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
9530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
9540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument level
9550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_level = glmsg.add_args();
9560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_isarray(false);
9570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_type(GLMessage::DataType::INT);
9580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->add_intvalue(level);
9590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
9600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument internalformat
9610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_internalformat = glmsg.add_args();
9620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->set_isarray(false);
9630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->set_type(GLMessage::DataType::ENUM);
9640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->add_intvalue((int)internalformat);
9650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
9660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
9670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
9680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
9690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::INT);
9700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_intvalue(x);
9710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
9720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
9730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
9740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
9750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::INT);
9760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_intvalue(y);
9770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
9780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
9790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
9800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
9810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
9820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
9830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
9840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
9850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
9860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
9870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
9880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
9890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
9900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument border
9910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_border = glmsg.add_args();
9920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_border->set_isarray(false);
9930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_border->set_type(GLMessage::DataType::INT);
9940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_border->add_intvalue(border);
9950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
9960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
99705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
99805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
9990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glCopyTexImage2D(target, level, internalformat, x, y, width, height, border);
100005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
100105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
10039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
10049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
10059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
100605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
100705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
10089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
100993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
10100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
10110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
10120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) {
10130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
10140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
10150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
10160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glCopyTexSubImage2D);
10170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
10180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
10190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
10200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
10210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
10220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
10230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
10240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument level
10250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_level = glmsg.add_args();
10260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_isarray(false);
10270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_type(GLMessage::DataType::INT);
10280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->add_intvalue(level);
10290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
10300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument xoffset
10310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_xoffset = glmsg.add_args();
10320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->set_isarray(false);
10330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->set_type(GLMessage::DataType::INT);
10340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->add_intvalue(xoffset);
10350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
10360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument yoffset
10370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_yoffset = glmsg.add_args();
10380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->set_isarray(false);
10390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->set_type(GLMessage::DataType::INT);
10400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->add_intvalue(yoffset);
10410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
10420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
10430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
10440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
10450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::INT);
10460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_intvalue(x);
10470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
10480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
10490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
10500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
10510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::INT);
10520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_intvalue(y);
10530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
10540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
10550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
10560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
10570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
10580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
10590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
10600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
10610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
10620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
10630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
10640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
10650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
10660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
106705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
106805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height);
107005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
107105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
10739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
10749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
10759801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
107605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
107705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
10789801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
107993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
10800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
10810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
10820469dd6d55fa331bfd7de9431da98b6340d82271Siva VelusamyGLuint GLTrace_glCreateProgram(void) {
10830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
10840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
10850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
10860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glCreateProgram);
10870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
10880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
108905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
109005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
10910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLuint retValue = glContext->hooks->gl.glCreateProgram();
109205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
109305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
10940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
10950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
10960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
10970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
10980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::INT);
10990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_intvalue(retValue);
11000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
11019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
11029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
11039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
110405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
110505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
11069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
110793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
11080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
11090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
11100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
11110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
11120469dd6d55fa331bfd7de9431da98b6340d82271Siva VelusamyGLuint GLTrace_glCreateShader(GLenum type) {
11130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
11140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
11150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
11160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glCreateShader);
11170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
11180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument type
11190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_type = glmsg.add_args();
11200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_isarray(false);
11210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_type(GLMessage::DataType::ENUM);
11220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->add_intvalue((int)type);
11230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
11240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
112505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
112605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLuint retValue = glContext->hooks->gl.glCreateShader(type);
112805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
112905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
11310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
11320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
11330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
11340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::INT);
11350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_intvalue(retValue);
11360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
11379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
11389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
11399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
114005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
114105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
11429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
114393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
11440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
11450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
11460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
11470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
11480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glCullFace(GLenum mode) {
11490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
11500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
11510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
11520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glCullFace);
11530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
11540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument mode
11550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_mode = glmsg.add_args();
11560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->set_isarray(false);
11570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->set_type(GLMessage::DataType::ENUM);
11580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->add_intvalue((int)mode);
11590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
11600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
116105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
116205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glCullFace(mode);
116405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
116505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
11660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
11679801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
11689801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
11699801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
117005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
117105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
11729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
117393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
11740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
11750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
11760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDeleteBuffers(GLsizei n, const GLuint* buffers) {
11770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
11780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
11790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
11800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDeleteBuffers);
11810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
11820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument n
11830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_n = glmsg.add_args();
11840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_isarray(false);
11850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_type(GLMessage::DataType::INT);
11860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->add_intvalue(n);
11870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
11880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument buffers
11890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_buffers = glmsg.add_args();
11900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_buffers->set_isarray(false);
119139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_buffers->set_type(GLMessage::DataType::INT64);
119239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_buffers->add_int64value((uintptr_t)buffers);
11930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
11940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
119505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
119605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
11970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDeleteBuffers(n, buffers);
119805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
119905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
12019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
12029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) buffers,
12039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
12049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
120505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
120605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
12079801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
120893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
12090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
12100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
12110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers) {
12120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
12130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
12140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
12150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDeleteFramebuffers);
12160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
12170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument n
12180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_n = glmsg.add_args();
12190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_isarray(false);
12200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_type(GLMessage::DataType::INT);
12210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->add_intvalue(n);
12220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
12230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument framebuffers
12240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_framebuffers = glmsg.add_args();
12250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffers->set_isarray(false);
122639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_framebuffers->set_type(GLMessage::DataType::INT64);
122739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_framebuffers->add_int64value((uintptr_t)framebuffers);
12280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
12290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
123005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
123105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDeleteFramebuffers(n, framebuffers);
123305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
123405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
12369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
12379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) framebuffers,
12389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
12399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
124005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
124105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
12429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
124393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
12440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
12450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
12460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDeleteProgram(GLuint program) {
12470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
12480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
12490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
12500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDeleteProgram);
12510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
12520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument program
12530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_program = glmsg.add_args();
12540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_isarray(false);
12550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_type(GLMessage::DataType::INT);
12560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->add_intvalue(program);
12570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
12580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
125905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
126005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDeleteProgram(program);
126205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
126305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
12659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
12669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
12679801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
126805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
126905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
12709801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
127193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
12720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
12730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
12740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers) {
12750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
12760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
12770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
12780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDeleteRenderbuffers);
12790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
12800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument n
12810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_n = glmsg.add_args();
12820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_isarray(false);
12830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_type(GLMessage::DataType::INT);
12840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->add_intvalue(n);
12850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
12860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument renderbuffers
12870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_renderbuffers = glmsg.add_args();
12880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffers->set_isarray(false);
128939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_renderbuffers->set_type(GLMessage::DataType::INT64);
129039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_renderbuffers->add_int64value((uintptr_t)renderbuffers);
12910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
12920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
129305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
129405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
12950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDeleteRenderbuffers(n, renderbuffers);
129605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
129705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
12980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
12999801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
13009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) renderbuffers,
13019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
13029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
130305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
130405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
13059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
130693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
13070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
13080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
13090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDeleteShader(GLuint shader) {
13100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
13110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
13120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
13130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDeleteShader);
13140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
13150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument shader
13160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_shader = glmsg.add_args();
13170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shader->set_isarray(false);
13180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shader->set_type(GLMessage::DataType::INT);
13190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shader->add_intvalue(shader);
13200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
13210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
132205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
132305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDeleteShader(shader);
132505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
132605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
13289801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
13299801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
13309801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
133105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
133205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
13339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
133493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
13350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
13360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
13370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDeleteTextures(GLsizei n, const GLuint* textures) {
13380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
13390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
13400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
13410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDeleteTextures);
13420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
13430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument n
13440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_n = glmsg.add_args();
13450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_isarray(false);
13460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_type(GLMessage::DataType::INT);
13470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->add_intvalue(n);
13480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
13490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument textures
13500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_textures = glmsg.add_args();
13510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_textures->set_isarray(false);
135239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_textures->set_type(GLMessage::DataType::INT64);
135339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_textures->add_int64value((uintptr_t)textures);
13540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
13550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
135605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
135705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDeleteTextures(n, textures);
135905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
136005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
13629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
13639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) textures,
13649801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
13659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
136605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
136705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
13689801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
136993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
13700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
13710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
13720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDepthFunc(GLenum func) {
13730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
13740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
13750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
13760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDepthFunc);
13770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
13780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument func
13790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_func = glmsg.add_args();
13800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_func->set_isarray(false);
13810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_func->set_type(GLMessage::DataType::ENUM);
13820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_func->add_intvalue((int)func);
13830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
13840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
138505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
138605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
13870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDepthFunc(func);
138805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
138905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
13900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
13919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
13929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
13939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
139405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
139505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
13969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
139793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
13980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
13990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
14000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDepthMask(GLboolean flag) {
14010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
14020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
14030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
14040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDepthMask);
14050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
14060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument flag
14070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_flag = glmsg.add_args();
14080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_flag->set_isarray(false);
14090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_flag->set_type(GLMessage::DataType::BOOL);
14100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_flag->add_boolvalue(flag);
14110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
14120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
141305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
141405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDepthMask(flag);
141605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
141705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
14199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
14209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
14219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
142205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
142305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
14249801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
142593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
14260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
14270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
14284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glDepthRangef(GLfloat n, GLfloat f) {
14290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
14300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
14310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
14320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDepthRangef);
14330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
14344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument n
14354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_n = glmsg.add_args();
14364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_n->set_isarray(false);
14374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_n->set_type(GLMessage::DataType::FLOAT);
14384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_n->add_floatvalue(n);
14390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
14404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument f
14414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_f = glmsg.add_args();
14424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_f->set_isarray(false);
14434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_f->set_type(GLMessage::DataType::FLOAT);
14444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_f->add_floatvalue(f);
14450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
14460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
144705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
144805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glDepthRangef(n, f);
145005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
145105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
14539801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
14549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
14559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
145605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
145705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
14589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
145993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
14600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
14610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
14620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDetachShader(GLuint program, GLuint shader) {
14630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
14640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
14650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
14660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDetachShader);
14670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
14680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument program
14690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_program = glmsg.add_args();
14700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_isarray(false);
14710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_type(GLMessage::DataType::INT);
14720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->add_intvalue(program);
14730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
14740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument shader
14750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_shader = glmsg.add_args();
14760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shader->set_isarray(false);
14770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shader->set_type(GLMessage::DataType::INT);
14780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shader->add_intvalue(shader);
14790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
14800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
148105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
148205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDetachShader(program, shader);
148405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
148505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
14860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
14879801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
14889801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
14899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
149005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
149105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
14929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
149393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
14940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
14950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
14960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDisable(GLenum cap) {
14970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
14980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
14990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
15000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDisable);
15010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
15020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument cap
15030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_cap = glmsg.add_args();
15040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_cap->set_isarray(false);
15050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_cap->set_type(GLMessage::DataType::ENUM);
15060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_cap->add_intvalue((int)cap);
15070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
15080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
150905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
151005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDisable(cap);
151205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
151305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
15159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
15169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
15179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
151805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
151905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
15209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
152193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
15220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
15230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
15240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDisableVertexAttribArray(GLuint index) {
15250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
15260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
15270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
15280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDisableVertexAttribArray);
15290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
15300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument index
15310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_index = glmsg.add_args();
15320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_index->set_isarray(false);
15330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_index->set_type(GLMessage::DataType::INT);
15340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_index->add_intvalue(index);
15350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
15360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
153705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
153805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDisableVertexAttribArray(index);
154005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
154105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
15439801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
15449801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
15459801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
154605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
154705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
15489801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
154993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
15500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
15510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
15520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDrawArrays(GLenum mode, GLint first, GLsizei count) {
15530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
15540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
15550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
15560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDrawArrays);
15570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
15580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument mode
15590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_mode = glmsg.add_args();
15600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->set_isarray(false);
15610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->set_type(GLMessage::DataType::ENUM);
15620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->add_intvalue((int)mode);
15630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
15640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument first
15650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_first = glmsg.add_args();
15660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_first->set_isarray(false);
15670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_first->set_type(GLMessage::DataType::INT);
15680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_first->add_intvalue(first);
15690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
15700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument count
15710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_count = glmsg.add_args();
15720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->set_isarray(false);
15730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->set_type(GLMessage::DataType::INT);
15740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->add_intvalue(count);
15750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
15760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
157705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
157805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
15790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDrawArrays(mode, first, count);
158005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
158105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
15820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
15839801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
15849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
15859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
158605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
158705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
15889801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
158993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
15900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
15910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
15920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices) {
15930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
15940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
15950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
15960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDrawElements);
15970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
15980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument mode
15990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_mode = glmsg.add_args();
16000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->set_isarray(false);
16010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->set_type(GLMessage::DataType::ENUM);
16020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->add_intvalue((int)mode);
16030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
16040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument count
16050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_count = glmsg.add_args();
16060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->set_isarray(false);
16070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->set_type(GLMessage::DataType::INT);
16080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->add_intvalue(count);
16090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
16100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument type
16110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_type = glmsg.add_args();
16120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_isarray(false);
16130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_type(GLMessage::DataType::ENUM);
16140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->add_intvalue((int)type);
16150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
16160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument indices
16170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_indices = glmsg.add_args();
16180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_indices->set_isarray(false);
161939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_indices->set_type(GLMessage::DataType::INT64);
162039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_indices->add_int64value((uintptr_t)indices);
16210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
16220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
162305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
162405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDrawElements(mode, count, type, indices);
162605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
162705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
16299801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
16309801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) indices,
16319801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
16329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
163305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
163405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
16359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
163693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
16370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
16380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
16390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glEnable(GLenum cap) {
16400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
16410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
16420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
16430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glEnable);
16440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
16450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument cap
16460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_cap = glmsg.add_args();
16470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_cap->set_isarray(false);
16480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_cap->set_type(GLMessage::DataType::ENUM);
16490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_cap->add_intvalue((int)cap);
16500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
16510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
165205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
165305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glEnable(cap);
165505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
165605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
16589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
16599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
16609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
166105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
166205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
16639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
166493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
16650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
16660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
16670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glEnableVertexAttribArray(GLuint index) {
16680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
16690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
16700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
16710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glEnableVertexAttribArray);
16720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
16730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument index
16740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_index = glmsg.add_args();
16750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_index->set_isarray(false);
16760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_index->set_type(GLMessage::DataType::INT);
16770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_index->add_intvalue(index);
16780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
16790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
168005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
168105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
16820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glEnableVertexAttribArray(index);
168305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
168405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
16850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
16869801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
16879801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
16889801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
168905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
169005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
16919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
169293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
16930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
16940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
16950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFinish(void) {
16960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
16970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
16980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
16990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFinish);
17000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
17010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
170205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
170305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFinish();
170505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
170605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
17089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
17099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
17109801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
171105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
171205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
17139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
171493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
17150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
17160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
17170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFlush(void) {
17180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
17190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
17200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
17210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFlush);
17220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
17230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
172405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
172505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFlush();
172705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
172805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
17309801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
17319801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
17329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
173305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
173405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
17359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
173693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
17370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
17380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
17390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) {
17400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
17410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
17420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
17430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFramebufferRenderbuffer);
17440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
17450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
17460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
17470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
17480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
17490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
17500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
17510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument attachment
17520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_attachment = glmsg.add_args();
17530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->set_isarray(false);
17540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->set_type(GLMessage::DataType::ENUM);
17550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->add_intvalue((int)attachment);
17560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
17570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument renderbuffertarget
17580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_renderbuffertarget = glmsg.add_args();
17590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffertarget->set_isarray(false);
17600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffertarget->set_type(GLMessage::DataType::ENUM);
17610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffertarget->add_intvalue((int)renderbuffertarget);
17620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
17630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument renderbuffer
17640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
17650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffer->set_isarray(false);
17660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffer->set_type(GLMessage::DataType::INT);
17670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffer->add_intvalue(renderbuffer);
17680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
17690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
177005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
177105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
17720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer);
177305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
177405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
17750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
17769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
17779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
17789801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
177905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
178005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
17819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
178293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
17830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
17840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
17850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) {
17860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
17870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
17880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
17890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFramebufferTexture2D);
17900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
17910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
17920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
17930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
17940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
17950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
17960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
17970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument attachment
17980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_attachment = glmsg.add_args();
17990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->set_isarray(false);
18000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->set_type(GLMessage::DataType::ENUM);
18010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->add_intvalue((int)attachment);
18020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
18030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument textarget
18040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_textarget = glmsg.add_args();
18050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_textarget->set_isarray(false);
18060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_textarget->set_type(GLMessage::DataType::ENUM);
18070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_textarget->add_intvalue((int)textarget);
18080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
18090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument texture
18100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_texture = glmsg.add_args();
18110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->set_isarray(false);
18120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->set_type(GLMessage::DataType::INT);
18130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->add_intvalue(texture);
18140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
18150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument level
18160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_level = glmsg.add_args();
18170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_isarray(false);
18180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_type(GLMessage::DataType::INT);
18190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->add_intvalue(level);
18200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
18210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
182205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
182305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFramebufferTexture2D(target, attachment, textarget, texture, level);
182505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
182605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
18289801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
18299801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
18309801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
183105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
183205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
18339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
183493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
18350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
18360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
18370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFrontFace(GLenum mode) {
18380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
18390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
18400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
18410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFrontFace);
18420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
18430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument mode
18440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_mode = glmsg.add_args();
18450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->set_isarray(false);
18460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->set_type(GLMessage::DataType::ENUM);
18470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->add_intvalue((int)mode);
18480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
18490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
185005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
185105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFrontFace(mode);
185305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
185405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
18569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
18579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
18589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
185905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
186005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
18619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
186293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
18630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
18640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
18650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGenBuffers(GLsizei n, GLuint* buffers) {
18660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
18670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
18680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
18690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGenBuffers);
18700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
18710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument n
18720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_n = glmsg.add_args();
18730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_isarray(false);
18740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_type(GLMessage::DataType::INT);
18750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->add_intvalue(n);
18760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
18770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument buffers
18780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_buffers = glmsg.add_args();
18790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_buffers->set_isarray(false);
188039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_buffers->set_type(GLMessage::DataType::INT64);
188139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_buffers->add_int64value((uintptr_t)buffers);
18820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
18830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
188405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
188505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
18860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGenBuffers(n, buffers);
188705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
188805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
18890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
18909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
18919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) buffers,
18929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
18939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
189405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
189505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
18969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
189793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
18980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
18990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
19000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGenerateMipmap(GLenum target) {
19010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
19020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
19030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
19040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGenerateMipmap);
19050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
19060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
19070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
19080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
19090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
19100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
19110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
19120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
191305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
191405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGenerateMipmap(target);
191605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
191705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
19199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
19209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
19219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
192205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
192305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
19249801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
192593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
19260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
19270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
19280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGenFramebuffers(GLsizei n, GLuint* framebuffers) {
19290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
19300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
19310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
19320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGenFramebuffers);
19330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
19340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument n
19350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_n = glmsg.add_args();
19360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_isarray(false);
19370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_type(GLMessage::DataType::INT);
19380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->add_intvalue(n);
19390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
19400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument framebuffers
19410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_framebuffers = glmsg.add_args();
19420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffers->set_isarray(false);
194339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_framebuffers->set_type(GLMessage::DataType::INT64);
194439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_framebuffers->add_int64value((uintptr_t)framebuffers);
19450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
19460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
194705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
194805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGenFramebuffers(n, framebuffers);
195005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
195105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
19539801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
19549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) framebuffers,
19559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
19569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
195705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
195805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
19599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
196093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
19610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
19620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
19630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGenRenderbuffers(GLsizei n, GLuint* renderbuffers) {
19640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
19650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
19660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
19670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGenRenderbuffers);
19680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
19690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument n
19700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_n = glmsg.add_args();
19710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_isarray(false);
19720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_type(GLMessage::DataType::INT);
19730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->add_intvalue(n);
19740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
19750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument renderbuffers
19760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_renderbuffers = glmsg.add_args();
19770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffers->set_isarray(false);
197839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_renderbuffers->set_type(GLMessage::DataType::INT64);
197939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_renderbuffers->add_int64value((uintptr_t)renderbuffers);
19800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
19810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
198205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
198305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
19840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGenRenderbuffers(n, renderbuffers);
198505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
198605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
19870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
19889801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
19899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) renderbuffers,
19909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
19919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
199205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
199305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
19949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
199593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
19960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
19970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
19980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGenTextures(GLsizei n, GLuint* textures) {
19990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
20000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
20010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
20020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGenTextures);
20030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
20040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument n
20050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_n = glmsg.add_args();
20060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_isarray(false);
20070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_type(GLMessage::DataType::INT);
20080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->add_intvalue(n);
20090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
20100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument textures
20110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_textures = glmsg.add_args();
20120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_textures->set_isarray(false);
201339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_textures->set_type(GLMessage::DataType::INT64);
201439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_textures->add_int64value((uintptr_t)textures);
20150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
20160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
201705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
201805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGenTextures(n, textures);
202005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
202105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
20239801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
20249801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) textures,
20259801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
20269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
202705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
202805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
20299801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
203093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
20310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
20320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
20330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name) {
20340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
20350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
20360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
20370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetActiveAttrib);
20380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
20390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument program
20400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_program = glmsg.add_args();
20410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_isarray(false);
20420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_type(GLMessage::DataType::INT);
20430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->add_intvalue(program);
20440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
20450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument index
20460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_index = glmsg.add_args();
20470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_index->set_isarray(false);
20480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_index->set_type(GLMessage::DataType::INT);
20490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_index->add_intvalue(index);
20500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
20510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument bufsize
20520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_bufsize = glmsg.add_args();
20530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufsize->set_isarray(false);
20540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufsize->set_type(GLMessage::DataType::INT);
20550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufsize->add_intvalue(bufsize);
20560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
20570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument length
20580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_length = glmsg.add_args();
20590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_isarray(false);
206039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->set_type(GLMessage::DataType::INT64);
206139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->add_int64value((uintptr_t)length);
20620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
20630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument size
20640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_size = glmsg.add_args();
20650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_isarray(false);
206639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_size->set_type(GLMessage::DataType::INT64);
206739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_size->add_int64value((uintptr_t)size);
20680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
20690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument type
20700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_type = glmsg.add_args();
20710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_isarray(false);
207239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_type->set_type(GLMessage::DataType::INT64);
207339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_type->add_int64value((uintptr_t)type);
20740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
20750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument name
20760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_name = glmsg.add_args();
20770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_name->set_isarray(false);
207839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_name->set_type(GLMessage::DataType::INT64);
207939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_name->add_int64value((uintptr_t)name);
20800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
20810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
208205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
208305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
20840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetActiveAttrib(program, index, bufsize, length, size, type, name);
208505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
208605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
20870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
20889801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
20899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) length,
20909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) size,
20919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) type,
20929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) name,
20939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
20949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
209505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
209605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
20979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
209893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
20990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
21000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
21010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name) {
21020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
21030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
21040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
21050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetActiveUniform);
21060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
21070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument program
21080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_program = glmsg.add_args();
21090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_isarray(false);
21100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_type(GLMessage::DataType::INT);
21110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->add_intvalue(program);
21120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
21130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument index
21140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_index = glmsg.add_args();
21150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_index->set_isarray(false);
21160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_index->set_type(GLMessage::DataType::INT);
21170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_index->add_intvalue(index);
21180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
21190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument bufsize
21200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_bufsize = glmsg.add_args();
21210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufsize->set_isarray(false);
21220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufsize->set_type(GLMessage::DataType::INT);
21230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufsize->add_intvalue(bufsize);
21240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
21250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument length
21260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_length = glmsg.add_args();
21270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_isarray(false);
212839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->set_type(GLMessage::DataType::INT64);
212939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->add_int64value((uintptr_t)length);
21300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
21310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument size
21320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_size = glmsg.add_args();
21330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_isarray(false);
213439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_size->set_type(GLMessage::DataType::INT64);
213539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_size->add_int64value((uintptr_t)size);
21360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
21370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument type
21380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_type = glmsg.add_args();
21390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_isarray(false);
214039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_type->set_type(GLMessage::DataType::INT64);
214139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_type->add_int64value((uintptr_t)type);
21420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
21430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument name
21440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_name = glmsg.add_args();
21450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_name->set_isarray(false);
214639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_name->set_type(GLMessage::DataType::INT64);
214739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_name->add_int64value((uintptr_t)name);
21480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
21490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
215005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
215105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
21520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetActiveUniform(program, index, bufsize, length, size, type, name);
215305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
215405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
21550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
21569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
21579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) length,
21589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) size,
21599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) type,
21609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) name,
21619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
21629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
216305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
216405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
21659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
216693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
21670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
21680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
21690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders) {
21700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
21710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
21720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
21730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetAttachedShaders);
21740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
21750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument program
21760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_program = glmsg.add_args();
21770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_isarray(false);
21780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_type(GLMessage::DataType::INT);
21790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->add_intvalue(program);
21800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
21810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument maxcount
21820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_maxcount = glmsg.add_args();
21830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxcount->set_isarray(false);
21840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxcount->set_type(GLMessage::DataType::INT);
21850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxcount->add_intvalue(maxcount);
21860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
21870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument count
21880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_count = glmsg.add_args();
21890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->set_isarray(false);
219039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_count->set_type(GLMessage::DataType::INT64);
219139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_count->add_int64value((uintptr_t)count);
21920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
21930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument shaders
21940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_shaders = glmsg.add_args();
21950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shaders->set_isarray(false);
219639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_shaders->set_type(GLMessage::DataType::INT64);
219739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_shaders->add_int64value((uintptr_t)shaders);
21980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
21990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
220005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
220105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetAttachedShaders(program, maxcount, count, shaders);
220305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
220405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
22069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
22079801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) count,
22089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) shaders,
22099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
22109801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
221105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
221205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
22139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
221493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
22150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
22160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
2217300ad09822db1013d9f28c4bca3680f865533ab6Andrew HsiehGLint GLTrace_glGetAttribLocation(GLuint program, const GLchar* name) {
22180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
22190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
22200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
22210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetAttribLocation);
22220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
22230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument program
22240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_program = glmsg.add_args();
22250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_isarray(false);
22260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_type(GLMessage::DataType::INT);
22270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->add_intvalue(program);
22280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
22290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument name
22300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_name = glmsg.add_args();
22310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_name->set_isarray(false);
223239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_name->set_type(GLMessage::DataType::INT64);
223339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_name->add_int64value((uintptr_t)name);
22340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
22350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
223605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
223705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
2238300ad09822db1013d9f28c4bca3680f865533ab6Andrew Hsieh    GLint retValue = glContext->hooks->gl.glGetAttribLocation(program, name);
223905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
224005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
22420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
22430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
22440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
22450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::INT);
22460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_intvalue(retValue);
22470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
22489801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
22499801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) name,
22509801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
22519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
225205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
225305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
22549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
225593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
22560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
22570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
22580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
22590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
22600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetBooleanv(GLenum pname, GLboolean* params) {
22610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
22620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
22630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
22640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetBooleanv);
22650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
22660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
22670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
22680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
22690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
22700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
22710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
22720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
22730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
22740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
227539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
227639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
22770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
22780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
227905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
228005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
22810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetBooleanv(pname, params);
228205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
228305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
22840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
22859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
22869801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
22879801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
22889801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
228905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
229005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
22919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
229293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
22930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
22940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
22950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params) {
22960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
22970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
22980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
22990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetBufferParameteriv);
23000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
23010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
23020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
23030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
23040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
23050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
23060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
23070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
23080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
23090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
23100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
23110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
23120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
23130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
23140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
23150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
231639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
231739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
23180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
23190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
232005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
232105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetBufferParameteriv(target, pname, params);
232305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
232405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
23269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
23279801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
23289801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
23299801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
233005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
233105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
23329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
233393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
23340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
23350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
23360469dd6d55fa331bfd7de9431da98b6340d82271Siva VelusamyGLenum GLTrace_glGetError(void) {
23370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
23380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
23390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
23400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetError);
23410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
23420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
234305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
234405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLenum retValue = glContext->hooks->gl.glGetError();
234605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
234705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
23490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
23500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
23510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
23520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::ENUM);
23530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_intvalue((int)retValue);
23540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
23559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
23569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
23579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
235805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
235905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
23609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
236193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
23620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
23630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
23640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
23650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
23660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetFloatv(GLenum pname, GLfloat* params) {
23670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
23680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
23690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
23700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetFloatv);
23710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
23720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
23730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
23740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
23750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
23760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
23770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
23780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
23790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
23800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
238139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
238239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
23830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
23840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
238505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
238605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
23870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetFloatv(pname, params);
238805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
238905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
23900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
23919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
23929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
23939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
23949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
239505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
239605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
23979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
239893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
23990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
24000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
24010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params) {
24020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
24030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
24040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
24050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetFramebufferAttachmentParameteriv);
24060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
24070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
24080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
24090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
24100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
24110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
24120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
24130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument attachment
24140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_attachment = glmsg.add_args();
24150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->set_isarray(false);
24160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->set_type(GLMessage::DataType::ENUM);
24170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->add_intvalue((int)attachment);
24180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
24190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
24200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
24210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
24220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
24230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
24240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
24250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
24260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
24270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
242839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
242939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
24300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
24310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
243205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
243305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetFramebufferAttachmentParameteriv(target, attachment, pname, params);
243505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
243605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
24389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
24399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
24409801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
24419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
244205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
244305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
24449801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
244593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
24460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
24470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
24480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetIntegerv(GLenum pname, GLint* params) {
24490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
24500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
24510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
24520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetIntegerv);
24530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
24540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
24550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
24560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
24570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
24580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
24590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
24600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
24610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
24620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
246339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
246439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
24650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
24660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
246705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
246805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
24690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetIntegerv(pname, params);
247005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
247105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
24720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
24739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
24749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
24759801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
24769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
247705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
247805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
24799801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
248093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
24810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
24820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
24830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetProgramiv(GLuint program, GLenum pname, GLint* params) {
24840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
24850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
24860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
24870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetProgramiv);
24880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
24890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument program
24900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_program = glmsg.add_args();
24910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_isarray(false);
24920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_type(GLMessage::DataType::INT);
24930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->add_intvalue(program);
24940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
24950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
24960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
24970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
24980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
24990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
25000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
25010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
25020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
25030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
250439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
250539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
25060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
25070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
250805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
250905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetProgramiv(program, pname, params);
251105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
251205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
25149801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
25159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
25169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
25179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
251805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
251905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
25209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
252193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
25220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
25230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
25240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog) {
25250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
25260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
25270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
25280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetProgramInfoLog);
25290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
25300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument program
25310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_program = glmsg.add_args();
25320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_isarray(false);
25330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_type(GLMessage::DataType::INT);
25340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->add_intvalue(program);
25350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
25360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument bufsize
25370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_bufsize = glmsg.add_args();
25380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufsize->set_isarray(false);
25390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufsize->set_type(GLMessage::DataType::INT);
25400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufsize->add_intvalue(bufsize);
25410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
25420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument length
25430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_length = glmsg.add_args();
25440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_isarray(false);
254539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->set_type(GLMessage::DataType::INT64);
254639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->add_int64value((uintptr_t)length);
25470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
25480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument infolog
25490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_infolog = glmsg.add_args();
25500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_infolog->set_isarray(false);
255139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_infolog->set_type(GLMessage::DataType::INT64);
255239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_infolog->add_int64value((uintptr_t)infolog);
25530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
25540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
255505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
255605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetProgramInfoLog(program, bufsize, length, infolog);
255805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
255905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
25600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
25619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
25629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) length,
25639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) infolog,
25649801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
25659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
256605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
256705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
25689801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
256993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
25700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
25710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
25720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params) {
25730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
25740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
25750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
25760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetRenderbufferParameteriv);
25770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
25780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
25790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
25800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
25810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
25820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
25830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
25840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
25850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
25860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
25870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
25880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
25890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
25900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
25910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
25920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
259339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
259439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
25950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
25960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
259705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
259805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
25990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetRenderbufferParameteriv(target, pname, params);
260005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
260105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
26039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
26049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
26059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
26069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
260705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
260805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
26099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
261093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
26110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
26120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
26130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetShaderiv(GLuint shader, GLenum pname, GLint* params) {
26140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
26150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
26160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
26170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetShaderiv);
26180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
26190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument shader
26200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_shader = glmsg.add_args();
26210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shader->set_isarray(false);
26220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shader->set_type(GLMessage::DataType::INT);
26230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shader->add_intvalue(shader);
26240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
26250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
26260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
26270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
26280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
26290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
26300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
26310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
26320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
26330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
263439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
263539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
26360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
26370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
263805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
263905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetShaderiv(shader, pname, params);
264105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
264205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
26449801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
26459801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
26469801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
26479801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
264805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
264905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
26509801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
265193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
26520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
26530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
26540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog) {
26550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
26560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
26570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
26580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetShaderInfoLog);
26590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
26600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument shader
26610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_shader = glmsg.add_args();
26620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shader->set_isarray(false);
26630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shader->set_type(GLMessage::DataType::INT);
26640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shader->add_intvalue(shader);
26650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
26660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument bufsize
26670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_bufsize = glmsg.add_args();
26680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufsize->set_isarray(false);
26690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufsize->set_type(GLMessage::DataType::INT);
26700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufsize->add_intvalue(bufsize);
26710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
26720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument length
26730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_length = glmsg.add_args();
26740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_isarray(false);
267539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->set_type(GLMessage::DataType::INT64);
267639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->add_int64value((uintptr_t)length);
26770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
26780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument infolog
26790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_infolog = glmsg.add_args();
26800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_infolog->set_isarray(false);
268139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_infolog->set_type(GLMessage::DataType::INT64);
268239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_infolog->add_int64value((uintptr_t)infolog);
26830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
26840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
268505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
268605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
26870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetShaderInfoLog(shader, bufsize, length, infolog);
268805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
268905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
26900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
26919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
26929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) length,
26939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) infolog,
26949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
26959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
269605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
269705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
26989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
269993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
27000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
27010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
27020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision) {
27030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
27040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
27050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
27060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetShaderPrecisionFormat);
27070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
27080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument shadertype
27090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_shadertype = glmsg.add_args();
27100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shadertype->set_isarray(false);
27110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shadertype->set_type(GLMessage::DataType::ENUM);
27120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shadertype->add_intvalue((int)shadertype);
27130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
27140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument precisiontype
27150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_precisiontype = glmsg.add_args();
27160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_precisiontype->set_isarray(false);
27170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_precisiontype->set_type(GLMessage::DataType::ENUM);
27180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_precisiontype->add_intvalue((int)precisiontype);
27190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
27200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument range
27210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_range = glmsg.add_args();
27220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_range->set_isarray(false);
272339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_range->set_type(GLMessage::DataType::INT64);
272439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_range->add_int64value((uintptr_t)range);
27250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
27260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument precision
27270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_precision = glmsg.add_args();
27280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_precision->set_isarray(false);
272939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_precision->set_type(GLMessage::DataType::INT64);
273039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_precision->add_int64value((uintptr_t)precision);
27310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
27320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
273305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
273405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
27350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetShaderPrecisionFormat(shadertype, precisiontype, range, precision);
273605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
273705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
27380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
27399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
27409801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) range,
27419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) precision,
27429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
27439801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
274405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
274505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
27469801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
274793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
27480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
27490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
27500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source) {
27510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
27520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
27530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
27540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetShaderSource);
27550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
27560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument shader
27570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_shader = glmsg.add_args();
27580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shader->set_isarray(false);
27590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shader->set_type(GLMessage::DataType::INT);
27600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shader->add_intvalue(shader);
27610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
27620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument bufsize
27630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_bufsize = glmsg.add_args();
27640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufsize->set_isarray(false);
27650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufsize->set_type(GLMessage::DataType::INT);
27660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufsize->add_intvalue(bufsize);
27670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
27680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument length
27690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_length = glmsg.add_args();
27700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_isarray(false);
277139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->set_type(GLMessage::DataType::INT64);
277239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->add_int64value((uintptr_t)length);
27730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
27740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument source
27750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_source = glmsg.add_args();
27760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_source->set_isarray(false);
277739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_source->set_type(GLMessage::DataType::INT64);
277839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_source->add_int64value((uintptr_t)source);
27790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
27800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
278105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
278205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
27830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetShaderSource(shader, bufsize, length, source);
278405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
278505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
27860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
27879801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
27889801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) length,
27899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) source,
27909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
27919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
279205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
279305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
27949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
279593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
27960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
27970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
27980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyconst GLubyte* GLTrace_glGetString(GLenum name) {
27990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
28000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
28010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
28020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetString);
28030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
28040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument name
28050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_name = glmsg.add_args();
28060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_name->set_isarray(false);
28070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_name->set_type(GLMessage::DataType::ENUM);
28080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_name->add_intvalue((int)name);
28090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
28100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
281105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
281205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
28130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    const GLubyte* retValue = glContext->hooks->gl.glGetString(name);
281405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
281505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
28160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
28170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
28180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
28190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
282039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    rt->set_type(GLMessage::DataType::INT64);
282139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    rt->add_int64value((uintptr_t)retValue);
28220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
28239801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
28249801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) retValue,
28259801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
28269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
282705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
282805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
28299801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
283093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
28310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
28320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
28330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
28340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
28350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params) {
28360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
28370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
28380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
28390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetTexParameterfv);
28400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
28410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
28420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
28430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
28440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
28450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
28460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
28470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
28480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
28490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
28500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
28510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
28520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
28530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
28540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
28550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
285639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
285739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
28580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
28590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
286005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
286105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
28620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetTexParameterfv(target, pname, params);
286305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
286405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
28650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
28669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
28679801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
28689801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
28699801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
287005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
287105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
28729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
287393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
28740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
28750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
28760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetTexParameteriv(GLenum target, GLenum pname, GLint* params) {
28770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
28780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
28790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
28800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetTexParameteriv);
28810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
28820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
28830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
28840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
28850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
28860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
28870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
28880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
28890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
28900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
28910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
28920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
28930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
28940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
28950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
28960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
289739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
289839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
28990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
29000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
290105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
290205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
29030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetTexParameteriv(target, pname, params);
290405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
290505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
29060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
29079801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
29089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
29099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
29109801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
291105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
291205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
29139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
291493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
29150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
29160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
29170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetUniformfv(GLuint program, GLint location, GLfloat* params) {
29180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
29190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
29200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
29210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetUniformfv);
29220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
29230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument program
29240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_program = glmsg.add_args();
29250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_isarray(false);
29260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_type(GLMessage::DataType::INT);
29270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->add_intvalue(program);
29280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
29290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument location
29300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_location = glmsg.add_args();
29310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_isarray(false);
29320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_type(GLMessage::DataType::INT);
29330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->add_intvalue(location);
29340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
29350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
29360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
29370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
293839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
293939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
29400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
29410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
294205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
294305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
29440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetUniformfv(program, location, params);
294505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
294605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
29470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
29489801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
29499801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
29509801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
29519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
295205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
295305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
29549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
295593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
29560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
29570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
29580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetUniformiv(GLuint program, GLint location, GLint* params) {
29590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
29600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
29610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
29620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetUniformiv);
29630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
29640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument program
29650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_program = glmsg.add_args();
29660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_isarray(false);
29670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_type(GLMessage::DataType::INT);
29680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->add_intvalue(program);
29690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
29700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument location
29710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_location = glmsg.add_args();
29720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_isarray(false);
29730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_type(GLMessage::DataType::INT);
29740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->add_intvalue(location);
29750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
29760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
29770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
29780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
297939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
298039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
29810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
29820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
298305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
298405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
29850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetUniformiv(program, location, params);
298605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
298705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
29880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
29899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
29909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
29919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
29929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
299305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
299405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
29959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
299693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
29970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
29980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
2999300ad09822db1013d9f28c4bca3680f865533ab6Andrew HsiehGLint GLTrace_glGetUniformLocation(GLuint program, const GLchar* name) {
30000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
30010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
30020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
30030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetUniformLocation);
30040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
30050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument program
30060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_program = glmsg.add_args();
30070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_isarray(false);
30080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_type(GLMessage::DataType::INT);
30090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->add_intvalue(program);
30100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
30110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument name
30120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_name = glmsg.add_args();
30130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_name->set_isarray(false);
301439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_name->set_type(GLMessage::DataType::INT64);
301539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_name->add_int64value((uintptr_t)name);
30160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
30170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
301805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
301905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
3020300ad09822db1013d9f28c4bca3680f865533ab6Andrew Hsieh    GLint retValue = glContext->hooks->gl.glGetUniformLocation(program, name);
302105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
302205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
30230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
30240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
30250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
30260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
30270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::INT);
30280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_intvalue(retValue);
30290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
30309801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
30319801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) name,
30329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
30339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
303405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
303505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
30369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
303793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
30380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
30390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
30400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
30410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
30420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params) {
30430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
30440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
30450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
30460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetVertexAttribfv);
30470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
30480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument index
30490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_index = glmsg.add_args();
30500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_index->set_isarray(false);
30510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_index->set_type(GLMessage::DataType::INT);
30520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_index->add_intvalue(index);
30530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
30540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
30550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
30560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
30570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
30580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
30590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
30600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
30610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
30620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
306339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
306439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
30650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
30660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
306705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
306805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
30690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetVertexAttribfv(index, pname, params);
307005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
307105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
30720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
30739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
30749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
30759801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
30769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
307705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
307805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
30799801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
308093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
30810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
30820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
30830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetVertexAttribiv(GLuint index, GLenum pname, GLint* params) {
30840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
30850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
30860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
30870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetVertexAttribiv);
30880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
30890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument index
30900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_index = glmsg.add_args();
30910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_index->set_isarray(false);
30920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_index->set_type(GLMessage::DataType::INT);
30930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_index->add_intvalue(index);
30940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
30950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
30960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
30970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
30980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
30990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
31000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
31010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
31020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
31030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
310439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
310539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
31060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
31070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
310805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
310905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
31100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetVertexAttribiv(index, pname, params);
311105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
311205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
31130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
31149801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
31159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
31169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
31179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
311805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
311905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
31209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
312193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
31220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
31230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
31240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid** pointer) {
31250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
31260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
31270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
31280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetVertexAttribPointerv);
31290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
31300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument index
31310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_index = glmsg.add_args();
31320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_index->set_isarray(false);
31330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_index->set_type(GLMessage::DataType::INT);
31340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_index->add_intvalue(index);
31350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
31360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
31370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
31380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
31390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
31400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
31410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
31420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pointer
31430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pointer = glmsg.add_args();
31440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pointer->set_isarray(false);
314539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pointer->set_type(GLMessage::DataType::INT64);
314639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pointer->add_int64value((uintptr_t)pointer);
31470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
31480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
314905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
315005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
31510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetVertexAttribPointerv(index, pname, pointer);
315205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
315305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
31540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
31559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
31569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) pointer,
31579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
31589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
315905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
316005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
31619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
316293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
31630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
31640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
31650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glHint(GLenum target, GLenum mode) {
31660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
31670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
31680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
31690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glHint);
31700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
31710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
31720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
31730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
31740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
31750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
31760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
31770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument mode
31780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_mode = glmsg.add_args();
31790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->set_isarray(false);
31800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->set_type(GLMessage::DataType::ENUM);
31810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->add_intvalue((int)mode);
31820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
31830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
318405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
318505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
31860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glHint(target, mode);
318705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
318805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
31890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
31909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
31919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
31929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
319305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
319405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
31959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
319693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
31970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
31980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
31990469dd6d55fa331bfd7de9431da98b6340d82271Siva VelusamyGLboolean GLTrace_glIsBuffer(GLuint buffer) {
32000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
32010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
32020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
32030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glIsBuffer);
32040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
32050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument buffer
32060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_buffer = glmsg.add_args();
32070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_buffer->set_isarray(false);
32080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_buffer->set_type(GLMessage::DataType::INT);
32090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_buffer->add_intvalue(buffer);
32100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
32110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
321205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
321305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
32140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLboolean retValue = glContext->hooks->gl.glIsBuffer(buffer);
321505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
321605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
32170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
32180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
32190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
32200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
32210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::BOOL);
32220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_boolvalue(retValue);
32230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
32249801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
32259801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
32269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
322705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
322805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
32299801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
323093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
32310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
32320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
32330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
32340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
32350469dd6d55fa331bfd7de9431da98b6340d82271Siva VelusamyGLboolean GLTrace_glIsEnabled(GLenum cap) {
32360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
32370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
32380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
32390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glIsEnabled);
32400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
32410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument cap
32420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_cap = glmsg.add_args();
32430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_cap->set_isarray(false);
32440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_cap->set_type(GLMessage::DataType::ENUM);
32450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_cap->add_intvalue((int)cap);
32460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
32470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
324805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
324905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
32500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLboolean retValue = glContext->hooks->gl.glIsEnabled(cap);
325105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
325205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
32530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
32540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
32550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
32560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
32570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::BOOL);
32580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_boolvalue(retValue);
32590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
32609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
32619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
32629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
326305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
326405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
32659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
326693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
32670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
32680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
32690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
32700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
32710469dd6d55fa331bfd7de9431da98b6340d82271Siva VelusamyGLboolean GLTrace_glIsFramebuffer(GLuint framebuffer) {
32720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
32730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
32740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
32750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glIsFramebuffer);
32760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
32770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument framebuffer
32780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_framebuffer = glmsg.add_args();
32790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffer->set_isarray(false);
32800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffer->set_type(GLMessage::DataType::INT);
32810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffer->add_intvalue(framebuffer);
32820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
32830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
328405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
328505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
32860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLboolean retValue = glContext->hooks->gl.glIsFramebuffer(framebuffer);
328705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
328805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
32890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
32900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
32910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
32920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
32930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::BOOL);
32940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_boolvalue(retValue);
32950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
32969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
32979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
32989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
329905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
330005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
33019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
330293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
33030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
33040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
33050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
33060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
33070469dd6d55fa331bfd7de9431da98b6340d82271Siva VelusamyGLboolean GLTrace_glIsProgram(GLuint program) {
33080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
33090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
33100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
33110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glIsProgram);
33120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
33130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument program
33140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_program = glmsg.add_args();
33150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_isarray(false);
33160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_type(GLMessage::DataType::INT);
33170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->add_intvalue(program);
33180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
33190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
332005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
332105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
33220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLboolean retValue = glContext->hooks->gl.glIsProgram(program);
332305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
332405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
33250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
33260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
33270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
33280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
33290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::BOOL);
33300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_boolvalue(retValue);
33310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
33329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
33339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
33349801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
333505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
333605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
33379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
333893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
33390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
33400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
33410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
33420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
33430469dd6d55fa331bfd7de9431da98b6340d82271Siva VelusamyGLboolean GLTrace_glIsRenderbuffer(GLuint renderbuffer) {
33440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
33450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
33460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
33470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glIsRenderbuffer);
33480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
33490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument renderbuffer
33500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
33510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffer->set_isarray(false);
33520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffer->set_type(GLMessage::DataType::INT);
33530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffer->add_intvalue(renderbuffer);
33540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
33550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
335605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
335705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
33580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLboolean retValue = glContext->hooks->gl.glIsRenderbuffer(renderbuffer);
335905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
336005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
33610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
33620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
33630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
33640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
33650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::BOOL);
33660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_boolvalue(retValue);
33670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
33689801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
33699801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
33709801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
337105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
337205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
33739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
337493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
33750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
33760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
33770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
33780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
33790469dd6d55fa331bfd7de9431da98b6340d82271Siva VelusamyGLboolean GLTrace_glIsShader(GLuint shader) {
33800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
33810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
33820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
33830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glIsShader);
33840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
33850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument shader
33860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_shader = glmsg.add_args();
33870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shader->set_isarray(false);
33880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shader->set_type(GLMessage::DataType::INT);
33890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shader->add_intvalue(shader);
33900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
33910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
339205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
339305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
33940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLboolean retValue = glContext->hooks->gl.glIsShader(shader);
339505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
339605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
33970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
33980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
33990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
34000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
34010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::BOOL);
34020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_boolvalue(retValue);
34030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
34049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
34059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
34069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
340705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
340805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
34099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
341093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
34110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
34120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
34130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
34140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
34150469dd6d55fa331bfd7de9431da98b6340d82271Siva VelusamyGLboolean GLTrace_glIsTexture(GLuint texture) {
34160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
34170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
34180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
34190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glIsTexture);
34200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
34210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument texture
34220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_texture = glmsg.add_args();
34230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->set_isarray(false);
34240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->set_type(GLMessage::DataType::INT);
34250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->add_intvalue(texture);
34260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
34270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
342805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
342905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
34300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLboolean retValue = glContext->hooks->gl.glIsTexture(texture);
343105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
343205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
34330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
34340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
34350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
34360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
34370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::BOOL);
34380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_boolvalue(retValue);
34390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
34409801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
34419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
34429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
344305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
344405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
34459801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
344693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
34470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
34480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
34490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
34500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
34510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLineWidth(GLfloat width) {
34520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
34530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
34540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
34550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLineWidth);
34560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
34570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
34580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
34590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
34600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::FLOAT);
34610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_floatvalue(width);
34620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
34630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
346405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
346505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
34660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLineWidth(width);
346705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
346805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
34690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
34709801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
34719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
34729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
347305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
347405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
34759801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
347693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
34770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
34780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
34790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLinkProgram(GLuint program) {
34800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
34810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
34820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
34830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLinkProgram);
34840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
34850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument program
34860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_program = glmsg.add_args();
34870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_isarray(false);
34880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_type(GLMessage::DataType::INT);
34890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->add_intvalue(program);
34900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
34910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
349205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
349305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
34940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLinkProgram(program);
349505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
349605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
34970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
34989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
34999801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
35009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
350105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
350205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
35039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
350493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
35050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
35060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
35070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glPixelStorei(GLenum pname, GLint param) {
35080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
35090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
35100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
35110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glPixelStorei);
35120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
35130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
35140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
35150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
35160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
35170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
35180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
35190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
35200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
35210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
35220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
35230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
35240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
35250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
352605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
352705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
35280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glPixelStorei(pname, param);
352905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
353005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
35310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
35329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
35339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
35349801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
353505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
353605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
35379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
353893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
35390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
35400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
35410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glPolygonOffset(GLfloat factor, GLfloat units) {
35420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
35430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
35440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
35450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glPolygonOffset);
35460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
35470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument factor
35480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_factor = glmsg.add_args();
35490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_factor->set_isarray(false);
35500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_factor->set_type(GLMessage::DataType::FLOAT);
35510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_factor->add_floatvalue(factor);
35520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
35530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument units
35540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_units = glmsg.add_args();
35550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_units->set_isarray(false);
35560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_units->set_type(GLMessage::DataType::FLOAT);
35570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_units->add_floatvalue(units);
35580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
35590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
356005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
356105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
35620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glPolygonOffset(factor, units);
356305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
356405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
35650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
35669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
35679801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
35689801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
356905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
357005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
35719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
357293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
35730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
35740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
35750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels) {
35760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
35770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
35780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
35790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glReadPixels);
35800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
35810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
35820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
35830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
35840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::INT);
35850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_intvalue(x);
35860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
35870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
35880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
35890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
35900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::INT);
35910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_intvalue(y);
35920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
35930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
35940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
35950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
35960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
35970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
35980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
35990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
36000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
36010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
36020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
36030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
36040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
36050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument format
36060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_format = glmsg.add_args();
36070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->set_isarray(false);
36080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->set_type(GLMessage::DataType::ENUM);
36090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->add_intvalue((int)format);
36100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
36110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument type
36120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_type = glmsg.add_args();
36130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_isarray(false);
36140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_type(GLMessage::DataType::ENUM);
36150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->add_intvalue((int)type);
36160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
36170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pixels
36180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pixels = glmsg.add_args();
36190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pixels->set_isarray(false);
362039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pixels->set_type(GLMessage::DataType::INT64);
362139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pixels->add_int64value((uintptr_t)pixels);
36220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
36230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
362405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
362505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
36260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glReadPixels(x, y, width, height, format, type, pixels);
362705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
362805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
36290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
36309801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
36319801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) pixels,
36329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
36339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
363405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
363505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
36369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
363793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
36380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
36390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
36400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glReleaseShaderCompiler(void) {
36410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
36420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
36430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
36440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glReleaseShaderCompiler);
36450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
36460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
364705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
364805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
36490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glReleaseShaderCompiler();
365005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
365105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
36520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
36539801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
36549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
36559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
365605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
365705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
36589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
365993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
36600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
36610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
36620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) {
36630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
36640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
36650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
36660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glRenderbufferStorage);
36670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
36680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
36690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
36700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
36710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
36720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
36730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
36740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument internalformat
36750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_internalformat = glmsg.add_args();
36760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->set_isarray(false);
36770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->set_type(GLMessage::DataType::ENUM);
36780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->add_intvalue((int)internalformat);
36790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
36800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
36810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
36820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
36830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
36840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
36850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
36860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
36870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
36880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
36890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
36900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
36910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
36920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
369305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
369405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
36950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glRenderbufferStorage(target, internalformat, width, height);
369605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
369705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
36980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
36999801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
37009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
37019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
370205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
370305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
37049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
370593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
37060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
37070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
37084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glSampleCoverage(GLfloat value, GLboolean invert) {
37090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
37100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
37110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
37120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glSampleCoverage);
37130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
37140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument value
37150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_value = glmsg.add_args();
37160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_value->set_isarray(false);
37170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_value->set_type(GLMessage::DataType::FLOAT);
37180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_value->add_floatvalue(value);
37190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
37200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument invert
37210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_invert = glmsg.add_args();
37220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_invert->set_isarray(false);
37230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_invert->set_type(GLMessage::DataType::BOOL);
37240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_invert->add_boolvalue(invert);
37250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
37260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
372705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
372805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
37290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glSampleCoverage(value, invert);
373005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
373105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
37320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
37339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
37349801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
37359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
373605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
373705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
37389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
373993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
37400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
37410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
37420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glScissor(GLint x, GLint y, GLsizei width, GLsizei height) {
37430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
37440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
37450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
37460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glScissor);
37470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
37480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
37490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
37500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
37510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::INT);
37520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_intvalue(x);
37530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
37540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
37550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
37560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
37570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::INT);
37580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_intvalue(y);
37590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
37600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
37610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
37620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
37630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
37640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
37650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
37660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
37670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
37680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
37690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
37700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
37710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
37720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
377305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
377405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
37750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glScissor(x, y, width, height);
377605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
377705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
37780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
37799801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
37809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
37819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
378205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
378305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
37849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
378593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
37860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
37870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
37880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length) {
37890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
37900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
37910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
37920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glShaderBinary);
37930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
37940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument n
37950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_n = glmsg.add_args();
37960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_isarray(false);
37970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_type(GLMessage::DataType::INT);
37980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->add_intvalue(n);
37990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
38000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument shaders
38010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_shaders = glmsg.add_args();
38020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shaders->set_isarray(false);
380339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_shaders->set_type(GLMessage::DataType::INT64);
380439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_shaders->add_int64value((uintptr_t)shaders);
38050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
38060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument binaryformat
38070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_binaryformat = glmsg.add_args();
38080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_binaryformat->set_isarray(false);
38090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_binaryformat->set_type(GLMessage::DataType::ENUM);
38100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_binaryformat->add_intvalue((int)binaryformat);
38110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
38120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument binary
38130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_binary = glmsg.add_args();
38140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_binary->set_isarray(false);
381539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_binary->set_type(GLMessage::DataType::INT64);
381639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_binary->add_int64value((uintptr_t)binary);
38170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
38180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument length
38190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_length = glmsg.add_args();
38200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_isarray(false);
38210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_type(GLMessage::DataType::INT);
38220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->add_intvalue(length);
38230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
38240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
382505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
382605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
38270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glShaderBinary(n, shaders, binaryformat, binary, length);
382805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
382905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
38300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
38319801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
38329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) shaders,
38339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) binary,
38349801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
38359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
383605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
383705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
38389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
383993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
38400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
38410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
3842d58974c6b25fe9fdadb38dc1f1371196b71a0913Jesse Hallvoid GLTrace_glShaderSource(GLuint shader, GLsizei count, const GLchar* const* string, const GLint* length) {
38430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
38440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
38450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
38460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glShaderSource);
38470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
38480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument shader
38490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_shader = glmsg.add_args();
38500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shader->set_isarray(false);
38510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shader->set_type(GLMessage::DataType::INT);
38520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shader->add_intvalue(shader);
38530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
38540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument count
38550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_count = glmsg.add_args();
38560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->set_isarray(false);
38570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->set_type(GLMessage::DataType::INT);
38580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->add_intvalue(count);
38590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
38600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument string
38610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_string = glmsg.add_args();
38620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_string->set_isarray(false);
386339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_string->set_type(GLMessage::DataType::INT64);
386439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_string->add_int64value((uintptr_t)string);
38650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
38660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument length
38670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_length = glmsg.add_args();
38680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_isarray(false);
386939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->set_type(GLMessage::DataType::INT64);
387039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->add_int64value((uintptr_t)length);
38710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
38720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
387305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
387405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
38750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glShaderSource(shader, count, string, length);
387605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
387705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
38780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
38799801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
38809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) string,
38819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) length,
38829801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
38839801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
388405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
388505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
38869801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
388793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
38880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
38890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
38900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glStencilFunc(GLenum func, GLint ref, GLuint mask) {
38910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
38920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
38930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
38940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glStencilFunc);
38950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
38960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument func
38970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_func = glmsg.add_args();
38980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_func->set_isarray(false);
38990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_func->set_type(GLMessage::DataType::ENUM);
39000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_func->add_intvalue((int)func);
39010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
39020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument ref
39030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_ref = glmsg.add_args();
39040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ref->set_isarray(false);
39050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ref->set_type(GLMessage::DataType::INT);
39060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ref->add_intvalue(ref);
39070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
39080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument mask
39090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_mask = glmsg.add_args();
39100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mask->set_isarray(false);
39110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mask->set_type(GLMessage::DataType::INT);
39120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mask->add_intvalue(mask);
39130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
39140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
391505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
391605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
39170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glStencilFunc(func, ref, mask);
391805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
391905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
39200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
39219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
39229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
39239801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
392405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
392505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
39269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
392793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
39280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
39290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
39300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) {
39310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
39320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
39330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
39340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glStencilFuncSeparate);
39350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
39360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument face
39370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_face = glmsg.add_args();
39380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_isarray(false);
39390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_type(GLMessage::DataType::ENUM);
39400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->add_intvalue((int)face);
39410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
39420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument func
39430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_func = glmsg.add_args();
39440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_func->set_isarray(false);
39450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_func->set_type(GLMessage::DataType::ENUM);
39460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_func->add_intvalue((int)func);
39470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
39480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument ref
39490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_ref = glmsg.add_args();
39500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ref->set_isarray(false);
39510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ref->set_type(GLMessage::DataType::INT);
39520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ref->add_intvalue(ref);
39530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
39540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument mask
39550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_mask = glmsg.add_args();
39560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mask->set_isarray(false);
39570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mask->set_type(GLMessage::DataType::INT);
39580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mask->add_intvalue(mask);
39590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
39600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
396105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
396205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
39630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glStencilFuncSeparate(face, func, ref, mask);
396405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
396505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
39660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
39679801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
39689801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
39699801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
397005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
397105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
39729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
397393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
39740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
39750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
39760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glStencilMask(GLuint mask) {
39770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
39780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
39790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
39800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glStencilMask);
39810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
39820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument mask
39830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_mask = glmsg.add_args();
39840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mask->set_isarray(false);
39850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mask->set_type(GLMessage::DataType::INT);
39860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mask->add_intvalue(mask);
39870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
39880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
398905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
399005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
39910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glStencilMask(mask);
399205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
399305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
39940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
39959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
39969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
39979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
399805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
399905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
40009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
400193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
40020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
40030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
40040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glStencilMaskSeparate(GLenum face, GLuint mask) {
40050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
40060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
40070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
40080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glStencilMaskSeparate);
40090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
40100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument face
40110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_face = glmsg.add_args();
40120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_isarray(false);
40130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_type(GLMessage::DataType::ENUM);
40140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->add_intvalue((int)face);
40150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
40160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument mask
40170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_mask = glmsg.add_args();
40180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mask->set_isarray(false);
40190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mask->set_type(GLMessage::DataType::INT);
40200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mask->add_intvalue(mask);
40210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
40220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
402305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
402405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
40250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glStencilMaskSeparate(face, mask);
402605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
402705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
40280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
40299801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
40309801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
40319801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
403205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
403305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
40349801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
403593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
40360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
40370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
40380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) {
40390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
40400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
40410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
40420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glStencilOp);
40430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
40440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument fail
40450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_fail = glmsg.add_args();
40460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fail->set_isarray(false);
40470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fail->set_type(GLMessage::DataType::ENUM);
40480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fail->add_intvalue((int)fail);
40490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
40500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zfail
40510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zfail = glmsg.add_args();
40520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zfail->set_isarray(false);
40530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zfail->set_type(GLMessage::DataType::ENUM);
40540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zfail->add_intvalue((int)zfail);
40550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
40560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zpass
40570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zpass = glmsg.add_args();
40580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zpass->set_isarray(false);
40590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zpass->set_type(GLMessage::DataType::ENUM);
40600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zpass->add_intvalue((int)zpass);
40610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
40620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
406305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
406405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
40650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glStencilOp(fail, zfail, zpass);
406605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
406705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
40680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
40699801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
40709801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
40719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
407205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
407305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
40749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
407593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
40760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
40770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
40780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass) {
40790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
40800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
40810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
40820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glStencilOpSeparate);
40830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
40840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument face
40850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_face = glmsg.add_args();
40860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_isarray(false);
40870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_type(GLMessage::DataType::ENUM);
40880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->add_intvalue((int)face);
40890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
40900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument fail
40910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_fail = glmsg.add_args();
40920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fail->set_isarray(false);
40930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fail->set_type(GLMessage::DataType::ENUM);
40940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fail->add_intvalue((int)fail);
40950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
40960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zfail
40970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zfail = glmsg.add_args();
40980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zfail->set_isarray(false);
40990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zfail->set_type(GLMessage::DataType::ENUM);
41000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zfail->add_intvalue((int)zfail);
41010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
41020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zpass
41030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zpass = glmsg.add_args();
41040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zpass->set_isarray(false);
41050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zpass->set_type(GLMessage::DataType::ENUM);
41060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zpass->add_intvalue((int)zpass);
41070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
41080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
410905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
411005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
41110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glStencilOpSeparate(face, fail, zfail, zpass);
411205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
411305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
41140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
41159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
41169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
41179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
411805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
411905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
41209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
412193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
41220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
41230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
41240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels) {
41250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
41260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
41270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
41280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexImage2D);
41290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
41300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
41310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
41320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
41330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
41340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
41350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
41360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument level
41370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_level = glmsg.add_args();
41380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_isarray(false);
41390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_type(GLMessage::DataType::INT);
41400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->add_intvalue(level);
41410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
41420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument internalformat
41430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_internalformat = glmsg.add_args();
41440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->set_isarray(false);
41450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->set_type(GLMessage::DataType::INT);
41460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->add_intvalue(internalformat);
41470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
41480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
41490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
41500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
41510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
41520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
41530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
41540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
41550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
41560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
41570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
41580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
41590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
41600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument border
41610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_border = glmsg.add_args();
41620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_border->set_isarray(false);
41630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_border->set_type(GLMessage::DataType::INT);
41640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_border->add_intvalue(border);
41650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
41660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument format
41670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_format = glmsg.add_args();
41680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->set_isarray(false);
41690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->set_type(GLMessage::DataType::ENUM);
41700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->add_intvalue((int)format);
41710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
41720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument type
41730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_type = glmsg.add_args();
41740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_isarray(false);
41750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_type(GLMessage::DataType::ENUM);
41760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->add_intvalue((int)type);
41770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
41780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pixels
41790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pixels = glmsg.add_args();
41800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pixels->set_isarray(false);
418139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pixels->set_type(GLMessage::DataType::INT64);
418239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pixels->add_int64value((uintptr_t)pixels);
41830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
41840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
418505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
418605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
41870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels);
418805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
418905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
41900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
41919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
41929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) pixels,
41939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
41949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
419505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
419605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
41979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
419893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
41990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
42000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
42010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexParameterf(GLenum target, GLenum pname, GLfloat param) {
42020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
42030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
42040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
42050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexParameterf);
42060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
42070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
42080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
42090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
42100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
42110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
42120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
42130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
42140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
42150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
42160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
42170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
42180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
42190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
42200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
42210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
42220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::FLOAT);
42230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_floatvalue(param);
42240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
42250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
422605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
422705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
42280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexParameterf(target, pname, param);
422905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
423005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
42310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
42329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
42339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
42349801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
423505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
423605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
42379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
423893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
42390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
42400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
42410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexParameterfv(GLenum target, GLenum pname, const GLfloat* params) {
42420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
42430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
42440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
42450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexParameterfv);
42460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
42470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
42480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
42490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
42500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
42510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
42520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
42530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
42540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
42550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
42560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
42570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
42580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
42590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
42600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
42610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
426239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
426339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
42640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
42650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
426605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
426705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
42680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexParameterfv(target, pname, params);
426905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
427005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
42710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
42729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
42739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
42749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
42759801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
427605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
427705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
42789801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
427993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
42800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
42810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
42820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexParameteri(GLenum target, GLenum pname, GLint param) {
42830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
42840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
42850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
42860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexParameteri);
42870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
42880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
42890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
42900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
42910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
42920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
42930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
42940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
42950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
42960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
42970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
42980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
42990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
43000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
43010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
43020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
43030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
43040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
43050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
43060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
430705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
430805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
43090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexParameteri(target, pname, param);
431005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
431105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
43120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
43139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
43149801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
43159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
431605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
431705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
43189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
431993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
43200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
43210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
43220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexParameteriv(GLenum target, GLenum pname, const GLint* params) {
43230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
43240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
43250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
43260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexParameteriv);
43270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
43280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
43290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
43300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
43310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
43320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
43330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
43340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
43350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
43360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
43370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
43380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
43390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
43400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
43410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
43420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
434339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
434439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
43450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
43460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
434705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
434805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
43490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexParameteriv(target, pname, params);
435005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
435105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
43520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
43539801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
43549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
43559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
43569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
435705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
435805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
43599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
436093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
43610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
43620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
43630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels) {
43640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
43650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
43660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
43670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexSubImage2D);
43680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
43690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
43700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
43710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
43720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
43730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
43740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
43750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument level
43760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_level = glmsg.add_args();
43770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_isarray(false);
43780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_type(GLMessage::DataType::INT);
43790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->add_intvalue(level);
43800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
43810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument xoffset
43820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_xoffset = glmsg.add_args();
43830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->set_isarray(false);
43840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->set_type(GLMessage::DataType::INT);
43850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->add_intvalue(xoffset);
43860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
43870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument yoffset
43880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_yoffset = glmsg.add_args();
43890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->set_isarray(false);
43900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->set_type(GLMessage::DataType::INT);
43910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->add_intvalue(yoffset);
43920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
43930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
43940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
43950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
43960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
43970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
43980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
43990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
44000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
44010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
44020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
44030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
44040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
44050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument format
44060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_format = glmsg.add_args();
44070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->set_isarray(false);
44080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->set_type(GLMessage::DataType::ENUM);
44090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->add_intvalue((int)format);
44100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
44110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument type
44120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_type = glmsg.add_args();
44130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_isarray(false);
44140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_type(GLMessage::DataType::ENUM);
44150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->add_intvalue((int)type);
44160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
44170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pixels
44180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pixels = glmsg.add_args();
44190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pixels->set_isarray(false);
442039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pixels->set_type(GLMessage::DataType::INT64);
442139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pixels->add_int64value((uintptr_t)pixels);
44220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
44230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
442405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
442505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
44260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
442705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
442805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
44290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
44309801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
44319801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) pixels,
44329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
44339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
443405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
443505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
44369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
443793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
44380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
44390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
44400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glUniform1f(GLint location, GLfloat x) {
44410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
44420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
44430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
44440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glUniform1f);
44450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
44460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument location
44470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_location = glmsg.add_args();
44480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_isarray(false);
44490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_type(GLMessage::DataType::INT);
44500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->add_intvalue(location);
44510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
44520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
44530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
44540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
44550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::FLOAT);
44560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_floatvalue(x);
44570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
44580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
445905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
446005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
44610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glUniform1f(location, x);
446205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
446305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
44640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
44659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
44669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
44679801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
446805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
446905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
44709801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
447193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
44720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
44730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
44740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glUniform1fv(GLint location, GLsizei count, const GLfloat* v) {
44750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
44760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
44770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
44780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glUniform1fv);
44790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
44800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument location
44810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_location = glmsg.add_args();
44820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_isarray(false);
44830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_type(GLMessage::DataType::INT);
44840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->add_intvalue(location);
44850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
44860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument count
44870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_count = glmsg.add_args();
44880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->set_isarray(false);
44890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->set_type(GLMessage::DataType::INT);
44900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->add_intvalue(count);
44910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
44920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument v
44930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_v = glmsg.add_args();
44940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_v->set_isarray(false);
449539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_v->set_type(GLMessage::DataType::INT64);
449639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_v->add_int64value((uintptr_t)v);
44970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
44980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
449905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
450005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
45010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glUniform1fv(location, count, v);
450205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
450305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
45040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
45059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
45069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) v,
45079801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
45089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
450905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
451005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
45119801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
451293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
45130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
45140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
45150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glUniform1i(GLint location, GLint x) {
45160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
45170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
45180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
45190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glUniform1i);
45200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
45210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument location
45220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_location = glmsg.add_args();
45230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_isarray(false);
45240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_type(GLMessage::DataType::INT);
45250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->add_intvalue(location);
45260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
45270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
45280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
45290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
45300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::INT);
45310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_intvalue(x);
45320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
45330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
453405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
453505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
45360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glUniform1i(location, x);
453705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
453805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
45390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
45409801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
45419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
45429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
454305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
454405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
45459801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
454693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
45470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
45480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
45490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glUniform1iv(GLint location, GLsizei count, const GLint* v) {
45500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
45510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
45520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
45530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glUniform1iv);
45540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
45550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument location
45560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_location = glmsg.add_args();
45570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_isarray(false);
45580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_type(GLMessage::DataType::INT);
45590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->add_intvalue(location);
45600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
45610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument count
45620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_count = glmsg.add_args();
45630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->set_isarray(false);
45640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->set_type(GLMessage::DataType::INT);
45650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->add_intvalue(count);
45660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
45670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument v
45680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_v = glmsg.add_args();
45690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_v->set_isarray(false);
457039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_v->set_type(GLMessage::DataType::INT64);
457139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_v->add_int64value((uintptr_t)v);
45720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
45730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
457405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
457505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
45760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glUniform1iv(location, count, v);
457705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
457805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
45790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
45809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
45819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) v,
45829801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
45839801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
458405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
458505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
45869801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
458793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
45880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
45890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
45900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glUniform2f(GLint location, GLfloat x, GLfloat y) {
45910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
45920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
45930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
45940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glUniform2f);
45950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
45960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument location
45970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_location = glmsg.add_args();
45980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_isarray(false);
45990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_type(GLMessage::DataType::INT);
46000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->add_intvalue(location);
46010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
46020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
46030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
46040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
46050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::FLOAT);
46060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_floatvalue(x);
46070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
46080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
46090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
46100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
46110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::FLOAT);
46120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_floatvalue(y);
46130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
46140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
461505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
461605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
46170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glUniform2f(location, x, y);
461805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
461905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
46200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
46219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
46229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
46239801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
462405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
462505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
46269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
462793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
46280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
46290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
46300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glUniform2fv(GLint location, GLsizei count, const GLfloat* v) {
46310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
46320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
46330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
46340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glUniform2fv);
46350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
46360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument location
46370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_location = glmsg.add_args();
46380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_isarray(false);
46390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_type(GLMessage::DataType::INT);
46400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->add_intvalue(location);
46410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
46420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument count
46430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_count = glmsg.add_args();
46440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->set_isarray(false);
46450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->set_type(GLMessage::DataType::INT);
46460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->add_intvalue(count);
46470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
46480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument v
46490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_v = glmsg.add_args();
46500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_v->set_isarray(false);
465139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_v->set_type(GLMessage::DataType::INT64);
465239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_v->add_int64value((uintptr_t)v);
46530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
46540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
465505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
465605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
46570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glUniform2fv(location, count, v);
465805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
465905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
46600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
46619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
46629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) v,
46639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
46649801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
466505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
466605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
46679801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
466893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
46690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
46700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
46710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glUniform2i(GLint location, GLint x, GLint y) {
46720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
46730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
46740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
46750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glUniform2i);
46760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
46770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument location
46780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_location = glmsg.add_args();
46790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_isarray(false);
46800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_type(GLMessage::DataType::INT);
46810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->add_intvalue(location);
46820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
46830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
46840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
46850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
46860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::INT);
46870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_intvalue(x);
46880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
46890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
46900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
46910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
46920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::INT);
46930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_intvalue(y);
46940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
46950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
469605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
469705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
46980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glUniform2i(location, x, y);
469905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
470005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
47010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
47029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
47039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
47049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
470505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
470605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
47079801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
470893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
47090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
47100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
47110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glUniform2iv(GLint location, GLsizei count, const GLint* v) {
47120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
47130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
47140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
47150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glUniform2iv);
47160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
47170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument location
47180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_location = glmsg.add_args();
47190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_isarray(false);
47200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_type(GLMessage::DataType::INT);
47210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->add_intvalue(location);
47220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
47230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument count
47240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_count = glmsg.add_args();
47250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->set_isarray(false);
47260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->set_type(GLMessage::DataType::INT);
47270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->add_intvalue(count);
47280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
47290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument v
47300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_v = glmsg.add_args();
47310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_v->set_isarray(false);
473239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_v->set_type(GLMessage::DataType::INT64);
473339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_v->add_int64value((uintptr_t)v);
47340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
47350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
473605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
473705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
47380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glUniform2iv(location, count, v);
473905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
474005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
47410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
47429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
47439801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) v,
47449801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
47459801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
474605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
474705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
47489801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
474993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
47500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
47510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
47520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glUniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z) {
47530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
47540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
47550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
47560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glUniform3f);
47570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
47580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument location
47590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_location = glmsg.add_args();
47600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_isarray(false);
47610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_type(GLMessage::DataType::INT);
47620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->add_intvalue(location);
47630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
47640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
47650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
47660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
47670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::FLOAT);
47680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_floatvalue(x);
47690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
47700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
47710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
47720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
47730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::FLOAT);
47740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_floatvalue(y);
47750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
47760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
47770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
47780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
47790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::FLOAT);
47800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_floatvalue(z);
47810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
47820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
478305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
478405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
47850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glUniform3f(location, x, y, z);
478605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
478705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
47880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
47899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
47909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
47919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
479205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
479305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
47949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
479593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
47960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
47970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
47980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glUniform3fv(GLint location, GLsizei count, const GLfloat* v) {
47990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
48000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
48010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
48020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glUniform3fv);
48030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
48040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument location
48050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_location = glmsg.add_args();
48060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_isarray(false);
48070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_type(GLMessage::DataType::INT);
48080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->add_intvalue(location);
48090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
48100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument count
48110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_count = glmsg.add_args();
48120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->set_isarray(false);
48130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->set_type(GLMessage::DataType::INT);
48140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->add_intvalue(count);
48150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
48160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument v
48170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_v = glmsg.add_args();
48180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_v->set_isarray(false);
481939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_v->set_type(GLMessage::DataType::INT64);
482039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_v->add_int64value((uintptr_t)v);
48210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
48220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
482305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
482405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
48250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glUniform3fv(location, count, v);
482605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
482705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
48280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
48299801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
48309801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) v,
48319801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
48329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
483305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
483405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
48359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
483693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
48370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
48380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
48390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glUniform3i(GLint location, GLint x, GLint y, GLint z) {
48400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
48410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
48420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
48430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glUniform3i);
48440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
48450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument location
48460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_location = glmsg.add_args();
48470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_isarray(false);
48480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_type(GLMessage::DataType::INT);
48490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->add_intvalue(location);
48500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
48510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
48520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
48530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
48540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::INT);
48550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_intvalue(x);
48560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
48570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
48580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
48590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
48600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::INT);
48610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_intvalue(y);
48620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
48630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
48640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
48650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
48660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::INT);
48670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_intvalue(z);
48680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
48690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
487005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
487105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
48720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glUniform3i(location, x, y, z);
487305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
487405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
48750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
48769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
48779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
48789801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
487905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
488005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
48819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
488293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
48830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
48840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
48850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glUniform3iv(GLint location, GLsizei count, const GLint* v) {
48860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
48870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
48880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
48890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glUniform3iv);
48900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
48910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument location
48920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_location = glmsg.add_args();
48930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_isarray(false);
48940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_type(GLMessage::DataType::INT);
48950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->add_intvalue(location);
48960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
48970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument count
48980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_count = glmsg.add_args();
48990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->set_isarray(false);
49000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->set_type(GLMessage::DataType::INT);
49010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->add_intvalue(count);
49020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
49030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument v
49040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_v = glmsg.add_args();
49050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_v->set_isarray(false);
490639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_v->set_type(GLMessage::DataType::INT64);
490739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_v->add_int64value((uintptr_t)v);
49080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
49090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
491005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
491105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
49120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glUniform3iv(location, count, v);
491305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
491405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
49150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
49169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
49179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) v,
49189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
49199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
492005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
492105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
49229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
492393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
49240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
49250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
49260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glUniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w) {
49270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
49280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
49290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
49300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glUniform4f);
49310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
49320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument location
49330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_location = glmsg.add_args();
49340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_isarray(false);
49350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_type(GLMessage::DataType::INT);
49360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->add_intvalue(location);
49370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
49380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
49390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
49400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
49410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::FLOAT);
49420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_floatvalue(x);
49430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
49440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
49450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
49460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
49470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::FLOAT);
49480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_floatvalue(y);
49490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
49500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
49510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
49520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
49530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::FLOAT);
49540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_floatvalue(z);
49550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
49560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument w
49570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_w = glmsg.add_args();
49580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_w->set_isarray(false);
49590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_w->set_type(GLMessage::DataType::FLOAT);
49600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_w->add_floatvalue(w);
49610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
49620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
496305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
496405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
49650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glUniform4f(location, x, y, z, w);
496605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
496705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
49680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
49699801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
49709801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
49719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
497205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
497305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
49749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
497593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
49760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
49770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
49780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glUniform4fv(GLint location, GLsizei count, const GLfloat* v) {
49790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
49800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
49810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
49820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glUniform4fv);
49830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
49840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument location
49850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_location = glmsg.add_args();
49860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_isarray(false);
49870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_type(GLMessage::DataType::INT);
49880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->add_intvalue(location);
49890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
49900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument count
49910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_count = glmsg.add_args();
49920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->set_isarray(false);
49930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->set_type(GLMessage::DataType::INT);
49940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->add_intvalue(count);
49950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
49960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument v
49970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_v = glmsg.add_args();
49980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_v->set_isarray(false);
499939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_v->set_type(GLMessage::DataType::INT64);
500039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_v->add_int64value((uintptr_t)v);
50010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
50020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
500305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
500405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
50050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glUniform4fv(location, count, v);
500605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
500705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
50080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
50099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
50109801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) v,
50119801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
50129801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
501305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
501405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
50159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
501693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
50170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
50180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
50190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glUniform4i(GLint location, GLint x, GLint y, GLint z, GLint w) {
50200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
50210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
50220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
50230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glUniform4i);
50240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
50250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument location
50260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_location = glmsg.add_args();
50270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_isarray(false);
50280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_type(GLMessage::DataType::INT);
50290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->add_intvalue(location);
50300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
50310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
50320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
50330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
50340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::INT);
50350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_intvalue(x);
50360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
50370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
50380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
50390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
50400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::INT);
50410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_intvalue(y);
50420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
50430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
50440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
50450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
50460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::INT);
50470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_intvalue(z);
50480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
50490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument w
50500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_w = glmsg.add_args();
50510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_w->set_isarray(false);
50520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_w->set_type(GLMessage::DataType::INT);
50530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_w->add_intvalue(w);
50540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
50550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
505605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
505705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
50580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glUniform4i(location, x, y, z, w);
505905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
506005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
50610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
50629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
50639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
50649801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
506505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
506605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
50679801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
506893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
50690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
50700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
50710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glUniform4iv(GLint location, GLsizei count, const GLint* v) {
50720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
50730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
50740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
50750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glUniform4iv);
50760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
50770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument location
50780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_location = glmsg.add_args();
50790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_isarray(false);
50800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_type(GLMessage::DataType::INT);
50810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->add_intvalue(location);
50820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
50830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument count
50840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_count = glmsg.add_args();
50850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->set_isarray(false);
50860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->set_type(GLMessage::DataType::INT);
50870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->add_intvalue(count);
50880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
50890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument v
50900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_v = glmsg.add_args();
50910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_v->set_isarray(false);
509239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_v->set_type(GLMessage::DataType::INT64);
509339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_v->add_int64value((uintptr_t)v);
50940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
50950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
509605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
509705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
50980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glUniform4iv(location, count, v);
509905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
510005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
51010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
51029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
51039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) v,
51049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
51059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
510605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
510705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
51089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
510993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
51100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
51110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
51120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) {
51130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
51140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
51150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
51160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glUniformMatrix2fv);
51170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
51180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument location
51190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_location = glmsg.add_args();
51200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_isarray(false);
51210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_type(GLMessage::DataType::INT);
51220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->add_intvalue(location);
51230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
51240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument count
51250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_count = glmsg.add_args();
51260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->set_isarray(false);
51270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->set_type(GLMessage::DataType::INT);
51280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->add_intvalue(count);
51290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
51300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument transpose
51310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_transpose = glmsg.add_args();
51320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_transpose->set_isarray(false);
51330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_transpose->set_type(GLMessage::DataType::BOOL);
51340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_transpose->add_boolvalue(transpose);
51350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
51360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument value
51370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_value = glmsg.add_args();
51380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_value->set_isarray(false);
513939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT64);
514039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->add_int64value((uintptr_t)value);
51410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
51420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
514305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
514405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
51450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glUniformMatrix2fv(location, count, transpose, value);
514605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
514705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
51480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
51499801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
51509801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) value,
51519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
51529801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
515305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
515405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
51559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
515693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
51570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
51580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
51590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) {
51600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
51610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
51620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
51630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glUniformMatrix3fv);
51640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
51650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument location
51660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_location = glmsg.add_args();
51670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_isarray(false);
51680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_type(GLMessage::DataType::INT);
51690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->add_intvalue(location);
51700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
51710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument count
51720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_count = glmsg.add_args();
51730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->set_isarray(false);
51740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->set_type(GLMessage::DataType::INT);
51750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->add_intvalue(count);
51760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
51770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument transpose
51780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_transpose = glmsg.add_args();
51790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_transpose->set_isarray(false);
51800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_transpose->set_type(GLMessage::DataType::BOOL);
51810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_transpose->add_boolvalue(transpose);
51820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
51830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument value
51840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_value = glmsg.add_args();
51850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_value->set_isarray(false);
518639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT64);
518739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->add_int64value((uintptr_t)value);
51880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
51890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
519005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
519105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
51920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glUniformMatrix3fv(location, count, transpose, value);
519305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
519405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
51950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
51969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
51979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) value,
51989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
51999801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
520005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
520105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
52029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
520393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
52040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
52050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
52060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) {
52070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
52080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
52090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
52100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glUniformMatrix4fv);
52110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
52120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument location
52130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_location = glmsg.add_args();
52140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_isarray(false);
52150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->set_type(GLMessage::DataType::INT);
52160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_location->add_intvalue(location);
52170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
52180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument count
52190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_count = glmsg.add_args();
52200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->set_isarray(false);
52210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->set_type(GLMessage::DataType::INT);
52220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->add_intvalue(count);
52230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
52240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument transpose
52250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_transpose = glmsg.add_args();
52260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_transpose->set_isarray(false);
52270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_transpose->set_type(GLMessage::DataType::BOOL);
52280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_transpose->add_boolvalue(transpose);
52290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
52300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument value
52310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_value = glmsg.add_args();
52320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_value->set_isarray(false);
523339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT64);
523439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->add_int64value((uintptr_t)value);
52350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
52360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
523705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
523805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
52390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glUniformMatrix4fv(location, count, transpose, value);
524005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
524105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
52420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
52439801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
52449801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) value,
52459801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
52469801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
524705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
524805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
52499801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
525093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
52510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
52520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
52530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glUseProgram(GLuint program) {
52540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
52550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
52560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
52570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glUseProgram);
52580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
52590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument program
52600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_program = glmsg.add_args();
52610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_isarray(false);
52620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_type(GLMessage::DataType::INT);
52630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->add_intvalue(program);
52640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
52650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
526605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
526705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
52680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glUseProgram(program);
526905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
527005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
52710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
52729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
52739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
52749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
527505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
527605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
52779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
527893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
52790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
52800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
52810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glValidateProgram(GLuint program) {
52820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
52830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
52840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
52850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glValidateProgram);
52860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
52870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument program
52880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_program = glmsg.add_args();
52890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_isarray(false);
52900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_type(GLMessage::DataType::INT);
52910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->add_intvalue(program);
52920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
52930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
529405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
529505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
52960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glValidateProgram(program);
529705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
529805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
52990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
53009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
53019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
53029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
530305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
530405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
53059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
530693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
53070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
53080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
53090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glVertexAttrib1f(GLuint indx, GLfloat x) {
53100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
53110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
53120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
53130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glVertexAttrib1f);
53140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
53150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument indx
53160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_indx = glmsg.add_args();
53170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_indx->set_isarray(false);
53180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_indx->set_type(GLMessage::DataType::INT);
53190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_indx->add_intvalue(indx);
53200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
53210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
53220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
53230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
53240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::FLOAT);
53250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_floatvalue(x);
53260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
53270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
532805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
532905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
53300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glVertexAttrib1f(indx, x);
533105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
533205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
53330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
53349801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
53359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
53369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
533705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
533805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
53399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
534093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
53410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
53420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
53430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glVertexAttrib1fv(GLuint indx, const GLfloat* values) {
53440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
53450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
53460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
53470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glVertexAttrib1fv);
53480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
53490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument indx
53500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_indx = glmsg.add_args();
53510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_indx->set_isarray(false);
53520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_indx->set_type(GLMessage::DataType::INT);
53530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_indx->add_intvalue(indx);
53540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
53550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument values
53560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_values = glmsg.add_args();
53570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_values->set_isarray(false);
535839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_values->set_type(GLMessage::DataType::INT64);
535939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_values->add_int64value((uintptr_t)values);
53600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
53610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
536205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
536305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
53640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glVertexAttrib1fv(indx, values);
536505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
536605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
53670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
53689801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
53699801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) values,
53709801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
53719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
537205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
537305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
53749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
537593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
53760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
53770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
53780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glVertexAttrib2f(GLuint indx, GLfloat x, GLfloat y) {
53790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
53800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
53810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
53820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glVertexAttrib2f);
53830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
53840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument indx
53850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_indx = glmsg.add_args();
53860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_indx->set_isarray(false);
53870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_indx->set_type(GLMessage::DataType::INT);
53880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_indx->add_intvalue(indx);
53890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
53900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
53910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
53920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
53930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::FLOAT);
53940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_floatvalue(x);
53950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
53960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
53970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
53980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
53990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::FLOAT);
54000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_floatvalue(y);
54010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
54020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
540305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
540405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
54050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glVertexAttrib2f(indx, x, y);
540605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
540705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
54080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
54099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
54109801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
54119801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
541205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
541305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
54149801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
541593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
54160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
54170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
54180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glVertexAttrib2fv(GLuint indx, const GLfloat* values) {
54190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
54200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
54210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
54220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glVertexAttrib2fv);
54230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
54240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument indx
54250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_indx = glmsg.add_args();
54260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_indx->set_isarray(false);
54270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_indx->set_type(GLMessage::DataType::INT);
54280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_indx->add_intvalue(indx);
54290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
54300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument values
54310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_values = glmsg.add_args();
54320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_values->set_isarray(false);
543339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_values->set_type(GLMessage::DataType::INT64);
543439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_values->add_int64value((uintptr_t)values);
54350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
54360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
543705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
543805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
54390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glVertexAttrib2fv(indx, values);
544005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
544105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
54420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
54439801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
54449801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) values,
54459801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
54469801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
544705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
544805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
54499801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
545093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
54510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
54520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
54530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glVertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z) {
54540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
54550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
54560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
54570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glVertexAttrib3f);
54580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
54590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument indx
54600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_indx = glmsg.add_args();
54610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_indx->set_isarray(false);
54620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_indx->set_type(GLMessage::DataType::INT);
54630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_indx->add_intvalue(indx);
54640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
54650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
54660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
54670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
54680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::FLOAT);
54690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_floatvalue(x);
54700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
54710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
54720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
54730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
54740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::FLOAT);
54750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_floatvalue(y);
54760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
54770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
54780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
54790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
54800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::FLOAT);
54810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_floatvalue(z);
54820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
54830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
548405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
548505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
54860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glVertexAttrib3f(indx, x, y, z);
548705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
548805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
54890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
54909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
54919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
54929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
549305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
549405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
54959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
549693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
54970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
54980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
54990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glVertexAttrib3fv(GLuint indx, const GLfloat* values) {
55000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
55010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
55020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
55030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glVertexAttrib3fv);
55040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
55050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument indx
55060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_indx = glmsg.add_args();
55070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_indx->set_isarray(false);
55080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_indx->set_type(GLMessage::DataType::INT);
55090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_indx->add_intvalue(indx);
55100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
55110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument values
55120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_values = glmsg.add_args();
55130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_values->set_isarray(false);
551439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_values->set_type(GLMessage::DataType::INT64);
551539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_values->add_int64value((uintptr_t)values);
55160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
55170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
551805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
551905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
55200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glVertexAttrib3fv(indx, values);
552105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
552205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
55230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
55249801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
55259801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) values,
55269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
55279801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
552805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
552905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
55309801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
553193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
55320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
55330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
55340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glVertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w) {
55350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
55360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
55370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
55380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glVertexAttrib4f);
55390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
55400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument indx
55410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_indx = glmsg.add_args();
55420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_indx->set_isarray(false);
55430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_indx->set_type(GLMessage::DataType::INT);
55440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_indx->add_intvalue(indx);
55450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
55460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
55470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
55480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
55490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::FLOAT);
55500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_floatvalue(x);
55510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
55520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
55530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
55540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
55550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::FLOAT);
55560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_floatvalue(y);
55570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
55580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
55590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
55600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
55610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::FLOAT);
55620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_floatvalue(z);
55630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
55640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument w
55650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_w = glmsg.add_args();
55660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_w->set_isarray(false);
55670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_w->set_type(GLMessage::DataType::FLOAT);
55680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_w->add_floatvalue(w);
55690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
55700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
557105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
557205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
55730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glVertexAttrib4f(indx, x, y, z, w);
557405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
557505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
55760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
55779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
55789801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
55799801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
558005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
558105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
55829801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
558393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
55840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
55850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
55860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glVertexAttrib4fv(GLuint indx, const GLfloat* values) {
55870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
55880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
55890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
55900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glVertexAttrib4fv);
55910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
55920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument indx
55930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_indx = glmsg.add_args();
55940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_indx->set_isarray(false);
55950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_indx->set_type(GLMessage::DataType::INT);
55960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_indx->add_intvalue(indx);
55970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
55980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument values
55990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_values = glmsg.add_args();
56000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_values->set_isarray(false);
560139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_values->set_type(GLMessage::DataType::INT64);
560239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_values->add_int64value((uintptr_t)values);
56030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
56040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
560505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
560605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
56070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glVertexAttrib4fv(indx, values);
560805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
560905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
56100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
56119801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
56129801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) values,
56139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
56149801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
561505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
561605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
56179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
561893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
56190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
56200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
56210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glVertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr) {
56220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
56230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
56240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
56250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glVertexAttribPointer);
56260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
56270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument indx
56280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_indx = glmsg.add_args();
56290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_indx->set_isarray(false);
56300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_indx->set_type(GLMessage::DataType::INT);
56310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_indx->add_intvalue(indx);
56320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
56330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument size
56340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_size = glmsg.add_args();
56350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_isarray(false);
56360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_type(GLMessage::DataType::INT);
56370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->add_intvalue(size);
56380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
56390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument type
56400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_type = glmsg.add_args();
56410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_isarray(false);
56420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_type(GLMessage::DataType::ENUM);
56430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->add_intvalue((int)type);
56440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
56450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument normalized
56460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_normalized = glmsg.add_args();
56470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_normalized->set_isarray(false);
56480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_normalized->set_type(GLMessage::DataType::BOOL);
56490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_normalized->add_boolvalue(normalized);
56500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
56510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument stride
56520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_stride = glmsg.add_args();
56530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->set_isarray(false);
56540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->set_type(GLMessage::DataType::INT);
56550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->add_intvalue(stride);
56560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
56570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument ptr
56580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_ptr = glmsg.add_args();
56590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ptr->set_isarray(false);
566039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_ptr->set_type(GLMessage::DataType::INT64);
566139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_ptr->add_int64value((uintptr_t)ptr);
56620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
56630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
566405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
566505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
56660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glVertexAttribPointer(indx, size, type, normalized, stride, ptr);
566705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
566805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
56690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
56709801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
56719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) ptr,
56729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
56739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
567405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
567505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
56769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
567793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
56780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
56790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
56800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glViewport(GLint x, GLint y, GLsizei width, GLsizei height) {
56810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
56820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
56830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
56840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glViewport);
56850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
56860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
56870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
56880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
56890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::INT);
56900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_intvalue(x);
56910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
56920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
56930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
56940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
56950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::INT);
56960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_intvalue(y);
56970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
56980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
56990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
57000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
57010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
57020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
57030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
57040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
57050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
57060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
57070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
57080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
57090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
57100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
571105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
571205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
57130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glViewport(x, y, width, height);
571405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
571505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
57160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
57179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
57189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
57199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
572005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
572105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
57229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
572393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
57240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
57250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
57264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glReadBuffer(GLenum mode) {
57274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
57284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
57294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
57304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glReadBuffer);
57314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
57324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument mode
57334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_mode = glmsg.add_args();
57344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_mode->set_isarray(false);
57354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_mode->set_type(GLMessage::DataType::ENUM);
57364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_mode->add_intvalue((int)mode);
57374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
57384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
57394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
57404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
57414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glReadBuffer(mode);
57424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
57434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
57444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
57454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
57464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
57474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
57484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
57494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
57504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
57514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
57524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
57534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
57544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid* indices) {
57554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
57564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
57574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
57584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glDrawRangeElements);
57594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
57604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument mode
57614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_mode = glmsg.add_args();
57624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_mode->set_isarray(false);
57634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_mode->set_type(GLMessage::DataType::ENUM);
57644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_mode->add_intvalue((int)mode);
57654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
57664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument start
57674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_start = glmsg.add_args();
57684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_start->set_isarray(false);
57694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_start->set_type(GLMessage::DataType::INT);
57704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_start->add_intvalue(start);
57714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
57724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument end
57734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_end = glmsg.add_args();
57744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_end->set_isarray(false);
57754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_end->set_type(GLMessage::DataType::INT);
57764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_end->add_intvalue(end);
57774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
57784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument count
57794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_count = glmsg.add_args();
57804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_isarray(false);
57814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_type(GLMessage::DataType::INT);
57824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->add_intvalue(count);
57834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
57844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument type
57854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_type = glmsg.add_args();
57864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_type->set_isarray(false);
57874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_type->set_type(GLMessage::DataType::ENUM);
57884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_type->add_intvalue((int)type);
57894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
57904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument indices
57914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_indices = glmsg.add_args();
57924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_indices->set_isarray(false);
579339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_indices->set_type(GLMessage::DataType::INT64);
579439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_indices->add_int64value((uintptr_t)indices);
57954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
57964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
57974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
57984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
57994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glDrawRangeElements(mode, start, end, count, type, indices);
58004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
58014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
58024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
58034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
58044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) indices,
58054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
58064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
58074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
58084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
58094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
58104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
58114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
58124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
58134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels) {
58144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
58154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
58164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
58174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glTexImage3D);
58184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
58194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument target
58204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_target = glmsg.add_args();
58214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_isarray(false);
58224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_type(GLMessage::DataType::ENUM);
58234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->add_intvalue((int)target);
58244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
58254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument level
58264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_level = glmsg.add_args();
58274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_level->set_isarray(false);
58284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_level->set_type(GLMessage::DataType::INT);
58294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_level->add_intvalue(level);
58304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
58314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument internalformat
58324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_internalformat = glmsg.add_args();
58334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_internalformat->set_isarray(false);
58344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_internalformat->set_type(GLMessage::DataType::INT);
58354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_internalformat->add_intvalue(internalformat);
58364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
58374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument width
58384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_width = glmsg.add_args();
58394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_width->set_isarray(false);
58404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_width->set_type(GLMessage::DataType::INT);
58414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_width->add_intvalue(width);
58424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
58434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument height
58444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_height = glmsg.add_args();
58454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_height->set_isarray(false);
58464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_height->set_type(GLMessage::DataType::INT);
58474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_height->add_intvalue(height);
58484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
58494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument depth
58504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_depth = glmsg.add_args();
58514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_depth->set_isarray(false);
58524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_depth->set_type(GLMessage::DataType::INT);
58534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_depth->add_intvalue(depth);
58544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
58554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument border
58564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_border = glmsg.add_args();
58574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_border->set_isarray(false);
58584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_border->set_type(GLMessage::DataType::INT);
58594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_border->add_intvalue(border);
58604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
58614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument format
58624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_format = glmsg.add_args();
58634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_format->set_isarray(false);
58644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_format->set_type(GLMessage::DataType::ENUM);
58654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_format->add_intvalue((int)format);
58664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
58674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument type
58684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_type = glmsg.add_args();
58694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_type->set_isarray(false);
58704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_type->set_type(GLMessage::DataType::ENUM);
58714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_type->add_intvalue((int)type);
58724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
58734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument pixels
58744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_pixels = glmsg.add_args();
58754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pixels->set_isarray(false);
587639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pixels->set_type(GLMessage::DataType::INT64);
587739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pixels->add_int64value((uintptr_t)pixels);
58784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
58794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
58804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
58814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
58824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels);
58834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
58844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
58854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
58864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
58874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) pixels,
58884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
58894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
58904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
58914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
58924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
58934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
58944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
58954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
58964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels) {
58974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
58984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
58994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
59004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glTexSubImage3D);
59014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
59024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument target
59034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_target = glmsg.add_args();
59044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_isarray(false);
59054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_type(GLMessage::DataType::ENUM);
59064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->add_intvalue((int)target);
59074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
59084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument level
59094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_level = glmsg.add_args();
59104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_level->set_isarray(false);
59114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_level->set_type(GLMessage::DataType::INT);
59124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_level->add_intvalue(level);
59134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
59144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument xoffset
59154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_xoffset = glmsg.add_args();
59164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_xoffset->set_isarray(false);
59174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_xoffset->set_type(GLMessage::DataType::INT);
59184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_xoffset->add_intvalue(xoffset);
59194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
59204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument yoffset
59214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_yoffset = glmsg.add_args();
59224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_yoffset->set_isarray(false);
59234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_yoffset->set_type(GLMessage::DataType::INT);
59244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_yoffset->add_intvalue(yoffset);
59254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
59264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument zoffset
59274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_zoffset = glmsg.add_args();
59284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_zoffset->set_isarray(false);
59294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_zoffset->set_type(GLMessage::DataType::INT);
59304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_zoffset->add_intvalue(zoffset);
59314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
59324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument width
59334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_width = glmsg.add_args();
59344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_width->set_isarray(false);
59354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_width->set_type(GLMessage::DataType::INT);
59364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_width->add_intvalue(width);
59374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
59384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument height
59394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_height = glmsg.add_args();
59404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_height->set_isarray(false);
59414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_height->set_type(GLMessage::DataType::INT);
59424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_height->add_intvalue(height);
59434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
59444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument depth
59454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_depth = glmsg.add_args();
59464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_depth->set_isarray(false);
59474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_depth->set_type(GLMessage::DataType::INT);
59484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_depth->add_intvalue(depth);
59494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
59504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument format
59514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_format = glmsg.add_args();
59524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_format->set_isarray(false);
59534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_format->set_type(GLMessage::DataType::ENUM);
59544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_format->add_intvalue((int)format);
59554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
59564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument type
59574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_type = glmsg.add_args();
59584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_type->set_isarray(false);
59594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_type->set_type(GLMessage::DataType::ENUM);
59604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_type->add_intvalue((int)type);
59614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
59624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument pixels
59634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_pixels = glmsg.add_args();
59644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pixels->set_isarray(false);
596539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pixels->set_type(GLMessage::DataType::INT64);
596639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pixels->add_int64value((uintptr_t)pixels);
59674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
59684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
59694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
59704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
59714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
59724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
59734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
59744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
59754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
59764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) pixels,
59774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
59784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
59794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
59804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
59814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
59824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
59834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
59844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
59854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) {
59864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
59874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
59884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
59894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glCopyTexSubImage3D);
59904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
59914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument target
59924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_target = glmsg.add_args();
59934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_isarray(false);
59944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_type(GLMessage::DataType::ENUM);
59954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->add_intvalue((int)target);
59964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
59974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument level
59984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_level = glmsg.add_args();
59994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_level->set_isarray(false);
60004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_level->set_type(GLMessage::DataType::INT);
60014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_level->add_intvalue(level);
60024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
60034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument xoffset
60044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_xoffset = glmsg.add_args();
60054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_xoffset->set_isarray(false);
60064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_xoffset->set_type(GLMessage::DataType::INT);
60074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_xoffset->add_intvalue(xoffset);
60084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
60094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument yoffset
60104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_yoffset = glmsg.add_args();
60114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_yoffset->set_isarray(false);
60124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_yoffset->set_type(GLMessage::DataType::INT);
60134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_yoffset->add_intvalue(yoffset);
60144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
60154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument zoffset
60164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_zoffset = glmsg.add_args();
60174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_zoffset->set_isarray(false);
60184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_zoffset->set_type(GLMessage::DataType::INT);
60194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_zoffset->add_intvalue(zoffset);
60204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
60214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument x
60224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_x = glmsg.add_args();
60234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_x->set_isarray(false);
60244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_x->set_type(GLMessage::DataType::INT);
60254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_x->add_intvalue(x);
60264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
60274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument y
60284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_y = glmsg.add_args();
60294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_y->set_isarray(false);
60304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_y->set_type(GLMessage::DataType::INT);
60314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_y->add_intvalue(y);
60324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
60334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument width
60344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_width = glmsg.add_args();
60354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_width->set_isarray(false);
60364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_width->set_type(GLMessage::DataType::INT);
60374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_width->add_intvalue(width);
60384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
60394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument height
60404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_height = glmsg.add_args();
60414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_height->set_isarray(false);
60424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_height->set_type(GLMessage::DataType::INT);
60434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_height->add_intvalue(height);
60444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
60454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
60464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
60474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
60484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glCopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height);
60494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
60504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
60514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
60524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
60534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
60544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
60554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
60564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
60574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
60584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
60594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
60604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
60614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data) {
60624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
60634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
60644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
60654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glCompressedTexImage3D);
60664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
60674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument target
60684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_target = glmsg.add_args();
60694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_isarray(false);
60704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_type(GLMessage::DataType::ENUM);
60714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->add_intvalue((int)target);
60724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
60734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument level
60744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_level = glmsg.add_args();
60754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_level->set_isarray(false);
60764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_level->set_type(GLMessage::DataType::INT);
60774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_level->add_intvalue(level);
60784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
60794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument internalformat
60804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_internalformat = glmsg.add_args();
60814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_internalformat->set_isarray(false);
60824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_internalformat->set_type(GLMessage::DataType::ENUM);
60834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_internalformat->add_intvalue((int)internalformat);
60844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
60854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument width
60864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_width = glmsg.add_args();
60874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_width->set_isarray(false);
60884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_width->set_type(GLMessage::DataType::INT);
60894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_width->add_intvalue(width);
60904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
60914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument height
60924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_height = glmsg.add_args();
60934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_height->set_isarray(false);
60944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_height->set_type(GLMessage::DataType::INT);
60954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_height->add_intvalue(height);
60964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
60974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument depth
60984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_depth = glmsg.add_args();
60994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_depth->set_isarray(false);
61004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_depth->set_type(GLMessage::DataType::INT);
61014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_depth->add_intvalue(depth);
61024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
61034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument border
61044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_border = glmsg.add_args();
61054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_border->set_isarray(false);
61064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_border->set_type(GLMessage::DataType::INT);
61074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_border->add_intvalue(border);
61084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
61094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument imageSize
61104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_imageSize = glmsg.add_args();
61114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_imageSize->set_isarray(false);
61124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_imageSize->set_type(GLMessage::DataType::INT);
61134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_imageSize->add_intvalue(imageSize);
61144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
61154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument data
61164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_data = glmsg.add_args();
61174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_data->set_isarray(false);
611839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_data->set_type(GLMessage::DataType::INT64);
611939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_data->add_int64value((uintptr_t)data);
61204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
61214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
61224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
61234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
61244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glCompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data);
61254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
61264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
61274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
61284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
61294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) data,
61304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
61314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
61324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
61334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
61344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
61354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
61364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
61374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
61384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data) {
61394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
61404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
61414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
61424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glCompressedTexSubImage3D);
61434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
61444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument target
61454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_target = glmsg.add_args();
61464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_isarray(false);
61474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_type(GLMessage::DataType::ENUM);
61484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->add_intvalue((int)target);
61494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
61504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument level
61514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_level = glmsg.add_args();
61524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_level->set_isarray(false);
61534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_level->set_type(GLMessage::DataType::INT);
61544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_level->add_intvalue(level);
61554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
61564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument xoffset
61574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_xoffset = glmsg.add_args();
61584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_xoffset->set_isarray(false);
61594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_xoffset->set_type(GLMessage::DataType::INT);
61604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_xoffset->add_intvalue(xoffset);
61614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
61624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument yoffset
61634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_yoffset = glmsg.add_args();
61644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_yoffset->set_isarray(false);
61654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_yoffset->set_type(GLMessage::DataType::INT);
61664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_yoffset->add_intvalue(yoffset);
61674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
61684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument zoffset
61694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_zoffset = glmsg.add_args();
61704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_zoffset->set_isarray(false);
61714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_zoffset->set_type(GLMessage::DataType::INT);
61724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_zoffset->add_intvalue(zoffset);
61734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
61744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument width
61754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_width = glmsg.add_args();
61764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_width->set_isarray(false);
61774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_width->set_type(GLMessage::DataType::INT);
61784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_width->add_intvalue(width);
61794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
61804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument height
61814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_height = glmsg.add_args();
61824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_height->set_isarray(false);
61834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_height->set_type(GLMessage::DataType::INT);
61844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_height->add_intvalue(height);
61854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
61864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument depth
61874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_depth = glmsg.add_args();
61884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_depth->set_isarray(false);
61894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_depth->set_type(GLMessage::DataType::INT);
61904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_depth->add_intvalue(depth);
61914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
61924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument format
61934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_format = glmsg.add_args();
61944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_format->set_isarray(false);
61954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_format->set_type(GLMessage::DataType::ENUM);
61964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_format->add_intvalue((int)format);
61974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
61984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument imageSize
61994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_imageSize = glmsg.add_args();
62004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_imageSize->set_isarray(false);
62014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_imageSize->set_type(GLMessage::DataType::INT);
62024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_imageSize->add_intvalue(imageSize);
62034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
62044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument data
62054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_data = glmsg.add_args();
62064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_data->set_isarray(false);
620739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_data->set_type(GLMessage::DataType::INT64);
620839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_data->add_int64value((uintptr_t)data);
62094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
62104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
62114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
62124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
62134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
62144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
62154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
62164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
62174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
62184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) data,
62194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
62204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
62214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
62224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
62234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
62244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
62254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
62264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
62274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glGenQueries(GLsizei n, GLuint* ids) {
62284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
62294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
62304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
62314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glGenQueries);
62324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
62334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument n
62344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_n = glmsg.add_args();
62354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_n->set_isarray(false);
62364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_n->set_type(GLMessage::DataType::INT);
62374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_n->add_intvalue(n);
62384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
62394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument ids
62404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_ids = glmsg.add_args();
62414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_ids->set_isarray(false);
624239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_ids->set_type(GLMessage::DataType::INT64);
624339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_ids->add_int64value((uintptr_t)ids);
62444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
62454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
62464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
62474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
62484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glGenQueries(n, ids);
62494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
62504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
62514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
62524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
62534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) ids,
62544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
62554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
62564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
62574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
62584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
62594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
62604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
62614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
62624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glDeleteQueries(GLsizei n, const GLuint* ids) {
62634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
62644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
62654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
62664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glDeleteQueries);
62674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
62684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument n
62694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_n = glmsg.add_args();
62704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_n->set_isarray(false);
62714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_n->set_type(GLMessage::DataType::INT);
62724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_n->add_intvalue(n);
62734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
62744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument ids
62754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_ids = glmsg.add_args();
62764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_ids->set_isarray(false);
627739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_ids->set_type(GLMessage::DataType::INT64);
627839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_ids->add_int64value((uintptr_t)ids);
62794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
62804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
62814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
62824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
62834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glDeleteQueries(n, ids);
62844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
62854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
62864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
62874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
62884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) ids,
62894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
62904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
62914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
62924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
62934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
62944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
62954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
62964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
62974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse HallGLboolean GLTrace_glIsQuery(GLuint id) {
62984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
62994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
63004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
63014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glIsQuery);
63024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
63034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument id
63044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_id = glmsg.add_args();
63054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_id->set_isarray(false);
63064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_id->set_type(GLMessage::DataType::INT);
63074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_id->add_intvalue(id);
63084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
63094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
63104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
63114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
63124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLboolean retValue = glContext->hooks->gl.glIsQuery(id);
63134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
63144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
63154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
63164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // set return value
63174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
63184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    rt->set_isarray(false);
63194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    rt->set_type(GLMessage::DataType::BOOL);
63204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    rt->add_boolvalue(retValue);
63214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
63224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
63234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
63244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
63254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
63264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
63274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
63284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
63294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
63304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    return retValue;
63314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
63324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
63334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glBeginQuery(GLenum target, GLuint id) {
63344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
63354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
63364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
63374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glBeginQuery);
63384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
63394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument target
63404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_target = glmsg.add_args();
63414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_isarray(false);
63424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_type(GLMessage::DataType::ENUM);
63434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->add_intvalue((int)target);
63444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
63454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument id
63464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_id = glmsg.add_args();
63474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_id->set_isarray(false);
63484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_id->set_type(GLMessage::DataType::INT);
63494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_id->add_intvalue(id);
63504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
63514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
63524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
63534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
63544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glBeginQuery(target, id);
63554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
63564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
63574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
63584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
63594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
63604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
63614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
63624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
63634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
63644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
63654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
63664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
63674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glEndQuery(GLenum target) {
63684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
63694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
63704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
63714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glEndQuery);
63724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
63734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument target
63744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_target = glmsg.add_args();
63754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_isarray(false);
63764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_type(GLMessage::DataType::ENUM);
63774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->add_intvalue((int)target);
63784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
63794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
63804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
63814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
63824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glEndQuery(target);
63834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
63844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
63854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
63864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
63874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
63884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
63894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
63904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
63914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
63924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
63934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
63944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
63954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glGetQueryiv(GLenum target, GLenum pname, GLint* params) {
63964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
63974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
63984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
63994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glGetQueryiv);
64004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
64014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument target
64024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_target = glmsg.add_args();
64034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_isarray(false);
64044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_type(GLMessage::DataType::ENUM);
64054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->add_intvalue((int)target);
64064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
64074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument pname
64084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_pname = glmsg.add_args();
64094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_isarray(false);
64104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_type(GLMessage::DataType::ENUM);
64114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->add_intvalue((int)pname);
64124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
64134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument params
64144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_params = glmsg.add_args();
64154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_params->set_isarray(false);
641639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
641739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
64184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
64194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
64204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
64214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
64224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glGetQueryiv(target, pname, params);
64234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
64244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
64254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
64264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
64274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) params,
64284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
64294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
64304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
64314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
64324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
64334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
64344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
64354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
64364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint* params) {
64374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
64384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
64394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
64404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glGetQueryObjectuiv);
64414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
64424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument id
64434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_id = glmsg.add_args();
64444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_id->set_isarray(false);
64454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_id->set_type(GLMessage::DataType::INT);
64464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_id->add_intvalue(id);
64474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
64484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument pname
64494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_pname = glmsg.add_args();
64504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_isarray(false);
64514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_type(GLMessage::DataType::ENUM);
64524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->add_intvalue((int)pname);
64534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
64544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument params
64554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_params = glmsg.add_args();
64564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_params->set_isarray(false);
645739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
645839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
64594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
64604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
64614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
64624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
64634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glGetQueryObjectuiv(id, pname, params);
64644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
64654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
64664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
64674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
64684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) params,
64694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
64704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
64714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
64724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
64734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
64744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
64754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
64764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
64774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse HallGLboolean GLTrace_glUnmapBuffer(GLenum target) {
64784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
64794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
64804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
64814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glUnmapBuffer);
64824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
64834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument target
64844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_target = glmsg.add_args();
64854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_isarray(false);
64864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_type(GLMessage::DataType::ENUM);
64874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->add_intvalue((int)target);
64884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
64894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
64904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
64914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
64924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLboolean retValue = glContext->hooks->gl.glUnmapBuffer(target);
64934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
64944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
64954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
64964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // set return value
64974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
64984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    rt->set_isarray(false);
64994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    rt->set_type(GLMessage::DataType::BOOL);
65004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    rt->add_boolvalue(retValue);
65014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
65024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
65034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
65044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
65054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
65064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
65074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
65084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
65094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
65104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    return retValue;
65114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
65124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
65134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glGetBufferPointerv(GLenum target, GLenum pname, GLvoid** params) {
65144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
65154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
65164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
65174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glGetBufferPointerv);
65184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
65194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument target
65204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_target = glmsg.add_args();
65214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_isarray(false);
65224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_type(GLMessage::DataType::ENUM);
65234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->add_intvalue((int)target);
65244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
65254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument pname
65264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_pname = glmsg.add_args();
65274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_isarray(false);
65284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_type(GLMessage::DataType::ENUM);
65294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->add_intvalue((int)pname);
65304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
65314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument params
65324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_params = glmsg.add_args();
65334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_params->set_isarray(false);
653439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
653539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
65364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
65374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
65384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
65394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
65404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glGetBufferPointerv(target, pname, params);
65414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
65424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
65434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
65444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
65454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) params,
65464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
65474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
65484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
65494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
65504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
65514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
65524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
65534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
65544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glDrawBuffers(GLsizei n, const GLenum* bufs) {
65554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
65564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
65574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
65584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glDrawBuffers);
65594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
65604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument n
65614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_n = glmsg.add_args();
65624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_n->set_isarray(false);
65634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_n->set_type(GLMessage::DataType::INT);
65644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_n->add_intvalue(n);
65654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
65664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument bufs
65674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_bufs = glmsg.add_args();
65684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_bufs->set_isarray(false);
656939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_bufs->set_type(GLMessage::DataType::INT64);
657039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_bufs->add_int64value((uintptr_t)bufs);
65714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
65724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
65734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
65744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
65754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glDrawBuffers(n, bufs);
65764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
65774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
65784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
65794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
65804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) bufs,
65814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
65824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
65834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
65844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
65854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
65864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
65874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
65884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
65894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) {
65904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
65914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
65924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
65934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glUniformMatrix2x3fv);
65944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
65954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument location
65964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_location = glmsg.add_args();
65974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->set_isarray(false);
65984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->set_type(GLMessage::DataType::INT);
65994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->add_intvalue(location);
66004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
66014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument count
66024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_count = glmsg.add_args();
66034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_isarray(false);
66044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_type(GLMessage::DataType::INT);
66054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->add_intvalue(count);
66064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
66074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument transpose
66084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_transpose = glmsg.add_args();
66094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_transpose->set_isarray(false);
66104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_transpose->set_type(GLMessage::DataType::BOOL);
66114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_transpose->add_boolvalue(transpose);
66124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
66134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument value
66144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_value = glmsg.add_args();
66154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_value->set_isarray(false);
661639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT64);
661739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->add_int64value((uintptr_t)value);
66184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
66194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
66204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
66214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
66224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glUniformMatrix2x3fv(location, count, transpose, value);
66234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
66244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
66254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
66264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
66274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) value,
66284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
66294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
66304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
66314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
66324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
66334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
66344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
66354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
66364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) {
66374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
66384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
66394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
66404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glUniformMatrix3x2fv);
66414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
66424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument location
66434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_location = glmsg.add_args();
66444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->set_isarray(false);
66454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->set_type(GLMessage::DataType::INT);
66464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->add_intvalue(location);
66474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
66484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument count
66494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_count = glmsg.add_args();
66504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_isarray(false);
66514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_type(GLMessage::DataType::INT);
66524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->add_intvalue(count);
66534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
66544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument transpose
66554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_transpose = glmsg.add_args();
66564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_transpose->set_isarray(false);
66574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_transpose->set_type(GLMessage::DataType::BOOL);
66584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_transpose->add_boolvalue(transpose);
66594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
66604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument value
66614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_value = glmsg.add_args();
66624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_value->set_isarray(false);
666339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT64);
666439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->add_int64value((uintptr_t)value);
66654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
66664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
66674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
66684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
66694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glUniformMatrix3x2fv(location, count, transpose, value);
66704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
66714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
66724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
66734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
66744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) value,
66754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
66764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
66774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
66784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
66794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
66804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
66814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
66824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
66834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) {
66844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
66854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
66864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
66874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glUniformMatrix2x4fv);
66884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
66894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument location
66904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_location = glmsg.add_args();
66914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->set_isarray(false);
66924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->set_type(GLMessage::DataType::INT);
66934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->add_intvalue(location);
66944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
66954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument count
66964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_count = glmsg.add_args();
66974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_isarray(false);
66984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_type(GLMessage::DataType::INT);
66994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->add_intvalue(count);
67004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
67014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument transpose
67024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_transpose = glmsg.add_args();
67034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_transpose->set_isarray(false);
67044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_transpose->set_type(GLMessage::DataType::BOOL);
67054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_transpose->add_boolvalue(transpose);
67064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
67074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument value
67084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_value = glmsg.add_args();
67094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_value->set_isarray(false);
671039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT64);
671139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->add_int64value((uintptr_t)value);
67124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
67134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
67144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
67154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
67164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glUniformMatrix2x4fv(location, count, transpose, value);
67174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
67184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
67194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
67204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
67214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) value,
67224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
67234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
67244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
67254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
67264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
67274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
67284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
67294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
67304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) {
67314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
67324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
67334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
67344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glUniformMatrix4x2fv);
67354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
67364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument location
67374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_location = glmsg.add_args();
67384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->set_isarray(false);
67394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->set_type(GLMessage::DataType::INT);
67404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->add_intvalue(location);
67414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
67424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument count
67434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_count = glmsg.add_args();
67444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_isarray(false);
67454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_type(GLMessage::DataType::INT);
67464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->add_intvalue(count);
67474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
67484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument transpose
67494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_transpose = glmsg.add_args();
67504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_transpose->set_isarray(false);
67514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_transpose->set_type(GLMessage::DataType::BOOL);
67524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_transpose->add_boolvalue(transpose);
67534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
67544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument value
67554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_value = glmsg.add_args();
67564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_value->set_isarray(false);
675739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT64);
675839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->add_int64value((uintptr_t)value);
67594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
67604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
67614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
67624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
67634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glUniformMatrix4x2fv(location, count, transpose, value);
67644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
67654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
67664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
67674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
67684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) value,
67694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
67704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
67714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
67724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
67734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
67744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
67754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
67764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
67774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) {
67784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
67794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
67804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
67814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glUniformMatrix3x4fv);
67824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
67834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument location
67844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_location = glmsg.add_args();
67854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->set_isarray(false);
67864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->set_type(GLMessage::DataType::INT);
67874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->add_intvalue(location);
67884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
67894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument count
67904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_count = glmsg.add_args();
67914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_isarray(false);
67924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_type(GLMessage::DataType::INT);
67934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->add_intvalue(count);
67944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
67954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument transpose
67964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_transpose = glmsg.add_args();
67974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_transpose->set_isarray(false);
67984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_transpose->set_type(GLMessage::DataType::BOOL);
67994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_transpose->add_boolvalue(transpose);
68004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
68014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument value
68024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_value = glmsg.add_args();
68034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_value->set_isarray(false);
680439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT64);
680539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->add_int64value((uintptr_t)value);
68064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
68074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
68084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
68094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
68104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glUniformMatrix3x4fv(location, count, transpose, value);
68114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
68124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
68134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
68144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
68154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) value,
68164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
68174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
68184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
68194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
68204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
68214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
68224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
68234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
68244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) {
68254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
68264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
68274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
68284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glUniformMatrix4x3fv);
68294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
68304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument location
68314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_location = glmsg.add_args();
68324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->set_isarray(false);
68334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->set_type(GLMessage::DataType::INT);
68344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->add_intvalue(location);
68354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
68364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument count
68374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_count = glmsg.add_args();
68384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_isarray(false);
68394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_type(GLMessage::DataType::INT);
68404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->add_intvalue(count);
68414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
68424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument transpose
68434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_transpose = glmsg.add_args();
68444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_transpose->set_isarray(false);
68454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_transpose->set_type(GLMessage::DataType::BOOL);
68464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_transpose->add_boolvalue(transpose);
68474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
68484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument value
68494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_value = glmsg.add_args();
68504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_value->set_isarray(false);
685139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT64);
685239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->add_int64value((uintptr_t)value);
68534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
68544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
68554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
68564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
68574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glUniformMatrix4x3fv(location, count, transpose, value);
68584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
68594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
68604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
68614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
68624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) value,
68634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
68644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
68654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
68664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
68674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
68684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
68694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
68704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
68714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) {
68724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
68734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
68744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
68754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glBlitFramebuffer);
68764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
68774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument srcX0
68784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_srcX0 = glmsg.add_args();
68794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_srcX0->set_isarray(false);
68804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_srcX0->set_type(GLMessage::DataType::INT);
68814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_srcX0->add_intvalue(srcX0);
68824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
68834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument srcY0
68844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_srcY0 = glmsg.add_args();
68854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_srcY0->set_isarray(false);
68864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_srcY0->set_type(GLMessage::DataType::INT);
68874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_srcY0->add_intvalue(srcY0);
68884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
68894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument srcX1
68904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_srcX1 = glmsg.add_args();
68914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_srcX1->set_isarray(false);
68924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_srcX1->set_type(GLMessage::DataType::INT);
68934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_srcX1->add_intvalue(srcX1);
68944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
68954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument srcY1
68964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_srcY1 = glmsg.add_args();
68974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_srcY1->set_isarray(false);
68984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_srcY1->set_type(GLMessage::DataType::INT);
68994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_srcY1->add_intvalue(srcY1);
69004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
69014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument dstX0
69024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_dstX0 = glmsg.add_args();
69034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_dstX0->set_isarray(false);
69044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_dstX0->set_type(GLMessage::DataType::INT);
69054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_dstX0->add_intvalue(dstX0);
69064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
69074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument dstY0
69084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_dstY0 = glmsg.add_args();
69094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_dstY0->set_isarray(false);
69104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_dstY0->set_type(GLMessage::DataType::INT);
69114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_dstY0->add_intvalue(dstY0);
69124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
69134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument dstX1
69144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_dstX1 = glmsg.add_args();
69154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_dstX1->set_isarray(false);
69164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_dstX1->set_type(GLMessage::DataType::INT);
69174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_dstX1->add_intvalue(dstX1);
69184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
69194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument dstY1
69204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_dstY1 = glmsg.add_args();
69214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_dstY1->set_isarray(false);
69224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_dstY1->set_type(GLMessage::DataType::INT);
69234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_dstY1->add_intvalue(dstY1);
69244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
69254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument mask
69264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_mask = glmsg.add_args();
69274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_mask->set_isarray(false);
69284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_mask->set_type(GLMessage::DataType::INT);
69294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_mask->add_intvalue(mask);
69304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
69314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument filter
69324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_filter = glmsg.add_args();
69334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_filter->set_isarray(false);
69344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_filter->set_type(GLMessage::DataType::ENUM);
69354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_filter->add_intvalue((int)filter);
69364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
69374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
69384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
69394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
69404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
69414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
69424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
69434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
69444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
69454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
69464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
69474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
69484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
69494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
69504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
69514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
69524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
69534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
69544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
69554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
69564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
69574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glRenderbufferStorageMultisample);
69584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
69594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument target
69604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_target = glmsg.add_args();
69614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_isarray(false);
69624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_type(GLMessage::DataType::ENUM);
69634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->add_intvalue((int)target);
69644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
69654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument samples
69664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_samples = glmsg.add_args();
69674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_samples->set_isarray(false);
69684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_samples->set_type(GLMessage::DataType::INT);
69694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_samples->add_intvalue(samples);
69704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
69714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument internalformat
69724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_internalformat = glmsg.add_args();
69734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_internalformat->set_isarray(false);
69744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_internalformat->set_type(GLMessage::DataType::ENUM);
69754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_internalformat->add_intvalue((int)internalformat);
69764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
69774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument width
69784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_width = glmsg.add_args();
69794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_width->set_isarray(false);
69804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_width->set_type(GLMessage::DataType::INT);
69814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_width->add_intvalue(width);
69824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
69834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument height
69844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_height = glmsg.add_args();
69854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_height->set_isarray(false);
69864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_height->set_type(GLMessage::DataType::INT);
69874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_height->add_intvalue(height);
69884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
69894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
69904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
69914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
69924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glRenderbufferStorageMultisample(target, samples, internalformat, width, height);
69934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
69944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
69954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
69964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
69974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
69984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
69994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
70004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
70014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
70024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
70034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
70044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
70054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) {
70064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
70074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
70084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
70094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glFramebufferTextureLayer);
70104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
70114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument target
70124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_target = glmsg.add_args();
70134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_isarray(false);
70144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_type(GLMessage::DataType::ENUM);
70154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->add_intvalue((int)target);
70164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
70174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument attachment
70184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_attachment = glmsg.add_args();
70194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_attachment->set_isarray(false);
70204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_attachment->set_type(GLMessage::DataType::ENUM);
70214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_attachment->add_intvalue((int)attachment);
70224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
70234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument texture
70244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_texture = glmsg.add_args();
70254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_texture->set_isarray(false);
70264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_texture->set_type(GLMessage::DataType::INT);
70274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_texture->add_intvalue(texture);
70284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
70294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument level
70304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_level = glmsg.add_args();
70314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_level->set_isarray(false);
70324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_level->set_type(GLMessage::DataType::INT);
70334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_level->add_intvalue(level);
70344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
70354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument layer
70364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_layer = glmsg.add_args();
70374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_layer->set_isarray(false);
70384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_layer->set_type(GLMessage::DataType::INT);
70394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_layer->add_intvalue(layer);
70404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
70414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
70424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
70434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
70444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glFramebufferTextureLayer(target, attachment, texture, level, layer);
70454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
70464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
70474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
70484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
70494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
70504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
70514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
70524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
70534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
70544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
70554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
70564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
70574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse HallGLvoid* GLTrace_glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) {
70584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
70594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
70604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
70614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glMapBufferRange);
70624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
70634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument target
70644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_target = glmsg.add_args();
70654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_isarray(false);
70664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_type(GLMessage::DataType::ENUM);
70674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->add_intvalue((int)target);
70684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
70694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument offset
70704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_offset = glmsg.add_args();
70714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_offset->set_isarray(false);
70724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_offset->set_type(GLMessage::DataType::INT);
70734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_offset->add_intvalue(offset);
70744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
70754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument length
70764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_length = glmsg.add_args();
70774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_length->set_isarray(false);
70784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_length->set_type(GLMessage::DataType::INT);
70794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_length->add_intvalue(length);
70804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
70814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument access
70824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_access = glmsg.add_args();
70834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_access->set_isarray(false);
70844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_access->set_type(GLMessage::DataType::INT);
70854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_access->add_intvalue(access);
70864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
70874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
70884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
70894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
70904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLvoid* retValue = glContext->hooks->gl.glMapBufferRange(target, offset, length, access);
70914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
70924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
70934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
70944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // set return value
70954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
70964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    rt->set_isarray(false);
709739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    rt->set_type(GLMessage::DataType::INT64);
709839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    rt->add_int64value((uintptr_t)retValue);
70994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
71004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
71014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) retValue,
71024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
71034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
71044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
71054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
71064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
71074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
71084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
71094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    return retValue;
71104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
71114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
71124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) {
71134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
71144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
71154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
71164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glFlushMappedBufferRange);
71174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
71184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument target
71194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_target = glmsg.add_args();
71204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_isarray(false);
71214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_type(GLMessage::DataType::ENUM);
71224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->add_intvalue((int)target);
71234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
71244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument offset
71254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_offset = glmsg.add_args();
71264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_offset->set_isarray(false);
71274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_offset->set_type(GLMessage::DataType::INT);
71284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_offset->add_intvalue(offset);
71294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
71304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument length
71314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_length = glmsg.add_args();
71324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_length->set_isarray(false);
71334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_length->set_type(GLMessage::DataType::INT);
71344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_length->add_intvalue(length);
71354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
71364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
71374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
71384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
71394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glFlushMappedBufferRange(target, offset, length);
71404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
71414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
71424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
71434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
71444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
71454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
71464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
71474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
71484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
71494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
71504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
71514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
71524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glBindVertexArray(GLuint array) {
71534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
71544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
71554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
71564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glBindVertexArray);
71574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
71584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument array
71594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_array = glmsg.add_args();
71604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_array->set_isarray(false);
71614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_array->set_type(GLMessage::DataType::INT);
71624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_array->add_intvalue(array);
71634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
71644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
71654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
71664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
71674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glBindVertexArray(array);
71684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
71694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
71704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
71714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
71724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
71734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
71744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
71754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
71764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
71774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
71784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
71794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
71804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glDeleteVertexArrays(GLsizei n, const GLuint* arrays) {
71814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
71824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
71834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
71844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glDeleteVertexArrays);
71854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
71864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument n
71874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_n = glmsg.add_args();
71884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_n->set_isarray(false);
71894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_n->set_type(GLMessage::DataType::INT);
71904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_n->add_intvalue(n);
71914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
71924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument arrays
71934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_arrays = glmsg.add_args();
71944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_arrays->set_isarray(false);
719539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_arrays->set_type(GLMessage::DataType::INT64);
719639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_arrays->add_int64value((uintptr_t)arrays);
71974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
71984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
71994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
72004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
72014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glDeleteVertexArrays(n, arrays);
72024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
72034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
72044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
72054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
72064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) arrays,
72074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
72084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
72094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
72104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
72114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
72124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
72134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
72144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
72154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glGenVertexArrays(GLsizei n, GLuint* arrays) {
72164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
72174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
72184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
72194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glGenVertexArrays);
72204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
72214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument n
72224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_n = glmsg.add_args();
72234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_n->set_isarray(false);
72244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_n->set_type(GLMessage::DataType::INT);
72254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_n->add_intvalue(n);
72264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
72274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument arrays
72284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_arrays = glmsg.add_args();
72294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_arrays->set_isarray(false);
723039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_arrays->set_type(GLMessage::DataType::INT64);
723139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_arrays->add_int64value((uintptr_t)arrays);
72324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
72334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
72344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
72354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
72364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glGenVertexArrays(n, arrays);
72374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
72384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
72394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
72404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
72414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) arrays,
72424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
72434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
72444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
72454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
72464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
72474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
72484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
72494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
72504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse HallGLboolean GLTrace_glIsVertexArray(GLuint array) {
72514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
72524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
72534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
72544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glIsVertexArray);
72554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
72564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument array
72574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_array = glmsg.add_args();
72584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_array->set_isarray(false);
72594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_array->set_type(GLMessage::DataType::INT);
72604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_array->add_intvalue(array);
72614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
72624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
72634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
72644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
72654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLboolean retValue = glContext->hooks->gl.glIsVertexArray(array);
72664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
72674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
72684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
72694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // set return value
72704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
72714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    rt->set_isarray(false);
72724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    rt->set_type(GLMessage::DataType::BOOL);
72734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    rt->add_boolvalue(retValue);
72744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
72754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
72764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
72774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
72784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
72794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
72804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
72814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
72824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
72834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    return retValue;
72844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
72854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
72864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glGetIntegeri_v(GLenum target, GLuint index, GLint* data) {
72874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
72884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
72894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
72904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glGetIntegeri_v);
72914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
72924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument target
72934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_target = glmsg.add_args();
72944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_isarray(false);
72954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_type(GLMessage::DataType::ENUM);
72964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->add_intvalue((int)target);
72974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
72984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument index
72994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_index = glmsg.add_args();
73004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->set_isarray(false);
73014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->set_type(GLMessage::DataType::INT);
73024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->add_intvalue(index);
73034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
73044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument data
73054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_data = glmsg.add_args();
73064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_data->set_isarray(false);
730739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_data->set_type(GLMessage::DataType::INT64);
730839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_data->add_int64value((uintptr_t)data);
73094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
73104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
73114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
73124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
73134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glGetIntegeri_v(target, index, data);
73144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
73154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
73164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
73174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
73184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) data,
73194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
73204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
73214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
73224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
73234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
73244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
73254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
73264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
73274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glBeginTransformFeedback(GLenum primitiveMode) {
73284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
73294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
73304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
73314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glBeginTransformFeedback);
73324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
73334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument primitiveMode
73344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_primitiveMode = glmsg.add_args();
73354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_primitiveMode->set_isarray(false);
73364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_primitiveMode->set_type(GLMessage::DataType::ENUM);
73374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_primitiveMode->add_intvalue((int)primitiveMode);
73384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
73394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
73404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
73414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
73424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glBeginTransformFeedback(primitiveMode);
73434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
73444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
73454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
73464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
73474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
73484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
73494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
73504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
73514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
73524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
73534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
73544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
73554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glEndTransformFeedback(void) {
73564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
73574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
73584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
73594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glEndTransformFeedback);
73604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
73614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
73624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
73634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
73644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glEndTransformFeedback();
73654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
73664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
73674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
73684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
73694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
73704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
73714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
73724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
73734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
73744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
73754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
73764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
73774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) {
73784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
73794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
73804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
73814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glBindBufferRange);
73824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
73834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument target
73844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_target = glmsg.add_args();
73854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_isarray(false);
73864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_type(GLMessage::DataType::ENUM);
73874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->add_intvalue((int)target);
73884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
73894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument index
73904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_index = glmsg.add_args();
73914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->set_isarray(false);
73924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->set_type(GLMessage::DataType::INT);
73934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->add_intvalue(index);
73944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
73954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument buffer
73964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_buffer = glmsg.add_args();
73974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_buffer->set_isarray(false);
73984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_buffer->set_type(GLMessage::DataType::INT);
73994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_buffer->add_intvalue(buffer);
74004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
74014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument offset
74024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_offset = glmsg.add_args();
74034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_offset->set_isarray(false);
74044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_offset->set_type(GLMessage::DataType::INT);
74054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_offset->add_intvalue(offset);
74064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
74074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument size
74084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_size = glmsg.add_args();
74094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_size->set_isarray(false);
74104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_size->set_type(GLMessage::DataType::INT);
74114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_size->add_intvalue(size);
74124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
74134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
74144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
74154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
74164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glBindBufferRange(target, index, buffer, offset, size);
74174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
74184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
74194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
74204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
74214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
74224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
74234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
74244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
74254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
74264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
74274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
74284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
74294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glBindBufferBase(GLenum target, GLuint index, GLuint buffer) {
74304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
74314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
74324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
74334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glBindBufferBase);
74344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
74354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument target
74364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_target = glmsg.add_args();
74374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_isarray(false);
74384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_type(GLMessage::DataType::ENUM);
74394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->add_intvalue((int)target);
74404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
74414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument index
74424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_index = glmsg.add_args();
74434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->set_isarray(false);
74444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->set_type(GLMessage::DataType::INT);
74454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->add_intvalue(index);
74464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
74474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument buffer
74484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_buffer = glmsg.add_args();
74494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_buffer->set_isarray(false);
74504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_buffer->set_type(GLMessage::DataType::INT);
74514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_buffer->add_intvalue(buffer);
74524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
74534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
74544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
74554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
74564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glBindBufferBase(target, index, buffer);
74574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
74584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
74594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
74604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
74614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
74624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
74634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
74644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
74654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
74664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
74674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
74684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
74694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const* varyings, GLenum bufferMode) {
74704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
74714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
74724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
74734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glTransformFeedbackVaryings);
74744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
74754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument program
74764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_program = glmsg.add_args();
74774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->set_isarray(false);
74784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->set_type(GLMessage::DataType::INT);
74794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->add_intvalue(program);
74804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
74814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument count
74824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_count = glmsg.add_args();
74834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_isarray(false);
74844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_type(GLMessage::DataType::INT);
74854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->add_intvalue(count);
74864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
74874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument varyings
74884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_varyings = glmsg.add_args();
74894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_varyings->set_isarray(false);
749039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_varyings->set_type(GLMessage::DataType::INT64);
749139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_varyings->add_int64value((uintptr_t)varyings);
74924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
74934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument bufferMode
74944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_bufferMode = glmsg.add_args();
74954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_bufferMode->set_isarray(false);
74964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_bufferMode->set_type(GLMessage::DataType::ENUM);
74974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_bufferMode->add_intvalue((int)bufferMode);
74984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
74994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
75004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
75014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
75024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glTransformFeedbackVaryings(program, count, varyings, bufferMode);
75034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
75044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
75054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
75064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
75074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) varyings,
75084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
75094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
75104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
75114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
75124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
75134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
75144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
75154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
75164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei* size, GLenum* type, GLchar* name) {
75174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
75184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
75194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
75204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glGetTransformFeedbackVarying);
75214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
75224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument program
75234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_program = glmsg.add_args();
75244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->set_isarray(false);
75254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->set_type(GLMessage::DataType::INT);
75264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->add_intvalue(program);
75274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
75284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument index
75294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_index = glmsg.add_args();
75304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->set_isarray(false);
75314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->set_type(GLMessage::DataType::INT);
75324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->add_intvalue(index);
75334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
75344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument bufSize
75354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_bufSize = glmsg.add_args();
75364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_bufSize->set_isarray(false);
75374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_bufSize->set_type(GLMessage::DataType::INT);
75384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_bufSize->add_intvalue(bufSize);
75394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
75404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument length
75414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_length = glmsg.add_args();
75424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_length->set_isarray(false);
754339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->set_type(GLMessage::DataType::INT64);
754439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->add_int64value((uintptr_t)length);
75454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
75464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument size
75474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_size = glmsg.add_args();
75484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_size->set_isarray(false);
754939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_size->set_type(GLMessage::DataType::INT64);
755039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_size->add_int64value((uintptr_t)size);
75514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
75524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument type
75534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_type = glmsg.add_args();
75544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_type->set_isarray(false);
755539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_type->set_type(GLMessage::DataType::INT64);
755639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_type->add_int64value((uintptr_t)type);
75574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
75584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument name
75594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_name = glmsg.add_args();
75604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_name->set_isarray(false);
756139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_name->set_type(GLMessage::DataType::INT64);
756239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_name->add_int64value((uintptr_t)name);
75634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
75644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
75654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
75664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
75674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glGetTransformFeedbackVarying(program, index, bufSize, length, size, type, name);
75684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
75694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
75704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
75714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
75724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) length,
75734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) size,
75744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) type,
75754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) name,
75764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
75774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
75784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
75794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
75804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
75814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
75824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
75834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
75844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid* pointer) {
75854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
75864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
75874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
75884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glVertexAttribIPointer);
75894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
75904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument index
75914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_index = glmsg.add_args();
75924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->set_isarray(false);
75934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->set_type(GLMessage::DataType::INT);
75944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->add_intvalue(index);
75954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
75964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument size
75974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_size = glmsg.add_args();
75984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_size->set_isarray(false);
75994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_size->set_type(GLMessage::DataType::INT);
76004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_size->add_intvalue(size);
76014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
76024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument type
76034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_type = glmsg.add_args();
76044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_type->set_isarray(false);
76054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_type->set_type(GLMessage::DataType::ENUM);
76064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_type->add_intvalue((int)type);
76074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
76084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument stride
76094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_stride = glmsg.add_args();
76104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_stride->set_isarray(false);
76114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_stride->set_type(GLMessage::DataType::INT);
76124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_stride->add_intvalue(stride);
76134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
76144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument pointer
76154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_pointer = glmsg.add_args();
76164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pointer->set_isarray(false);
761739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pointer->set_type(GLMessage::DataType::INT64);
761839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pointer->add_int64value((uintptr_t)pointer);
76194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
76204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
76214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
76224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
76234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glVertexAttribIPointer(index, size, type, stride, pointer);
76244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
76254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
76264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
76274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
76284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) pointer,
76294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
76304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
76314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
76324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
76334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
76344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
76354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
76364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
76374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glGetVertexAttribIiv(GLuint index, GLenum pname, GLint* params) {
76384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
76394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
76404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
76414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glGetVertexAttribIiv);
76424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
76434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument index
76444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_index = glmsg.add_args();
76454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->set_isarray(false);
76464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->set_type(GLMessage::DataType::INT);
76474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->add_intvalue(index);
76484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
76494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument pname
76504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_pname = glmsg.add_args();
76514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_isarray(false);
76524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_type(GLMessage::DataType::ENUM);
76534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->add_intvalue((int)pname);
76544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
76554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument params
76564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_params = glmsg.add_args();
76574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_params->set_isarray(false);
765839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
765939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
76604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
76614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
76624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
76634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
76644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glGetVertexAttribIiv(index, pname, params);
76654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
76664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
76674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
76684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
76694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) params,
76704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
76714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
76724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
76734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
76744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
76754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
76764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
76774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
76784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint* params) {
76794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
76804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
76814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
76824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glGetVertexAttribIuiv);
76834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
76844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument index
76854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_index = glmsg.add_args();
76864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->set_isarray(false);
76874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->set_type(GLMessage::DataType::INT);
76884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->add_intvalue(index);
76894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
76904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument pname
76914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_pname = glmsg.add_args();
76924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_isarray(false);
76934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_type(GLMessage::DataType::ENUM);
76944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->add_intvalue((int)pname);
76954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
76964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument params
76974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_params = glmsg.add_args();
76984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_params->set_isarray(false);
769939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
770039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
77014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
77024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
77034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
77044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
77054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glGetVertexAttribIuiv(index, pname, params);
77064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
77074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
77084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
77094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
77104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) params,
77114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
77124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
77134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
77144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
77154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
77164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
77174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
77184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
77194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w) {
77204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
77214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
77224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
77234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glVertexAttribI4i);
77244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
77254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument index
77264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_index = glmsg.add_args();
77274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->set_isarray(false);
77284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->set_type(GLMessage::DataType::INT);
77294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->add_intvalue(index);
77304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
77314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument x
77324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_x = glmsg.add_args();
77334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_x->set_isarray(false);
77344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_x->set_type(GLMessage::DataType::INT);
77354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_x->add_intvalue(x);
77364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
77374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument y
77384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_y = glmsg.add_args();
77394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_y->set_isarray(false);
77404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_y->set_type(GLMessage::DataType::INT);
77414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_y->add_intvalue(y);
77424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
77434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument z
77444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_z = glmsg.add_args();
77454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_z->set_isarray(false);
77464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_z->set_type(GLMessage::DataType::INT);
77474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_z->add_intvalue(z);
77484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
77494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument w
77504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_w = glmsg.add_args();
77514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_w->set_isarray(false);
77524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_w->set_type(GLMessage::DataType::INT);
77534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_w->add_intvalue(w);
77544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
77554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
77564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
77574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
77584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glVertexAttribI4i(index, x, y, z, w);
77594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
77604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
77614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
77624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
77634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
77644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
77654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
77664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
77674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
77684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
77694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
77704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
77714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) {
77724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
77734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
77744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
77754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glVertexAttribI4ui);
77764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
77774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument index
77784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_index = glmsg.add_args();
77794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->set_isarray(false);
77804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->set_type(GLMessage::DataType::INT);
77814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->add_intvalue(index);
77824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
77834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument x
77844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_x = glmsg.add_args();
77854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_x->set_isarray(false);
77864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_x->set_type(GLMessage::DataType::INT);
77874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_x->add_intvalue(x);
77884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
77894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument y
77904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_y = glmsg.add_args();
77914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_y->set_isarray(false);
77924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_y->set_type(GLMessage::DataType::INT);
77934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_y->add_intvalue(y);
77944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
77954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument z
77964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_z = glmsg.add_args();
77974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_z->set_isarray(false);
77984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_z->set_type(GLMessage::DataType::INT);
77994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_z->add_intvalue(z);
78004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
78014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument w
78024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_w = glmsg.add_args();
78034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_w->set_isarray(false);
78044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_w->set_type(GLMessage::DataType::INT);
78054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_w->add_intvalue(w);
78064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
78074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
78084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
78094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
78104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glVertexAttribI4ui(index, x, y, z, w);
78114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
78124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
78134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
78144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
78154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
78164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
78174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
78184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
78194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
78204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
78214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
78224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
78234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glVertexAttribI4iv(GLuint index, const GLint* v) {
78244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
78254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
78264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
78274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glVertexAttribI4iv);
78284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
78294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument index
78304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_index = glmsg.add_args();
78314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->set_isarray(false);
78324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->set_type(GLMessage::DataType::INT);
78334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->add_intvalue(index);
78344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
78354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument v
78364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_v = glmsg.add_args();
78374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v->set_isarray(false);
783839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_v->set_type(GLMessage::DataType::INT64);
783939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_v->add_int64value((uintptr_t)v);
78404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
78414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
78424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
78434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
78444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glVertexAttribI4iv(index, v);
78454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
78464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
78474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
78484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
78494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) v,
78504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
78514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
78524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
78534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
78544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
78554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
78564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
78574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
78584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glVertexAttribI4uiv(GLuint index, const GLuint* v) {
78594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
78604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
78614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
78624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glVertexAttribI4uiv);
78634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
78644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument index
78654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_index = glmsg.add_args();
78664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->set_isarray(false);
78674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->set_type(GLMessage::DataType::INT);
78684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->add_intvalue(index);
78694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
78704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument v
78714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_v = glmsg.add_args();
78724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v->set_isarray(false);
787339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_v->set_type(GLMessage::DataType::INT64);
787439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_v->add_int64value((uintptr_t)v);
78754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
78764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
78774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
78784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
78794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glVertexAttribI4uiv(index, v);
78804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
78814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
78824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
78834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
78844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) v,
78854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
78864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
78874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
78884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
78894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
78904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
78914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
78924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
78934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glGetUniformuiv(GLuint program, GLint location, GLuint* params) {
78944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
78954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
78964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
78974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glGetUniformuiv);
78984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
78994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument program
79004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_program = glmsg.add_args();
79014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->set_isarray(false);
79024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->set_type(GLMessage::DataType::INT);
79034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->add_intvalue(program);
79044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
79054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument location
79064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_location = glmsg.add_args();
79074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->set_isarray(false);
79084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->set_type(GLMessage::DataType::INT);
79094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->add_intvalue(location);
79104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
79114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument params
79124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_params = glmsg.add_args();
79134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_params->set_isarray(false);
791439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
791539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
79164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
79174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
79184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
79194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
79204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glGetUniformuiv(program, location, params);
79214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
79224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
79234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
79244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
79254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) params,
79264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
79274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
79284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
79294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
79304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
79314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
79324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
79334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
79344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse HallGLint GLTrace_glGetFragDataLocation(GLuint program, const GLchar *name) {
79354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
79364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
79374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
79384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glGetFragDataLocation);
79394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
79404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument program
79414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_program = glmsg.add_args();
79424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->set_isarray(false);
79434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->set_type(GLMessage::DataType::INT);
79444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->add_intvalue(program);
79454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
79464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument name
79474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_name = glmsg.add_args();
79484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_name->set_isarray(false);
794939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_name->set_type(GLMessage::DataType::INT64);
795039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_name->add_int64value((uintptr_t)name);
79514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
79524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
79534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
79544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
79554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLint retValue = glContext->hooks->gl.glGetFragDataLocation(program, name);
79564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
79574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
79584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
79594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // set return value
79604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
79614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    rt->set_isarray(false);
79624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    rt->set_type(GLMessage::DataType::INT);
79634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    rt->add_intvalue(retValue);
79644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
79654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
79664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) name,
79674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
79684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
79694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
79704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
79714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
79724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
79734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
79744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    return retValue;
79754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
79764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
79774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glUniform1ui(GLint location, GLuint v0) {
79784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
79794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
79804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
79814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glUniform1ui);
79824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
79834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument location
79844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_location = glmsg.add_args();
79854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->set_isarray(false);
79864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->set_type(GLMessage::DataType::INT);
79874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->add_intvalue(location);
79884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
79894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument v0
79904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_v0 = glmsg.add_args();
79914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v0->set_isarray(false);
79924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v0->set_type(GLMessage::DataType::INT);
79934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v0->add_intvalue(v0);
79944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
79954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
79964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
79974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
79984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glUniform1ui(location, v0);
79994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
80004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
80014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
80024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
80034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
80044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
80054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
80064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
80074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
80084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
80094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
80104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
80114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glUniform2ui(GLint location, GLuint v0, GLuint v1) {
80124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
80134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
80144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
80154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glUniform2ui);
80164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
80174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument location
80184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_location = glmsg.add_args();
80194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->set_isarray(false);
80204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->set_type(GLMessage::DataType::INT);
80214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->add_intvalue(location);
80224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
80234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument v0
80244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_v0 = glmsg.add_args();
80254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v0->set_isarray(false);
80264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v0->set_type(GLMessage::DataType::INT);
80274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v0->add_intvalue(v0);
80284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
80294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument v1
80304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_v1 = glmsg.add_args();
80314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v1->set_isarray(false);
80324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v1->set_type(GLMessage::DataType::INT);
80334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v1->add_intvalue(v1);
80344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
80354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
80364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
80374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
80384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glUniform2ui(location, v0, v1);
80394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
80404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
80414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
80424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
80434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
80444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
80454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
80464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
80474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
80484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
80494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
80504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
80514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) {
80524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
80534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
80544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
80554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glUniform3ui);
80564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
80574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument location
80584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_location = glmsg.add_args();
80594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->set_isarray(false);
80604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->set_type(GLMessage::DataType::INT);
80614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->add_intvalue(location);
80624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
80634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument v0
80644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_v0 = glmsg.add_args();
80654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v0->set_isarray(false);
80664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v0->set_type(GLMessage::DataType::INT);
80674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v0->add_intvalue(v0);
80684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
80694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument v1
80704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_v1 = glmsg.add_args();
80714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v1->set_isarray(false);
80724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v1->set_type(GLMessage::DataType::INT);
80734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v1->add_intvalue(v1);
80744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
80754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument v2
80764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_v2 = glmsg.add_args();
80774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v2->set_isarray(false);
80784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v2->set_type(GLMessage::DataType::INT);
80794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v2->add_intvalue(v2);
80804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
80814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
80824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
80834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
80844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glUniform3ui(location, v0, v1, v2);
80854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
80864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
80874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
80884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
80894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
80904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
80914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
80924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
80934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
80944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
80954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
80964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
80974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) {
80984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
80994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
81004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
81014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glUniform4ui);
81024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
81034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument location
81044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_location = glmsg.add_args();
81054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->set_isarray(false);
81064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->set_type(GLMessage::DataType::INT);
81074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->add_intvalue(location);
81084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
81094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument v0
81104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_v0 = glmsg.add_args();
81114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v0->set_isarray(false);
81124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v0->set_type(GLMessage::DataType::INT);
81134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v0->add_intvalue(v0);
81144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
81154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument v1
81164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_v1 = glmsg.add_args();
81174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v1->set_isarray(false);
81184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v1->set_type(GLMessage::DataType::INT);
81194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v1->add_intvalue(v1);
81204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
81214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument v2
81224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_v2 = glmsg.add_args();
81234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v2->set_isarray(false);
81244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v2->set_type(GLMessage::DataType::INT);
81254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v2->add_intvalue(v2);
81264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
81274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument v3
81284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_v3 = glmsg.add_args();
81294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v3->set_isarray(false);
81304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v3->set_type(GLMessage::DataType::INT);
81314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_v3->add_intvalue(v3);
81324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
81334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
81344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
81354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
81364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glUniform4ui(location, v0, v1, v2, v3);
81374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
81384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
81394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
81404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
81414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
81424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
81434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
81444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
81454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
81464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
81474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
81484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
81494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glUniform1uiv(GLint location, GLsizei count, const GLuint* value) {
81504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
81514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
81524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
81534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glUniform1uiv);
81544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
81554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument location
81564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_location = glmsg.add_args();
81574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->set_isarray(false);
81584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->set_type(GLMessage::DataType::INT);
81594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->add_intvalue(location);
81604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
81614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument count
81624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_count = glmsg.add_args();
81634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_isarray(false);
81644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_type(GLMessage::DataType::INT);
81654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->add_intvalue(count);
81664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
81674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument value
81684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_value = glmsg.add_args();
81694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_value->set_isarray(false);
817039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT64);
817139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->add_int64value((uintptr_t)value);
81724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
81734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
81744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
81754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
81764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glUniform1uiv(location, count, value);
81774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
81784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
81794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
81804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
81814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) value,
81824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
81834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
81844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
81854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
81864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
81874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
81884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
81894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
81904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glUniform2uiv(GLint location, GLsizei count, const GLuint* value) {
81914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
81924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
81934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
81944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glUniform2uiv);
81954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
81964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument location
81974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_location = glmsg.add_args();
81984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->set_isarray(false);
81994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->set_type(GLMessage::DataType::INT);
82004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->add_intvalue(location);
82014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
82024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument count
82034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_count = glmsg.add_args();
82044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_isarray(false);
82054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_type(GLMessage::DataType::INT);
82064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->add_intvalue(count);
82074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
82084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument value
82094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_value = glmsg.add_args();
82104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_value->set_isarray(false);
821139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT64);
821239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->add_int64value((uintptr_t)value);
82134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
82144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
82154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
82164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
82174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glUniform2uiv(location, count, value);
82184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
82194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
82204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
82214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
82224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) value,
82234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
82244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
82254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
82264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
82274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
82284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
82294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
82304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
82314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glUniform3uiv(GLint location, GLsizei count, const GLuint* value) {
82324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
82334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
82344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
82354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glUniform3uiv);
82364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
82374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument location
82384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_location = glmsg.add_args();
82394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->set_isarray(false);
82404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->set_type(GLMessage::DataType::INT);
82414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->add_intvalue(location);
82424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
82434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument count
82444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_count = glmsg.add_args();
82454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_isarray(false);
82464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_type(GLMessage::DataType::INT);
82474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->add_intvalue(count);
82484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
82494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument value
82504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_value = glmsg.add_args();
82514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_value->set_isarray(false);
825239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT64);
825339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->add_int64value((uintptr_t)value);
82544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
82554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
82564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
82574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
82584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glUniform3uiv(location, count, value);
82594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
82604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
82614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
82624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
82634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) value,
82644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
82654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
82664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
82674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
82684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
82694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
82704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
82714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
82724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glUniform4uiv(GLint location, GLsizei count, const GLuint* value) {
82734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
82744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
82754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
82764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glUniform4uiv);
82774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
82784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument location
82794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_location = glmsg.add_args();
82804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->set_isarray(false);
82814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->set_type(GLMessage::DataType::INT);
82824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_location->add_intvalue(location);
82834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
82844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument count
82854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_count = glmsg.add_args();
82864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_isarray(false);
82874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_type(GLMessage::DataType::INT);
82884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->add_intvalue(count);
82894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
82904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument value
82914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_value = glmsg.add_args();
82924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_value->set_isarray(false);
829339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT64);
829439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->add_int64value((uintptr_t)value);
82954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
82964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
82974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
82984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
82994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glUniform4uiv(location, count, value);
83004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
83014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
83024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
83034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
83044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) value,
83054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
83064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
83074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
83084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
83094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
83104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
83114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
83124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
83134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint* value) {
83144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
83154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
83164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
83174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glClearBufferiv);
83184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
83194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument buffer
83204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_buffer = glmsg.add_args();
83214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_buffer->set_isarray(false);
83224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_buffer->set_type(GLMessage::DataType::ENUM);
83234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_buffer->add_intvalue((int)buffer);
83244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
83254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument drawbuffer
83264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_drawbuffer = glmsg.add_args();
83274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_drawbuffer->set_isarray(false);
83284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_drawbuffer->set_type(GLMessage::DataType::INT);
83294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_drawbuffer->add_intvalue(drawbuffer);
83304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
83314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument value
83324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_value = glmsg.add_args();
83334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_value->set_isarray(false);
833439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT64);
833539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->add_int64value((uintptr_t)value);
83364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
83374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
83384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
83394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
83404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glClearBufferiv(buffer, drawbuffer, value);
83414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
83424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
83434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
83444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
83454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) value,
83464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
83474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
83484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
83494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
83504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
83514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
83524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
83534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
83544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint* value) {
83554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
83564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
83574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
83584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glClearBufferuiv);
83594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
83604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument buffer
83614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_buffer = glmsg.add_args();
83624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_buffer->set_isarray(false);
83634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_buffer->set_type(GLMessage::DataType::ENUM);
83644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_buffer->add_intvalue((int)buffer);
83654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
83664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument drawbuffer
83674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_drawbuffer = glmsg.add_args();
83684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_drawbuffer->set_isarray(false);
83694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_drawbuffer->set_type(GLMessage::DataType::INT);
83704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_drawbuffer->add_intvalue(drawbuffer);
83714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
83724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument value
83734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_value = glmsg.add_args();
83744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_value->set_isarray(false);
837539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT64);
837639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->add_int64value((uintptr_t)value);
83774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
83784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
83794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
83804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
83814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glClearBufferuiv(buffer, drawbuffer, value);
83824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
83834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
83844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
83854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
83864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) value,
83874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
83884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
83894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
83904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
83914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
83924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
83934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
83944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
83954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat* value) {
83964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
83974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
83984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
83994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glClearBufferfv);
84004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
84014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument buffer
84024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_buffer = glmsg.add_args();
84034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_buffer->set_isarray(false);
84044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_buffer->set_type(GLMessage::DataType::ENUM);
84054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_buffer->add_intvalue((int)buffer);
84064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
84074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument drawbuffer
84084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_drawbuffer = glmsg.add_args();
84094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_drawbuffer->set_isarray(false);
84104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_drawbuffer->set_type(GLMessage::DataType::INT);
84114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_drawbuffer->add_intvalue(drawbuffer);
84124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
84134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument value
84144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_value = glmsg.add_args();
84154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_value->set_isarray(false);
841639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT64);
841739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->add_int64value((uintptr_t)value);
84184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
84194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
84204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
84214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
84224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glClearBufferfv(buffer, drawbuffer, value);
84234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
84244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
84254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
84264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
84274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) value,
84284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
84294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
84304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
84314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
84324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
84334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
84344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
84354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
84364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) {
84374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
84384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
84394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
84404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glClearBufferfi);
84414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
84424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument buffer
84434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_buffer = glmsg.add_args();
84444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_buffer->set_isarray(false);
84454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_buffer->set_type(GLMessage::DataType::ENUM);
84464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_buffer->add_intvalue((int)buffer);
84474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
84484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument drawbuffer
84494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_drawbuffer = glmsg.add_args();
84504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_drawbuffer->set_isarray(false);
84514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_drawbuffer->set_type(GLMessage::DataType::INT);
84524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_drawbuffer->add_intvalue(drawbuffer);
84534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
84544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument depth
84554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_depth = glmsg.add_args();
84564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_depth->set_isarray(false);
84574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_depth->set_type(GLMessage::DataType::FLOAT);
84584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_depth->add_floatvalue(depth);
84594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
84604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument stencil
84614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_stencil = glmsg.add_args();
84624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_stencil->set_isarray(false);
84634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_stencil->set_type(GLMessage::DataType::INT);
84644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_stencil->add_intvalue(stencil);
84654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
84664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
84674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
84684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
84694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glClearBufferfi(buffer, drawbuffer, depth, stencil);
84704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
84714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
84724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
84734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
84744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
84754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
84764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
84774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
84784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
84794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
84804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
84814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
84824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallconst GLubyte* GLTrace_glGetStringi(GLenum name, GLuint index) {
84834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
84844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
84854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
84864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glGetStringi);
84874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
84884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument name
84894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_name = glmsg.add_args();
84904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_name->set_isarray(false);
84914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_name->set_type(GLMessage::DataType::ENUM);
84924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_name->add_intvalue((int)name);
84934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
84944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument index
84954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_index = glmsg.add_args();
84964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->set_isarray(false);
84974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->set_type(GLMessage::DataType::INT);
84984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->add_intvalue(index);
84994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
85004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
85014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
85024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
85034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    const GLubyte* retValue = glContext->hooks->gl.glGetStringi(name, index);
85044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
85054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
85064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
85074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // set return value
85084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
85094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    rt->set_isarray(false);
851039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    rt->set_type(GLMessage::DataType::INT64);
851139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    rt->add_int64value((uintptr_t)retValue);
85124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
85134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
85144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) retValue,
85154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
85164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
85174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
85184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
85194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
85204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
85214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
85224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    return retValue;
85234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
85244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
85254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) {
85264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
85274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
85284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
85294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glCopyBufferSubData);
85304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
85314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument readTarget
85324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_readTarget = glmsg.add_args();
85334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_readTarget->set_isarray(false);
85344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_readTarget->set_type(GLMessage::DataType::ENUM);
85354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_readTarget->add_intvalue((int)readTarget);
85364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
85374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument writeTarget
85384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_writeTarget = glmsg.add_args();
85394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_writeTarget->set_isarray(false);
85404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_writeTarget->set_type(GLMessage::DataType::ENUM);
85414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_writeTarget->add_intvalue((int)writeTarget);
85424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
85434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument readOffset
85444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_readOffset = glmsg.add_args();
85454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_readOffset->set_isarray(false);
85464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_readOffset->set_type(GLMessage::DataType::INT);
85474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_readOffset->add_intvalue(readOffset);
85484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
85494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument writeOffset
85504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_writeOffset = glmsg.add_args();
85514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_writeOffset->set_isarray(false);
85524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_writeOffset->set_type(GLMessage::DataType::INT);
85534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_writeOffset->add_intvalue(writeOffset);
85544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
85554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument size
85564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_size = glmsg.add_args();
85574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_size->set_isarray(false);
85584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_size->set_type(GLMessage::DataType::INT);
85594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_size->add_intvalue(size);
85604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
85614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
85624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
85634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
85644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glCopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size);
85654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
85664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
85674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
85684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
85694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
85704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
85714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
85724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
85734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
85744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
85754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
85764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
85774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const* uniformNames, GLuint* uniformIndices) {
85784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
85794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
85804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
85814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glGetUniformIndices);
85824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
85834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument program
85844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_program = glmsg.add_args();
85854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->set_isarray(false);
85864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->set_type(GLMessage::DataType::INT);
85874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->add_intvalue(program);
85884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
85894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument uniformCount
85904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_uniformCount = glmsg.add_args();
85914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_uniformCount->set_isarray(false);
85924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_uniformCount->set_type(GLMessage::DataType::INT);
85934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_uniformCount->add_intvalue(uniformCount);
85944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
85954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument uniformNames
85964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_uniformNames = glmsg.add_args();
85974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_uniformNames->set_isarray(false);
859839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_uniformNames->set_type(GLMessage::DataType::INT64);
859939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_uniformNames->add_int64value((uintptr_t)uniformNames);
86004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
86014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument uniformIndices
86024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_uniformIndices = glmsg.add_args();
86034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_uniformIndices->set_isarray(false);
860439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_uniformIndices->set_type(GLMessage::DataType::INT64);
860539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_uniformIndices->add_int64value((uintptr_t)uniformIndices);
86064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
86074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
86084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
86094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
86104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glGetUniformIndices(program, uniformCount, uniformNames, uniformIndices);
86114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
86124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
86134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
86144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
86154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) uniformNames,
86164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) uniformIndices,
86174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
86184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
86194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
86204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
86214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
86224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
86234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
86244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
86254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params) {
86264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
86274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
86284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
86294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glGetActiveUniformsiv);
86304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
86314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument program
86324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_program = glmsg.add_args();
86334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->set_isarray(false);
86344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->set_type(GLMessage::DataType::INT);
86354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->add_intvalue(program);
86364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
86374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument uniformCount
86384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_uniformCount = glmsg.add_args();
86394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_uniformCount->set_isarray(false);
86404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_uniformCount->set_type(GLMessage::DataType::INT);
86414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_uniformCount->add_intvalue(uniformCount);
86424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
86434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument uniformIndices
86444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_uniformIndices = glmsg.add_args();
86454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_uniformIndices->set_isarray(false);
864639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_uniformIndices->set_type(GLMessage::DataType::INT64);
864739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_uniformIndices->add_int64value((uintptr_t)uniformIndices);
86484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
86494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument pname
86504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_pname = glmsg.add_args();
86514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_isarray(false);
86524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_type(GLMessage::DataType::ENUM);
86534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->add_intvalue((int)pname);
86544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
86554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument params
86564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_params = glmsg.add_args();
86574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_params->set_isarray(false);
865839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
865939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
86604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
86614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
86624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
86634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
86644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glGetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params);
86654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
86664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
86674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
86684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
86694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) uniformIndices,
86704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) params,
86714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
86724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
86734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
86744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
86754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
86764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
86774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
86784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
86794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse HallGLuint GLTrace_glGetUniformBlockIndex(GLuint program, const GLchar* uniformBlockName) {
86804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
86814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
86824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
86834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glGetUniformBlockIndex);
86844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
86854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument program
86864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_program = glmsg.add_args();
86874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->set_isarray(false);
86884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->set_type(GLMessage::DataType::INT);
86894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->add_intvalue(program);
86904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
86914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument uniformBlockName
86924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_uniformBlockName = glmsg.add_args();
86934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_uniformBlockName->set_isarray(false);
869439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_uniformBlockName->set_type(GLMessage::DataType::INT64);
869539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_uniformBlockName->add_int64value((uintptr_t)uniformBlockName);
86964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
86974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
86984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
86994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
87004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLuint retValue = glContext->hooks->gl.glGetUniformBlockIndex(program, uniformBlockName);
87014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
87024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
87034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
87044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // set return value
87054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
87064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    rt->set_isarray(false);
87074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    rt->set_type(GLMessage::DataType::INT);
87084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    rt->add_intvalue(retValue);
87094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
87104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
87114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) uniformBlockName,
87124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
87134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
87144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
87154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
87164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
87174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
87184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
87194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    return retValue;
87204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
87214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
87224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params) {
87234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
87244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
87254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
87264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glGetActiveUniformBlockiv);
87274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
87284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument program
87294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_program = glmsg.add_args();
87304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->set_isarray(false);
87314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->set_type(GLMessage::DataType::INT);
87324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->add_intvalue(program);
87334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
87344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument uniformBlockIndex
87354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_uniformBlockIndex = glmsg.add_args();
87364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_uniformBlockIndex->set_isarray(false);
87374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_uniformBlockIndex->set_type(GLMessage::DataType::INT);
87384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_uniformBlockIndex->add_intvalue(uniformBlockIndex);
87394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
87404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument pname
87414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_pname = glmsg.add_args();
87424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_isarray(false);
87434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_type(GLMessage::DataType::ENUM);
87444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->add_intvalue((int)pname);
87454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
87464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument params
87474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_params = glmsg.add_args();
87484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_params->set_isarray(false);
874939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
875039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
87514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
87524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
87534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
87544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
87554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glGetActiveUniformBlockiv(program, uniformBlockIndex, pname, params);
87564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
87574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
87584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
87594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
87604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) params,
87614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
87624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
87634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
87644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
87654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
87664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
87674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
87684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
87694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName) {
87704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
87714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
87724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
87734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glGetActiveUniformBlockName);
87744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
87754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument program
87764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_program = glmsg.add_args();
87774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->set_isarray(false);
87784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->set_type(GLMessage::DataType::INT);
87794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->add_intvalue(program);
87804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
87814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument uniformBlockIndex
87824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_uniformBlockIndex = glmsg.add_args();
87834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_uniformBlockIndex->set_isarray(false);
87844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_uniformBlockIndex->set_type(GLMessage::DataType::INT);
87854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_uniformBlockIndex->add_intvalue(uniformBlockIndex);
87864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
87874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument bufSize
87884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_bufSize = glmsg.add_args();
87894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_bufSize->set_isarray(false);
87904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_bufSize->set_type(GLMessage::DataType::INT);
87914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_bufSize->add_intvalue(bufSize);
87924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
87934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument length
87944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_length = glmsg.add_args();
87954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_length->set_isarray(false);
879639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->set_type(GLMessage::DataType::INT64);
879739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->add_int64value((uintptr_t)length);
87984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
87994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument uniformBlockName
88004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_uniformBlockName = glmsg.add_args();
88014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_uniformBlockName->set_isarray(false);
880239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_uniformBlockName->set_type(GLMessage::DataType::INT64);
880339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_uniformBlockName->add_int64value((uintptr_t)uniformBlockName);
88044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
88054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
88064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
88074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
88084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glGetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName);
88094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
88104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
88114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
88124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
88134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) length,
88144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) uniformBlockName,
88154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
88164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
88174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
88184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
88194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
88204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
88214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
88224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
88234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) {
88244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
88254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
88264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
88274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glUniformBlockBinding);
88284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
88294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument program
88304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_program = glmsg.add_args();
88314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->set_isarray(false);
88324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->set_type(GLMessage::DataType::INT);
88334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->add_intvalue(program);
88344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
88354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument uniformBlockIndex
88364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_uniformBlockIndex = glmsg.add_args();
88374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_uniformBlockIndex->set_isarray(false);
88384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_uniformBlockIndex->set_type(GLMessage::DataType::INT);
88394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_uniformBlockIndex->add_intvalue(uniformBlockIndex);
88404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
88414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument uniformBlockBinding
88424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_uniformBlockBinding = glmsg.add_args();
88434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_uniformBlockBinding->set_isarray(false);
88444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_uniformBlockBinding->set_type(GLMessage::DataType::INT);
88454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_uniformBlockBinding->add_intvalue(uniformBlockBinding);
88464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
88474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
88484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
88494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
88504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glUniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding);
88514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
88524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
88534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
88544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
88554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
88564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
88574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
88584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
88594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
88604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
88614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
88624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
88634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount) {
88644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
88654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
88664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
88674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glDrawArraysInstanced);
88684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
88694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument mode
88704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_mode = glmsg.add_args();
88714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_mode->set_isarray(false);
88724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_mode->set_type(GLMessage::DataType::ENUM);
88734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_mode->add_intvalue((int)mode);
88744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
88754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument first
88764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_first = glmsg.add_args();
88774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_first->set_isarray(false);
88784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_first->set_type(GLMessage::DataType::INT);
88794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_first->add_intvalue(first);
88804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
88814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument count
88824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_count = glmsg.add_args();
88834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_isarray(false);
88844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_type(GLMessage::DataType::INT);
88854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->add_intvalue(count);
88864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
88874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument instanceCount
88884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_instanceCount = glmsg.add_args();
88894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_instanceCount->set_isarray(false);
88904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_instanceCount->set_type(GLMessage::DataType::INT);
88914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_instanceCount->add_intvalue(instanceCount);
88924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
88934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
88944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
88954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
88964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glDrawArraysInstanced(mode, first, count, instanceCount);
88974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
88984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
88994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
89004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
89014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
89024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
89034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
89044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
89054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
89064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
89074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
89084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
89094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices, GLsizei instanceCount) {
89104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
89114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
89124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
89134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glDrawElementsInstanced);
89144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
89154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument mode
89164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_mode = glmsg.add_args();
89174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_mode->set_isarray(false);
89184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_mode->set_type(GLMessage::DataType::ENUM);
89194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_mode->add_intvalue((int)mode);
89204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
89214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument count
89224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_count = glmsg.add_args();
89234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_isarray(false);
89244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_type(GLMessage::DataType::INT);
89254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->add_intvalue(count);
89264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
89274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument type
89284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_type = glmsg.add_args();
89294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_type->set_isarray(false);
89304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_type->set_type(GLMessage::DataType::ENUM);
89314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_type->add_intvalue((int)type);
89324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
89334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument indices
89344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_indices = glmsg.add_args();
89354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_indices->set_isarray(false);
893639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_indices->set_type(GLMessage::DataType::INT64);
893739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_indices->add_int64value((uintptr_t)indices);
89384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
89394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument instanceCount
89404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_instanceCount = glmsg.add_args();
89414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_instanceCount->set_isarray(false);
89424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_instanceCount->set_type(GLMessage::DataType::INT);
89434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_instanceCount->add_intvalue(instanceCount);
89444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
89454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
89464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
89474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
89484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glDrawElementsInstanced(mode, count, type, indices, instanceCount);
89494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
89504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
89514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
89524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
89534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) indices,
89544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
89554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
89564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
89574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
89584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
89594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
89604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
89614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
89624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse HallGLsync GLTrace_glFenceSync(GLenum condition, GLbitfield flags) {
89634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
89644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
89654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
89664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glFenceSync);
89674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
89684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument condition
89694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_condition = glmsg.add_args();
89704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_condition->set_isarray(false);
89714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_condition->set_type(GLMessage::DataType::ENUM);
89724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_condition->add_intvalue((int)condition);
89734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
89744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument flags
89754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_flags = glmsg.add_args();
89764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_flags->set_isarray(false);
89774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_flags->set_type(GLMessage::DataType::INT);
89784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_flags->add_intvalue(flags);
89794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
89804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
89814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
89824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
89834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLsync retValue = glContext->hooks->gl.glFenceSync(condition, flags);
89844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
89854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
89864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
89874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // set return value
89884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
89894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    rt->set_isarray(false);
899039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    rt->set_type(GLMessage::DataType::INT64);
899139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    rt->add_int64value((uintptr_t)retValue);
89924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
89934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
89944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) retValue,
89954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
89964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
89974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
89984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
89994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
90004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
90014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
90024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    return retValue;
90034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
90044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
90054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse HallGLboolean GLTrace_glIsSync(GLsync sync) {
90064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
90074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
90084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
90094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glIsSync);
90104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
90114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument sync
90124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_sync = glmsg.add_args();
90134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_sync->set_isarray(false);
901439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_sync->set_type(GLMessage::DataType::INT64);
901539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_sync->add_int64value((uintptr_t)sync);
90164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
90174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
90184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
90194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
90204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLboolean retValue = glContext->hooks->gl.glIsSync(sync);
90214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
90224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
90234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
90244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // set return value
90254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
90264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    rt->set_isarray(false);
90274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    rt->set_type(GLMessage::DataType::BOOL);
90284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    rt->add_boolvalue(retValue);
90294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
90304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
90314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) sync,
90324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
90334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
90344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
90354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
90364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
90374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
90384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
90394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    return retValue;
90404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
90414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
90424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glDeleteSync(GLsync sync) {
90434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
90444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
90454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
90464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glDeleteSync);
90474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
90484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument sync
90494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_sync = glmsg.add_args();
90504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_sync->set_isarray(false);
905139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_sync->set_type(GLMessage::DataType::INT64);
905239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_sync->add_int64value((uintptr_t)sync);
90534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
90544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
90554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
90564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
90574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glDeleteSync(sync);
90584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
90594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
90604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
90614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
90624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) sync,
90634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
90644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
90654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
90664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
90674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
90684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
90694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
90704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
90714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse HallGLenum GLTrace_glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) {
90724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
90734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
90744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
90754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glClientWaitSync);
90764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
90774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument sync
90784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_sync = glmsg.add_args();
90794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_sync->set_isarray(false);
908039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_sync->set_type(GLMessage::DataType::INT64);
908139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_sync->add_int64value((uintptr_t)sync);
90824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
90834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument flags
90844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_flags = glmsg.add_args();
90854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_flags->set_isarray(false);
90864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_flags->set_type(GLMessage::DataType::INT);
90874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_flags->add_intvalue(flags);
90884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
90894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument timeout
90904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_timeout = glmsg.add_args();
90914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_timeout->set_isarray(false);
90924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_timeout->set_type(GLMessage::DataType::INT64);
90934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_timeout->add_int64value(timeout);
90944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
90954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
90964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
90974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
90984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLenum retValue = glContext->hooks->gl.glClientWaitSync(sync, flags, timeout);
90994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
91004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
91014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
91024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // set return value
91034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
91044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    rt->set_isarray(false);
91054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    rt->set_type(GLMessage::DataType::ENUM);
91064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    rt->add_intvalue((int)retValue);
91074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
91084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
91094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) sync,
91104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
91114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
91124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
91134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
91144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
91154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
91164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
91174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    return retValue;
91184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
91194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
91204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) {
91214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
91224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
91234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
91244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glWaitSync);
91254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
91264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument sync
91274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_sync = glmsg.add_args();
91284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_sync->set_isarray(false);
912939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_sync->set_type(GLMessage::DataType::INT64);
913039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_sync->add_int64value((uintptr_t)sync);
91314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
91324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument flags
91334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_flags = glmsg.add_args();
91344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_flags->set_isarray(false);
91354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_flags->set_type(GLMessage::DataType::INT);
91364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_flags->add_intvalue(flags);
91374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
91384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument timeout
91394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_timeout = glmsg.add_args();
91404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_timeout->set_isarray(false);
91414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_timeout->set_type(GLMessage::DataType::INT64);
91424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_timeout->add_int64value(timeout);
91434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
91444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
91454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
91464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
91474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glWaitSync(sync, flags, timeout);
91484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
91494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
91504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
91514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
91524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) sync,
91534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
91544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
91554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
91564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
91574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
91584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
91594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
91604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
91614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glGetInteger64v(GLenum pname, GLint64* params) {
91624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
91634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
91644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
91654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glGetInteger64v);
91664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
91674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument pname
91684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_pname = glmsg.add_args();
91694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_isarray(false);
91704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_type(GLMessage::DataType::ENUM);
91714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->add_intvalue((int)pname);
91724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
91734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument params
91744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_params = glmsg.add_args();
91754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_params->set_isarray(false);
917639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
917739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
91784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
91794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
91804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
91814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
91824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glGetInteger64v(pname, params);
91834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
91844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
91854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
91864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
91874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) params,
91884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
91894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
91904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
91914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
91924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
91934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
91944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
91954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
91964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint* values) {
91974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
91984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
91994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
92004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glGetSynciv);
92014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
92024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument sync
92034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_sync = glmsg.add_args();
92044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_sync->set_isarray(false);
920539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_sync->set_type(GLMessage::DataType::INT64);
920639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_sync->add_int64value((uintptr_t)sync);
92074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
92084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument pname
92094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_pname = glmsg.add_args();
92104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_isarray(false);
92114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_type(GLMessage::DataType::ENUM);
92124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->add_intvalue((int)pname);
92134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
92144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument bufSize
92154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_bufSize = glmsg.add_args();
92164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_bufSize->set_isarray(false);
92174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_bufSize->set_type(GLMessage::DataType::INT);
92184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_bufSize->add_intvalue(bufSize);
92194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
92204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument length
92214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_length = glmsg.add_args();
92224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_length->set_isarray(false);
922339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->set_type(GLMessage::DataType::INT64);
922439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->add_int64value((uintptr_t)length);
92254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
92264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument values
92274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_values = glmsg.add_args();
92284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_values->set_isarray(false);
922939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_values->set_type(GLMessage::DataType::INT64);
923039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_values->add_int64value((uintptr_t)values);
92314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
92324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
92334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
92344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
92354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glGetSynciv(sync, pname, bufSize, length, values);
92364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
92374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
92384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
92394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
92404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) sync,
92414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) length,
92424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) values,
92434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
92444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
92454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
92464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
92474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
92484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
92494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
92504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
92514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glGetInteger64i_v(GLenum target, GLuint index, GLint64* data) {
92524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
92534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
92544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
92554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glGetInteger64i_v);
92564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
92574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument target
92584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_target = glmsg.add_args();
92594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_isarray(false);
92604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_type(GLMessage::DataType::ENUM);
92614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->add_intvalue((int)target);
92624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
92634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument index
92644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_index = glmsg.add_args();
92654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->set_isarray(false);
92664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->set_type(GLMessage::DataType::INT);
92674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->add_intvalue(index);
92684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
92694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument data
92704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_data = glmsg.add_args();
92714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_data->set_isarray(false);
927239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_data->set_type(GLMessage::DataType::INT64);
927339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_data->add_int64value((uintptr_t)data);
92744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
92754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
92764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
92774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
92784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glGetInteger64i_v(target, index, data);
92794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
92804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
92814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
92824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
92834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) data,
92844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
92854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
92864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
92874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
92884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
92894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
92904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
92914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
92924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64* params) {
92934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
92944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
92954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
92964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glGetBufferParameteri64v);
92974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
92984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument target
92994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_target = glmsg.add_args();
93004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_isarray(false);
93014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_type(GLMessage::DataType::ENUM);
93024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->add_intvalue((int)target);
93034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
93044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument pname
93054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_pname = glmsg.add_args();
93064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_isarray(false);
93074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_type(GLMessage::DataType::ENUM);
93084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->add_intvalue((int)pname);
93094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
93104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument params
93114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_params = glmsg.add_args();
93124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_params->set_isarray(false);
931339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
931439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
93154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
93164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
93174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
93184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
93194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glGetBufferParameteri64v(target, pname, params);
93204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
93214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
93224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
93234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
93244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) params,
93254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
93264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
93274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
93284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
93294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
93304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
93314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
93324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
93334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glGenSamplers(GLsizei count, GLuint* samplers) {
93344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
93354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
93364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
93374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glGenSamplers);
93384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
93394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument count
93404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_count = glmsg.add_args();
93414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_isarray(false);
93424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_type(GLMessage::DataType::INT);
93434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->add_intvalue(count);
93444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
93454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument samplers
93464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_samplers = glmsg.add_args();
93474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_samplers->set_isarray(false);
934839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_samplers->set_type(GLMessage::DataType::INT64);
934939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_samplers->add_int64value((uintptr_t)samplers);
93504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
93514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
93524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
93534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
93544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glGenSamplers(count, samplers);
93554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
93564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
93574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
93584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
93594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) samplers,
93604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
93614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
93624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
93634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
93644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
93654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
93664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
93674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
93684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glDeleteSamplers(GLsizei count, const GLuint* samplers) {
93694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
93704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
93714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
93724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glDeleteSamplers);
93734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
93744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument count
93754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_count = glmsg.add_args();
93764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_isarray(false);
93774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->set_type(GLMessage::DataType::INT);
93784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_count->add_intvalue(count);
93794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
93804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument samplers
93814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_samplers = glmsg.add_args();
93824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_samplers->set_isarray(false);
938339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_samplers->set_type(GLMessage::DataType::INT64);
938439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_samplers->add_int64value((uintptr_t)samplers);
93854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
93864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
93874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
93884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
93894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glDeleteSamplers(count, samplers);
93904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
93914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
93924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
93934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
93944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) samplers,
93954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
93964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
93974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
93984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
93994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
94004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
94014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
94024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
94034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse HallGLboolean GLTrace_glIsSampler(GLuint sampler) {
94044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
94054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
94064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
94074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glIsSampler);
94084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
94094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument sampler
94104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_sampler = glmsg.add_args();
94114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_sampler->set_isarray(false);
94124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_sampler->set_type(GLMessage::DataType::INT);
94134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_sampler->add_intvalue(sampler);
94144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
94154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
94164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
94174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
94184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLboolean retValue = glContext->hooks->gl.glIsSampler(sampler);
94194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
94204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
94214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
94224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // set return value
94234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
94244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    rt->set_isarray(false);
94254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    rt->set_type(GLMessage::DataType::BOOL);
94264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    rt->add_boolvalue(retValue);
94274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
94284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
94294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
94304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
94314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
94324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
94334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
94344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
94354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
94364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    return retValue;
94374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
94384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
94394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glBindSampler(GLuint unit, GLuint sampler) {
94404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
94414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
94424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
94434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glBindSampler);
94444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
94454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument unit
94464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_unit = glmsg.add_args();
94474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_unit->set_isarray(false);
94484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_unit->set_type(GLMessage::DataType::INT);
94494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_unit->add_intvalue(unit);
94504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
94514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument sampler
94524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_sampler = glmsg.add_args();
94534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_sampler->set_isarray(false);
94544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_sampler->set_type(GLMessage::DataType::INT);
94554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_sampler->add_intvalue(sampler);
94564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
94574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
94584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
94594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
94604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glBindSampler(unit, sampler);
94614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
94624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
94634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
94644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
94654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
94664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
94674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
94684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
94694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
94704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
94714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
94724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
94734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) {
94744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
94754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
94764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
94774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glSamplerParameteri);
94784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
94794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument sampler
94804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_sampler = glmsg.add_args();
94814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_sampler->set_isarray(false);
94824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_sampler->set_type(GLMessage::DataType::INT);
94834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_sampler->add_intvalue(sampler);
94844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
94854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument pname
94864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_pname = glmsg.add_args();
94874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_isarray(false);
94884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_type(GLMessage::DataType::ENUM);
94894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->add_intvalue((int)pname);
94904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
94914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument param
94924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_param = glmsg.add_args();
94934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_param->set_isarray(false);
94944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_param->set_type(GLMessage::DataType::INT);
94954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_param->add_intvalue(param);
94964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
94974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
94984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
94994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
95004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glSamplerParameteri(sampler, pname, param);
95014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
95024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
95034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
95044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
95054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
95064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
95074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
95084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
95094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
95104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
95114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
95124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
95134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint* param) {
95144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
95154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
95164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
95174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glSamplerParameteriv);
95184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
95194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument sampler
95204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_sampler = glmsg.add_args();
95214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_sampler->set_isarray(false);
95224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_sampler->set_type(GLMessage::DataType::INT);
95234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_sampler->add_intvalue(sampler);
95244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
95254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument pname
95264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_pname = glmsg.add_args();
95274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_isarray(false);
95284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_type(GLMessage::DataType::ENUM);
95294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->add_intvalue((int)pname);
95304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
95314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument param
95324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_param = glmsg.add_args();
95334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_param->set_isarray(false);
953439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT64);
953539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_param->add_int64value((uintptr_t)param);
95364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
95374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
95384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
95394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
95404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glSamplerParameteriv(sampler, pname, param);
95414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
95424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
95434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
95444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
95454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) param,
95464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
95474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
95484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
95494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
95504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
95514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
95524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
95534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
95544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) {
95554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
95564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
95574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
95584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glSamplerParameterf);
95594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
95604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument sampler
95614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_sampler = glmsg.add_args();
95624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_sampler->set_isarray(false);
95634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_sampler->set_type(GLMessage::DataType::INT);
95644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_sampler->add_intvalue(sampler);
95654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
95664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument pname
95674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_pname = glmsg.add_args();
95684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_isarray(false);
95694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_type(GLMessage::DataType::ENUM);
95704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->add_intvalue((int)pname);
95714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
95724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument param
95734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_param = glmsg.add_args();
95744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_param->set_isarray(false);
95754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_param->set_type(GLMessage::DataType::FLOAT);
95764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_param->add_floatvalue(param);
95774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
95784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
95794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
95804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
95814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glSamplerParameterf(sampler, pname, param);
95824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
95834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
95844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
95854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
95864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
95874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
95884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
95894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
95904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
95914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
95924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
95934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
95944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat* param) {
95954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
95964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
95974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
95984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glSamplerParameterfv);
95994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
96004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument sampler
96014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_sampler = glmsg.add_args();
96024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_sampler->set_isarray(false);
96034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_sampler->set_type(GLMessage::DataType::INT);
96044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_sampler->add_intvalue(sampler);
96054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
96064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument pname
96074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_pname = glmsg.add_args();
96084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_isarray(false);
96094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_type(GLMessage::DataType::ENUM);
96104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->add_intvalue((int)pname);
96114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
96124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument param
96134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_param = glmsg.add_args();
96144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_param->set_isarray(false);
961539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT64);
961639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_param->add_int64value((uintptr_t)param);
96174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
96184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
96194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
96204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
96214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glSamplerParameterfv(sampler, pname, param);
96224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
96234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
96244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
96254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
96264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) param,
96274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
96284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
96294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
96304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
96314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
96324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
96334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
96344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
96354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint* params) {
96364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
96374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
96384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
96394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glGetSamplerParameteriv);
96404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
96414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument sampler
96424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_sampler = glmsg.add_args();
96434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_sampler->set_isarray(false);
96444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_sampler->set_type(GLMessage::DataType::INT);
96454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_sampler->add_intvalue(sampler);
96464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
96474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument pname
96484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_pname = glmsg.add_args();
96494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_isarray(false);
96504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_type(GLMessage::DataType::ENUM);
96514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->add_intvalue((int)pname);
96524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
96534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument params
96544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_params = glmsg.add_args();
96554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_params->set_isarray(false);
965639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
965739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
96584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
96594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
96604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
96614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
96624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glGetSamplerParameteriv(sampler, pname, params);
96634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
96644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
96654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
96664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
96674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) params,
96684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
96694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
96704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
96714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
96724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
96734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
96744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
96754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
96764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat* params) {
96774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
96784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
96794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
96804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glGetSamplerParameterfv);
96814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
96824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument sampler
96834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_sampler = glmsg.add_args();
96844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_sampler->set_isarray(false);
96854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_sampler->set_type(GLMessage::DataType::INT);
96864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_sampler->add_intvalue(sampler);
96874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
96884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument pname
96894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_pname = glmsg.add_args();
96904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_isarray(false);
96914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_type(GLMessage::DataType::ENUM);
96924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->add_intvalue((int)pname);
96934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
96944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument params
96954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_params = glmsg.add_args();
96964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_params->set_isarray(false);
969739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
969839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
96994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
97004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
97014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
97024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
97034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glGetSamplerParameterfv(sampler, pname, params);
97044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
97054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
97064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
97074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
97084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) params,
97094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
97104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
97114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
97124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
97134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
97144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
97154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
97164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
97174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glVertexAttribDivisor(GLuint index, GLuint divisor) {
97184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
97194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
97204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
97214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glVertexAttribDivisor);
97224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
97234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument index
97244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_index = glmsg.add_args();
97254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->set_isarray(false);
97264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->set_type(GLMessage::DataType::INT);
97274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_index->add_intvalue(index);
97284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
97294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument divisor
97304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_divisor = glmsg.add_args();
97314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_divisor->set_isarray(false);
97324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_divisor->set_type(GLMessage::DataType::INT);
97334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_divisor->add_intvalue(divisor);
97344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
97354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
97364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
97374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
97384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glVertexAttribDivisor(index, divisor);
97394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
97404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
97414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
97424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
97434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
97444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
97454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
97464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
97474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
97484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
97494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
97504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
97514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glBindTransformFeedback(GLenum target, GLuint id) {
97524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
97534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
97544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
97554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glBindTransformFeedback);
97564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
97574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument target
97584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_target = glmsg.add_args();
97594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_isarray(false);
97604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_type(GLMessage::DataType::ENUM);
97614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->add_intvalue((int)target);
97624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
97634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument id
97644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_id = glmsg.add_args();
97654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_id->set_isarray(false);
97664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_id->set_type(GLMessage::DataType::INT);
97674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_id->add_intvalue(id);
97684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
97694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
97704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
97714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
97724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glBindTransformFeedback(target, id);
97734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
97744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
97754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
97764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
97774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
97784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
97794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
97804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
97814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
97824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
97834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
97844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
97854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glDeleteTransformFeedbacks(GLsizei n, const GLuint* ids) {
97864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
97874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
97884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
97894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glDeleteTransformFeedbacks);
97904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
97914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument n
97924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_n = glmsg.add_args();
97934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_n->set_isarray(false);
97944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_n->set_type(GLMessage::DataType::INT);
97954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_n->add_intvalue(n);
97964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
97974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument ids
97984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_ids = glmsg.add_args();
97994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_ids->set_isarray(false);
980039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_ids->set_type(GLMessage::DataType::INT64);
980139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_ids->add_int64value((uintptr_t)ids);
98024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
98034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
98044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
98054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
98064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glDeleteTransformFeedbacks(n, ids);
98074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
98084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
98094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
98104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
98114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) ids,
98124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
98134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
98144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
98154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
98164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
98174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
98184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
98194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
98204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glGenTransformFeedbacks(GLsizei n, GLuint* ids) {
98214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
98224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
98234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
98244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glGenTransformFeedbacks);
98254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
98264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument n
98274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_n = glmsg.add_args();
98284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_n->set_isarray(false);
98294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_n->set_type(GLMessage::DataType::INT);
98304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_n->add_intvalue(n);
98314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
98324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument ids
98334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_ids = glmsg.add_args();
98344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_ids->set_isarray(false);
983539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_ids->set_type(GLMessage::DataType::INT64);
983639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_ids->add_int64value((uintptr_t)ids);
98374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
98384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
98394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
98404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
98414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glGenTransformFeedbacks(n, ids);
98424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
98434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
98444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
98454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
98464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) ids,
98474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
98484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
98494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
98504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
98514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
98524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
98534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
98544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
98554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse HallGLboolean GLTrace_glIsTransformFeedback(GLuint id) {
98564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
98574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
98584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
98594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glIsTransformFeedback);
98604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
98614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument id
98624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_id = glmsg.add_args();
98634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_id->set_isarray(false);
98644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_id->set_type(GLMessage::DataType::INT);
98654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_id->add_intvalue(id);
98664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
98674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
98684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
98694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
98704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLboolean retValue = glContext->hooks->gl.glIsTransformFeedback(id);
98714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
98724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
98734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
98744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // set return value
98754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
98764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    rt->set_isarray(false);
98774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    rt->set_type(GLMessage::DataType::BOOL);
98784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    rt->add_boolvalue(retValue);
98794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
98804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
98814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
98824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
98834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
98844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
98854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
98864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
98874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
98884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    return retValue;
98894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
98904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
98914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glPauseTransformFeedback(void) {
98924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
98934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
98944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
98954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glPauseTransformFeedback);
98964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
98974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
98984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
98994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
99004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glPauseTransformFeedback();
99014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
99024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
99034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
99044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
99054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
99064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
99074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
99084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
99094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
99104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
99114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
99124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
99134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glResumeTransformFeedback(void) {
99144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
99154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
99164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
99174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glResumeTransformFeedback);
99184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
99194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
99204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
99214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
99224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glResumeTransformFeedback();
99234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
99244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
99254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
99264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
99274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
99284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
99294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
99304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
99314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
99324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
99334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
99344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
99354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, GLvoid* binary) {
99364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
99374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
99384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
99394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glGetProgramBinary);
99404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
99414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument program
99424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_program = glmsg.add_args();
99434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->set_isarray(false);
99444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->set_type(GLMessage::DataType::INT);
99454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->add_intvalue(program);
99464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
99474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument bufSize
99484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_bufSize = glmsg.add_args();
99494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_bufSize->set_isarray(false);
99504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_bufSize->set_type(GLMessage::DataType::INT);
99514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_bufSize->add_intvalue(bufSize);
99524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
99534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument length
99544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_length = glmsg.add_args();
99554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_length->set_isarray(false);
995639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->set_type(GLMessage::DataType::INT64);
995739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->add_int64value((uintptr_t)length);
99584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
99594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument binaryFormat
99604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_binaryFormat = glmsg.add_args();
99614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_binaryFormat->set_isarray(false);
996239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_binaryFormat->set_type(GLMessage::DataType::INT64);
996339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_binaryFormat->add_int64value((uintptr_t)binaryFormat);
99644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
99654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument binary
99664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_binary = glmsg.add_args();
99674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_binary->set_isarray(false);
996839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_binary->set_type(GLMessage::DataType::INT64);
996939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_binary->add_int64value((uintptr_t)binary);
99704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
99714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
99724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
99734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
99744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glGetProgramBinary(program, bufSize, length, binaryFormat, binary);
99754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
99764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
99774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
99784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
99794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) length,
99804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) binaryFormat,
99814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) binary,
99824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
99834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
99844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
99854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
99864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
99874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
99884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
99894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
99904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid* binary, GLsizei length) {
99914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
99924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
99934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
99944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glProgramBinary);
99954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
99964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument program
99974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_program = glmsg.add_args();
99984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->set_isarray(false);
99994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->set_type(GLMessage::DataType::INT);
100004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->add_intvalue(program);
100014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
100024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument binaryFormat
100034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_binaryFormat = glmsg.add_args();
100044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_binaryFormat->set_isarray(false);
100054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_binaryFormat->set_type(GLMessage::DataType::ENUM);
100064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_binaryFormat->add_intvalue((int)binaryFormat);
100074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
100084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument binary
100094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_binary = glmsg.add_args();
100104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_binary->set_isarray(false);
1001139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_binary->set_type(GLMessage::DataType::INT64);
1001239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_binary->add_int64value((uintptr_t)binary);
100134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
100144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument length
100154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_length = glmsg.add_args();
100164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_length->set_isarray(false);
100174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_length->set_type(GLMessage::DataType::INT);
100184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_length->add_intvalue(length);
100194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
100204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
100214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
100224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
100234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glProgramBinary(program, binaryFormat, binary, length);
100244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
100254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
100264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
100274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
100284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) binary,
100294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
100304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
100314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
100324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
100334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
100344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
100354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
100364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
100374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glProgramParameteri(GLuint program, GLenum pname, GLint value) {
100384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
100394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
100404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
100414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glProgramParameteri);
100424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
100434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument program
100444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_program = glmsg.add_args();
100454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->set_isarray(false);
100464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->set_type(GLMessage::DataType::INT);
100474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_program->add_intvalue(program);
100484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
100494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument pname
100504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_pname = glmsg.add_args();
100514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_isarray(false);
100524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_type(GLMessage::DataType::ENUM);
100534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->add_intvalue((int)pname);
100544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
100554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument value
100564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_value = glmsg.add_args();
100574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_value->set_isarray(false);
100584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_value->set_type(GLMessage::DataType::INT);
100594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_value->add_intvalue(value);
100604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
100614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
100624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
100634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
100644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glProgramParameteri(program, pname, value);
100654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
100664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
100674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
100684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
100694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
100704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
100714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
100724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
100734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
100744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
100754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
100764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
100774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum* attachments) {
100784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
100794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
100804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
100814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glInvalidateFramebuffer);
100824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
100834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument target
100844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_target = glmsg.add_args();
100854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_isarray(false);
100864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_type(GLMessage::DataType::ENUM);
100874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->add_intvalue((int)target);
100884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
100894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument numAttachments
100904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_numAttachments = glmsg.add_args();
100914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_numAttachments->set_isarray(false);
100924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_numAttachments->set_type(GLMessage::DataType::INT);
100934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_numAttachments->add_intvalue(numAttachments);
100944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
100954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument attachments
100964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_attachments = glmsg.add_args();
100974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_attachments->set_isarray(false);
1009839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_attachments->set_type(GLMessage::DataType::INT64);
1009939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_attachments->add_int64value((uintptr_t)attachments);
101004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
101014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
101024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
101034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
101044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glInvalidateFramebuffer(target, numAttachments, attachments);
101054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
101064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
101074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
101084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
101094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) attachments,
101104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
101114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
101124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
101134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
101144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
101154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
101164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
101174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
101184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height) {
101194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
101204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
101214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
101224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glInvalidateSubFramebuffer);
101234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
101244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument target
101254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_target = glmsg.add_args();
101264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_isarray(false);
101274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_type(GLMessage::DataType::ENUM);
101284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->add_intvalue((int)target);
101294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
101304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument numAttachments
101314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_numAttachments = glmsg.add_args();
101324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_numAttachments->set_isarray(false);
101334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_numAttachments->set_type(GLMessage::DataType::INT);
101344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_numAttachments->add_intvalue(numAttachments);
101354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
101364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument attachments
101374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_attachments = glmsg.add_args();
101384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_attachments->set_isarray(false);
1013939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_attachments->set_type(GLMessage::DataType::INT64);
1014039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_attachments->add_int64value((uintptr_t)attachments);
101414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
101424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument x
101434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_x = glmsg.add_args();
101444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_x->set_isarray(false);
101454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_x->set_type(GLMessage::DataType::INT);
101464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_x->add_intvalue(x);
101474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
101484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument y
101494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_y = glmsg.add_args();
101504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_y->set_isarray(false);
101514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_y->set_type(GLMessage::DataType::INT);
101524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_y->add_intvalue(y);
101534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
101544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument width
101554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_width = glmsg.add_args();
101564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_width->set_isarray(false);
101574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_width->set_type(GLMessage::DataType::INT);
101584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_width->add_intvalue(width);
101594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
101604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument height
101614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_height = glmsg.add_args();
101624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_height->set_isarray(false);
101634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_height->set_type(GLMessage::DataType::INT);
101644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_height->add_intvalue(height);
101654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
101664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
101674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
101684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
101694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glInvalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height);
101704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
101714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
101724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
101734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
101744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) attachments,
101754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
101764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
101774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
101784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
101794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
101804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
101814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
101824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
101834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) {
101844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
101854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
101864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
101874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glTexStorage2D);
101884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
101894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument target
101904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_target = glmsg.add_args();
101914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_isarray(false);
101924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_type(GLMessage::DataType::ENUM);
101934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->add_intvalue((int)target);
101944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
101954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument levels
101964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_levels = glmsg.add_args();
101974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_levels->set_isarray(false);
101984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_levels->set_type(GLMessage::DataType::INT);
101994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_levels->add_intvalue(levels);
102004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
102014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument internalformat
102024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_internalformat = glmsg.add_args();
102034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_internalformat->set_isarray(false);
102044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_internalformat->set_type(GLMessage::DataType::ENUM);
102054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_internalformat->add_intvalue((int)internalformat);
102064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
102074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument width
102084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_width = glmsg.add_args();
102094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_width->set_isarray(false);
102104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_width->set_type(GLMessage::DataType::INT);
102114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_width->add_intvalue(width);
102124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
102134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument height
102144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_height = glmsg.add_args();
102154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_height->set_isarray(false);
102164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_height->set_type(GLMessage::DataType::INT);
102174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_height->add_intvalue(height);
102184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
102194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
102204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
102214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
102224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glTexStorage2D(target, levels, internalformat, width, height);
102234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
102244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
102254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
102264774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
102274774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
102284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
102294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
102304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
102314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
102324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
102334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
102344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
102354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) {
102364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
102374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
102384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
102394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glTexStorage3D);
102404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
102414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument target
102424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_target = glmsg.add_args();
102434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_isarray(false);
102444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_type(GLMessage::DataType::ENUM);
102454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->add_intvalue((int)target);
102464774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
102474774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument levels
102484774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_levels = glmsg.add_args();
102494774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_levels->set_isarray(false);
102504774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_levels->set_type(GLMessage::DataType::INT);
102514774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_levels->add_intvalue(levels);
102524774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
102534774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument internalformat
102544774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_internalformat = glmsg.add_args();
102554774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_internalformat->set_isarray(false);
102564774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_internalformat->set_type(GLMessage::DataType::ENUM);
102574774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_internalformat->add_intvalue((int)internalformat);
102584774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
102594774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument width
102604774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_width = glmsg.add_args();
102614774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_width->set_isarray(false);
102624774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_width->set_type(GLMessage::DataType::INT);
102634774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_width->add_intvalue(width);
102644774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
102654774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument height
102664774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_height = glmsg.add_args();
102674774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_height->set_isarray(false);
102684774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_height->set_type(GLMessage::DataType::INT);
102694774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_height->add_intvalue(height);
102704774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
102714774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument depth
102724774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_depth = glmsg.add_args();
102734774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_depth->set_isarray(false);
102744774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_depth->set_type(GLMessage::DataType::INT);
102754774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_depth->add_intvalue(depth);
102764774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
102774774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
102784774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
102794774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
102804774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glTexStorage3D(target, levels, internalformat, width, height, depth);
102814774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
102824774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
102834774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
102844774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
102854774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
102864774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
102874774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
102884774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
102894774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
102904774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
102914774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
102924774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
102934774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hallvoid GLTrace_glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params) {
102944774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage glmsg;
102954774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLTraceContext *glContext = getGLTraceContext();
102964774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
102974774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glmsg.set_function(GLMessage::glGetInternalformativ);
102984774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
102994774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument target
103004774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_target = glmsg.add_args();
103014774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_isarray(false);
103024774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->set_type(GLMessage::DataType::ENUM);
103034774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_target->add_intvalue((int)target);
103044774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
103054774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument internalformat
103064774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_internalformat = glmsg.add_args();
103074774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_internalformat->set_isarray(false);
103084774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_internalformat->set_type(GLMessage::DataType::ENUM);
103094774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_internalformat->add_intvalue((int)internalformat);
103104774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
103114774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument pname
103124774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_pname = glmsg.add_args();
103134774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_isarray(false);
103144774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->set_type(GLMessage::DataType::ENUM);
103154774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_pname->add_intvalue((int)pname);
103164774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
103174774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument bufSize
103184774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_bufSize = glmsg.add_args();
103194774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_bufSize->set_isarray(false);
103204774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_bufSize->set_type(GLMessage::DataType::INT);
103214774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_bufSize->add_intvalue(bufSize);
103224774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
103234774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // copy argument params
103244774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    GLMessage_DataType *arg_params = glmsg.add_args();
103254774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    arg_params->set_isarray(false);
1032639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1032739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
103284774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
103294774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    // call function
103304774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
103314774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
103324774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->hooks->gl.glGetInternalformativ(target, internalformat, pname, bufSize, params);
103334774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
103344774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
103354774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
103364774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    void *pointerArgs[] = {
103374774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall        (void *) params,
103384774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    };
103394774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
103404774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    fixupGLMessage(glContext, wallStartTime, wallEndTime,
103414774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              threadStartTime, threadEndTime,
103424774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall                              &glmsg, pointerArgs);
103434774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall    glContext->traceGLMessage(&glmsg);
103444774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall}
103454774338bd0ad1ebe42c311fd0c72f13786b5c800Jesse Hall
103460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
103470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy// Definitions for GL2Ext APIs
103480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
103490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image) {
103500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
103510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
103520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
103530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glEGLImageTargetTexture2DOES);
103540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
103550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
103560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
103570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
103580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
103590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
103600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
103610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument image
103620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_image = glmsg.add_args();
103630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_image->set_isarray(false);
1036439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_image->set_type(GLMessage::DataType::INT64);
1036539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_image->add_int64value((uintptr_t)image);
103660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
103670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1036805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1036905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
103700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glEGLImageTargetTexture2DOES(target, image);
1037105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1037205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
103730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
103749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
103759801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) image,
103769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
103779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1037805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1037905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
103809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1038193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
103820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
103830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
103840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glEGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image) {
103850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
103860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
103870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
103880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glEGLImageTargetRenderbufferStorageOES);
103890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
103900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
103910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
103920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
103930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
103940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
103950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
103960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument image
103970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_image = glmsg.add_args();
103980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_image->set_isarray(false);
1039939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_image->set_type(GLMessage::DataType::INT64);
1040039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_image->add_int64value((uintptr_t)image);
104010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1040305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1040405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
104050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glEGLImageTargetRenderbufferStorageOES(target, image);
1040605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1040705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
104080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
104109801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) image,
104119801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
104129801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1041305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1041405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
104159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1041693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
104170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
104180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetProgramBinaryOES(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary) {
104200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
104210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
104220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetProgramBinaryOES);
104240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument program
104260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_program = glmsg.add_args();
104270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_isarray(false);
104280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_type(GLMessage::DataType::INT);
104290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->add_intvalue(program);
104300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument bufSize
104320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_bufSize = glmsg.add_args();
104330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufSize->set_isarray(false);
104340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufSize->set_type(GLMessage::DataType::INT);
104350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufSize->add_intvalue(bufSize);
104360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument length
104380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_length = glmsg.add_args();
104390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_isarray(false);
1044039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->set_type(GLMessage::DataType::INT64);
1044139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->add_int64value((uintptr_t)length);
104420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument binaryFormat
104440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_binaryFormat = glmsg.add_args();
104450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_binaryFormat->set_isarray(false);
1044639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_binaryFormat->set_type(GLMessage::DataType::INT64);
1044739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_binaryFormat->add_int64value((uintptr_t)binaryFormat);
104480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument binary
104500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_binary = glmsg.add_args();
104510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_binary->set_isarray(false);
1045239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_binary->set_type(GLMessage::DataType::INT64);
1045339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_binary->add_int64value((uintptr_t)binary);
104540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1045605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1045705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
104580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetProgramBinaryOES(program, bufSize, length, binaryFormat, binary);
1045905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1046005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
104610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
104639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) length,
104649801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) binaryFormat,
104659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) binary,
104669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
104679801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1046805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1046905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
104709801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1047193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
104720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
104730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glProgramBinaryOES(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length) {
104750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
104760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
104770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glProgramBinaryOES);
104790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument program
104810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_program = glmsg.add_args();
104820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_isarray(false);
104830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_type(GLMessage::DataType::INT);
104840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->add_intvalue(program);
104850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument binaryFormat
104870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_binaryFormat = glmsg.add_args();
104880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_binaryFormat->set_isarray(false);
104890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_binaryFormat->set_type(GLMessage::DataType::ENUM);
104900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_binaryFormat->add_intvalue((int)binaryFormat);
104910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument binary
104930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_binary = glmsg.add_args();
104940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_binary->set_isarray(false);
1049539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_binary->set_type(GLMessage::DataType::INT64);
1049639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_binary->add_int64value((uintptr_t)binary);
104970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument length
104990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_length = glmsg.add_args();
105000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_isarray(false);
105010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_type(GLMessage::DataType::INT);
105020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->add_intvalue(length);
105030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1050505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1050605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
105070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glProgramBinaryOES(program, binaryFormat, binary, length);
1050805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1050905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
105100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105119801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
105129801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) binary,
105139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
105149801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1051505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1051605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
105179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1051893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
105190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
105200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid* GLTrace_glMapBufferOES(GLenum target, GLenum access) {
105220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
105230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
105240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glMapBufferOES);
105260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
105280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
105290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
105300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
105310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
105320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument access
105340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_access = glmsg.add_args();
105350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_access->set_isarray(false);
105360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_access->set_type(GLMessage::DataType::ENUM);
105370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_access->add_intvalue((int)access);
105380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1054005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1054105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
105420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    void* retValue = glContext->hooks->gl.glMapBufferOES(target, access);
1054305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1054405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
105450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
105470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
105480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
1054939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    rt->set_type(GLMessage::DataType::INT64);
1055039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    rt->add_int64value((uintptr_t)retValue);
105510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105529801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
105539801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) retValue,
105549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
105559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1055605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1055705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
105589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1055993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
105600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
105620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
105630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105640469dd6d55fa331bfd7de9431da98b6340d82271Siva VelusamyGLboolean GLTrace_glUnmapBufferOES(GLenum target) {
105650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
105660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
105670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glUnmapBufferOES);
105690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
105710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
105720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
105730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
105740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
105750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1057705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1057805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
105790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLboolean retValue = glContext->hooks->gl.glUnmapBufferOES(target);
1058005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1058105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
105820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
105840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
105850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
105860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::BOOL);
105870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_boolvalue(retValue);
105880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
105909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
105919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1059205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1059305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
105949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1059593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
105960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
105980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
105990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetBufferPointervOES(GLenum target, GLenum pname, GLvoid** params) {
106010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
106020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
106030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetBufferPointervOES);
106050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
106070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
106080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
106090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
106100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
106110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
106130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
106140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
106150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
106160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
106170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
106190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
106200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
1062139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1062239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
106230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1062505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1062605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
106270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetBufferPointervOES(target, pname, params);
1062805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1062905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
106300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106319801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
106329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
106339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
106349801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1063505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1063605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
106379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1063893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
106390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
106400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels) {
106420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
106430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
106440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexImage3DOES);
106460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
106480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
106490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
106500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
106510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
106520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument level
106540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_level = glmsg.add_args();
106550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_isarray(false);
106560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_type(GLMessage::DataType::INT);
106570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->add_intvalue(level);
106580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument internalformat
106600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_internalformat = glmsg.add_args();
106610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->set_isarray(false);
106620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->set_type(GLMessage::DataType::ENUM);
106630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->add_intvalue((int)internalformat);
106640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
106660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
106670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
106680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
106690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
106700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
106720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
106730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
106740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
106750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
106760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument depth
106780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_depth = glmsg.add_args();
106790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_isarray(false);
106800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_type(GLMessage::DataType::INT);
106810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->add_intvalue(depth);
106820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument border
106840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_border = glmsg.add_args();
106850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_border->set_isarray(false);
106860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_border->set_type(GLMessage::DataType::INT);
106870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_border->add_intvalue(border);
106880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument format
106900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_format = glmsg.add_args();
106910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->set_isarray(false);
106920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->set_type(GLMessage::DataType::ENUM);
106930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->add_intvalue((int)format);
106940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument type
106960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_type = glmsg.add_args();
106970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_isarray(false);
106980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_type(GLMessage::DataType::ENUM);
106990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->add_intvalue((int)type);
107000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pixels
107020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pixels = glmsg.add_args();
107030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pixels->set_isarray(false);
1070439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pixels->set_type(GLMessage::DataType::INT64);
1070539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pixels->add_int64value((uintptr_t)pixels);
107060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1070805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1070905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
107100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexImage3DOES(target, level, internalformat, width, height, depth, border, format, type, pixels);
1071105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1071205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
107130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107149801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
107159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) pixels,
107169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
107179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1071805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1071905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
107209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1072193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
107220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
107230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels) {
107250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
107260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
107270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexSubImage3DOES);
107290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
107310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
107320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
107330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
107340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
107350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument level
107370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_level = glmsg.add_args();
107380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_isarray(false);
107390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_type(GLMessage::DataType::INT);
107400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->add_intvalue(level);
107410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument xoffset
107430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_xoffset = glmsg.add_args();
107440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->set_isarray(false);
107450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->set_type(GLMessage::DataType::INT);
107460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->add_intvalue(xoffset);
107470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument yoffset
107490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_yoffset = glmsg.add_args();
107500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->set_isarray(false);
107510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->set_type(GLMessage::DataType::INT);
107520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->add_intvalue(yoffset);
107530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zoffset
107550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zoffset = glmsg.add_args();
107560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zoffset->set_isarray(false);
107570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zoffset->set_type(GLMessage::DataType::INT);
107580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zoffset->add_intvalue(zoffset);
107590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
107610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
107620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
107630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
107640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
107650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
107670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
107680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
107690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
107700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
107710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument depth
107730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_depth = glmsg.add_args();
107740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_isarray(false);
107750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_type(GLMessage::DataType::INT);
107760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->add_intvalue(depth);
107770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument format
107790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_format = glmsg.add_args();
107800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->set_isarray(false);
107810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->set_type(GLMessage::DataType::ENUM);
107820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->add_intvalue((int)format);
107830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument type
107850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_type = glmsg.add_args();
107860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_isarray(false);
107870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_type(GLMessage::DataType::ENUM);
107880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->add_intvalue((int)type);
107890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pixels
107910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pixels = glmsg.add_args();
107920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pixels->set_isarray(false);
1079339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pixels->set_type(GLMessage::DataType::INT64);
1079439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pixels->add_int64value((uintptr_t)pixels);
107950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1079705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1079805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
107990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexSubImage3DOES(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
1080005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1080105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
108020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
108049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) pixels,
108059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
108069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1080705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1080805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
108099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1081093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
108110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
108120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glCopyTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) {
108140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
108150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
108160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glCopyTexSubImage3DOES);
108180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
108200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
108210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
108220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
108230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
108240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument level
108260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_level = glmsg.add_args();
108270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_isarray(false);
108280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_type(GLMessage::DataType::INT);
108290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->add_intvalue(level);
108300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument xoffset
108320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_xoffset = glmsg.add_args();
108330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->set_isarray(false);
108340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->set_type(GLMessage::DataType::INT);
108350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->add_intvalue(xoffset);
108360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument yoffset
108380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_yoffset = glmsg.add_args();
108390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->set_isarray(false);
108400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->set_type(GLMessage::DataType::INT);
108410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->add_intvalue(yoffset);
108420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zoffset
108440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zoffset = glmsg.add_args();
108450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zoffset->set_isarray(false);
108460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zoffset->set_type(GLMessage::DataType::INT);
108470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zoffset->add_intvalue(zoffset);
108480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
108500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
108510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
108520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::INT);
108530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_intvalue(x);
108540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
108560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
108570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
108580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::INT);
108590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_intvalue(y);
108600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
108620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
108630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
108640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
108650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
108660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
108680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
108690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
108700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
108710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
108720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1087405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1087505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
108760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glCopyTexSubImage3DOES(target, level, xoffset, yoffset, zoffset, x, y, width, height);
1087705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1087805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
108790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
108819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
108829801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1088305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1088405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
108859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1088693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
108870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
108880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glCompressedTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data) {
108900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
108910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
108920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glCompressedTexImage3DOES);
108940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
108960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
108970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
108980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
108990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
109000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument level
109020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_level = glmsg.add_args();
109030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_isarray(false);
109040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_type(GLMessage::DataType::INT);
109050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->add_intvalue(level);
109060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument internalformat
109080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_internalformat = glmsg.add_args();
109090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->set_isarray(false);
109100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->set_type(GLMessage::DataType::ENUM);
109110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->add_intvalue((int)internalformat);
109120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
109140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
109150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
109160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
109170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
109180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
109200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
109210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
109220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
109230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
109240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument depth
109260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_depth = glmsg.add_args();
109270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_isarray(false);
109280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_type(GLMessage::DataType::INT);
109290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->add_intvalue(depth);
109300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument border
109320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_border = glmsg.add_args();
109330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_border->set_isarray(false);
109340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_border->set_type(GLMessage::DataType::INT);
109350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_border->add_intvalue(border);
109360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument imageSize
109380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_imageSize = glmsg.add_args();
109390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_imageSize->set_isarray(false);
109400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_imageSize->set_type(GLMessage::DataType::INT);
109410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_imageSize->add_intvalue(imageSize);
109420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument data
109440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_data = glmsg.add_args();
109450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_data->set_isarray(false);
1094639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_data->set_type(GLMessage::DataType::INT64);
1094739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_data->add_int64value((uintptr_t)data);
109480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1095005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1095105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
109520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glCompressedTexImage3DOES(target, level, internalformat, width, height, depth, border, imageSize, data);
1095305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1095405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
109550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
109579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) data,
109589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
109599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1096005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1096105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
109629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1096393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
109640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
109650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glCompressedTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data) {
109670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
109680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
109690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glCompressedTexSubImage3DOES);
109710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
109730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
109740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
109750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
109760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
109770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument level
109790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_level = glmsg.add_args();
109800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_isarray(false);
109810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_type(GLMessage::DataType::INT);
109820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->add_intvalue(level);
109830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument xoffset
109850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_xoffset = glmsg.add_args();
109860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->set_isarray(false);
109870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->set_type(GLMessage::DataType::INT);
109880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->add_intvalue(xoffset);
109890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument yoffset
109910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_yoffset = glmsg.add_args();
109920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->set_isarray(false);
109930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->set_type(GLMessage::DataType::INT);
109940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->add_intvalue(yoffset);
109950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zoffset
109970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zoffset = glmsg.add_args();
109980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zoffset->set_isarray(false);
109990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zoffset->set_type(GLMessage::DataType::INT);
110000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zoffset->add_intvalue(zoffset);
110010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
110030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
110040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
110050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
110060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
110070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
110090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
110100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
110110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
110120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
110130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument depth
110150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_depth = glmsg.add_args();
110160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_isarray(false);
110170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_type(GLMessage::DataType::INT);
110180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->add_intvalue(depth);
110190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument format
110210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_format = glmsg.add_args();
110220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->set_isarray(false);
110230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->set_type(GLMessage::DataType::ENUM);
110240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->add_intvalue((int)format);
110250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument imageSize
110270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_imageSize = glmsg.add_args();
110280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_imageSize->set_isarray(false);
110290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_imageSize->set_type(GLMessage::DataType::INT);
110300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_imageSize->add_intvalue(imageSize);
110310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument data
110330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_data = glmsg.add_args();
110340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_data->set_isarray(false);
1103539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_data->set_type(GLMessage::DataType::INT64);
1103639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_data->add_int64value((uintptr_t)data);
110370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1103905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1104005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
110410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glCompressedTexSubImage3DOES(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
1104205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1104305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
110440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110459801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
110469801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) data,
110479801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
110489801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1104905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1105005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
110519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1105293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
110530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
110540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFramebufferTexture3DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) {
110560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
110570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
110580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFramebufferTexture3DOES);
110600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
110620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
110630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
110640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
110650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
110660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument attachment
110680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_attachment = glmsg.add_args();
110690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->set_isarray(false);
110700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->set_type(GLMessage::DataType::ENUM);
110710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->add_intvalue((int)attachment);
110720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument textarget
110740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_textarget = glmsg.add_args();
110750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_textarget->set_isarray(false);
110760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_textarget->set_type(GLMessage::DataType::ENUM);
110770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_textarget->add_intvalue((int)textarget);
110780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument texture
110800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_texture = glmsg.add_args();
110810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->set_isarray(false);
110820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->set_type(GLMessage::DataType::INT);
110830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->add_intvalue(texture);
110840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument level
110860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_level = glmsg.add_args();
110870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_isarray(false);
110880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_type(GLMessage::DataType::INT);
110890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->add_intvalue(level);
110900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zoffset
110920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zoffset = glmsg.add_args();
110930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zoffset->set_isarray(false);
110940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zoffset->set_type(GLMessage::DataType::INT);
110950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zoffset->add_intvalue(zoffset);
110960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1109805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1109905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
111000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFramebufferTexture3DOES(target, attachment, textarget, texture, level, zoffset);
1110105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1110205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
111030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
111059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
111069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1110705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1110805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
111099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1111093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
111110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
111120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glBindVertexArrayOES(GLuint array) {
111140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
111150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
111160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glBindVertexArrayOES);
111180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument array
111200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_array = glmsg.add_args();
111210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_array->set_isarray(false);
111220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_array->set_type(GLMessage::DataType::INT);
111230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_array->add_intvalue(array);
111240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1112605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1112705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
111280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glBindVertexArrayOES(array);
1112905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1113005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
111310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
111339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
111349801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1113505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1113605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
111379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1113893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
111390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
111400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDeleteVertexArraysOES(GLsizei n, const GLuint *arrays) {
111420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
111430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
111440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDeleteVertexArraysOES);
111460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument n
111480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_n = glmsg.add_args();
111490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_isarray(false);
111500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_type(GLMessage::DataType::INT);
111510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->add_intvalue(n);
111520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument arrays
111540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_arrays = glmsg.add_args();
111550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_arrays->set_isarray(false);
1115639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_arrays->set_type(GLMessage::DataType::INT64);
1115739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_arrays->add_int64value((uintptr_t)arrays);
111580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1116005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1116105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
111620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDeleteVertexArraysOES(n, arrays);
1116305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1116405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
111650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
111679801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) arrays,
111689801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
111699801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1117005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1117105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
111729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1117393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
111740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
111750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGenVertexArraysOES(GLsizei n, GLuint *arrays) {
111770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
111780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
111790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGenVertexArraysOES);
111810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument n
111830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_n = glmsg.add_args();
111840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_isarray(false);
111850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_type(GLMessage::DataType::INT);
111860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->add_intvalue(n);
111870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument arrays
111890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_arrays = glmsg.add_args();
111900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_arrays->set_isarray(false);
1119139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_arrays->set_type(GLMessage::DataType::INT64);
1119239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_arrays->add_int64value((uintptr_t)arrays);
111930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1119505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1119605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
111970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGenVertexArraysOES(n, arrays);
1119805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1119905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
112000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
112029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) arrays,
112039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
112049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1120505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1120605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
112079801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1120893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
112090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
112100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112110469dd6d55fa331bfd7de9431da98b6340d82271Siva VelusamyGLboolean GLTrace_glIsVertexArrayOES(GLuint array) {
112120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
112130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
112140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glIsVertexArrayOES);
112160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument array
112180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_array = glmsg.add_args();
112190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_array->set_isarray(false);
112200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_array->set_type(GLMessage::DataType::INT);
112210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_array->add_intvalue(array);
112220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1122405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1122505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
112260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLboolean retValue = glContext->hooks->gl.glIsVertexArrayOES(array);
1122705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1122805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
112290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
112310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
112320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
112330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::BOOL);
112340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_boolvalue(retValue);
112350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
112379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
112389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1123905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1124005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
112419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1124293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
112430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
112450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
112460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetPerfMonitorGroupsAMD(GLint *numGroups, GLsizei groupsSize, GLuint *groups) {
112480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
112490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
112500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetPerfMonitorGroupsAMD);
112520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument numGroups
112540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_numGroups = glmsg.add_args();
112550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numGroups->set_isarray(false);
1125639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_numGroups->set_type(GLMessage::DataType::INT64);
1125739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_numGroups->add_int64value((uintptr_t)numGroups);
112580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument groupsSize
112600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_groupsSize = glmsg.add_args();
112610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_groupsSize->set_isarray(false);
112620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_groupsSize->set_type(GLMessage::DataType::INT);
112630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_groupsSize->add_intvalue(groupsSize);
112640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument groups
112660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_groups = glmsg.add_args();
112670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_groups->set_isarray(false);
1126839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_groups->set_type(GLMessage::DataType::INT64);
1126939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_groups->add_int64value((uintptr_t)groups);
112700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1127205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1127305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
112740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetPerfMonitorGroupsAMD(numGroups, groupsSize, groups);
1127505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1127605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
112770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112789801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
112799801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) numGroups,
112809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) groups,
112819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
112829801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1128305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1128405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
112859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1128693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
112870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
112880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetPerfMonitorCountersAMD(GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters) {
112900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
112910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
112920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetPerfMonitorCountersAMD);
112940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument group
112960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_group = glmsg.add_args();
112970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_group->set_isarray(false);
112980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_group->set_type(GLMessage::DataType::INT);
112990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_group->add_intvalue(group);
113000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument numCounters
113020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_numCounters = glmsg.add_args();
113030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numCounters->set_isarray(false);
1130439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_numCounters->set_type(GLMessage::DataType::INT64);
1130539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_numCounters->add_int64value((uintptr_t)numCounters);
113060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument maxActiveCounters
113080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_maxActiveCounters = glmsg.add_args();
113090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxActiveCounters->set_isarray(false);
1131039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_maxActiveCounters->set_type(GLMessage::DataType::INT64);
1131139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_maxActiveCounters->add_int64value((uintptr_t)maxActiveCounters);
113120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument counterSize
113140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_counterSize = glmsg.add_args();
113150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_counterSize->set_isarray(false);
113160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_counterSize->set_type(GLMessage::DataType::INT);
113170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_counterSize->add_intvalue(counterSize);
113180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument counters
113200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_counters = glmsg.add_args();
113210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_counters->set_isarray(false);
1132239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_counters->set_type(GLMessage::DataType::INT64);
1132339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_counters->add_int64value((uintptr_t)counters);
113240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1132605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1132705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
113280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetPerfMonitorCountersAMD(group, numCounters, maxActiveCounters, counterSize, counters);
1132905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1133005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
113310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
113339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) numCounters,
113349801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) maxActiveCounters,
113359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) counters,
113369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
113379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1133805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1133905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
113409801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1134193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
113420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
113430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetPerfMonitorGroupStringAMD(GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString) {
113450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
113460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
113470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetPerfMonitorGroupStringAMD);
113490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument group
113510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_group = glmsg.add_args();
113520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_group->set_isarray(false);
113530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_group->set_type(GLMessage::DataType::INT);
113540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_group->add_intvalue(group);
113550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument bufSize
113570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_bufSize = glmsg.add_args();
113580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufSize->set_isarray(false);
113590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufSize->set_type(GLMessage::DataType::INT);
113600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufSize->add_intvalue(bufSize);
113610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument length
113630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_length = glmsg.add_args();
113640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_isarray(false);
1136539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->set_type(GLMessage::DataType::INT64);
1136639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->add_int64value((uintptr_t)length);
113670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument groupString
113690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_groupString = glmsg.add_args();
113700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_groupString->set_isarray(false);
1137139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_groupString->set_type(GLMessage::DataType::INT64);
1137239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_groupString->add_int64value((uintptr_t)groupString);
113730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1137505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1137605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
113770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetPerfMonitorGroupStringAMD(group, bufSize, length, groupString);
1137805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1137905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
113800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
113829801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) length,
113839801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) groupString,
113849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
113859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1138605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1138705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
113889801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1138993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
113900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
113910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetPerfMonitorCounterStringAMD(GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString) {
113930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
113940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
113950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetPerfMonitorCounterStringAMD);
113970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument group
113990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_group = glmsg.add_args();
114000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_group->set_isarray(false);
114010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_group->set_type(GLMessage::DataType::INT);
114020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_group->add_intvalue(group);
114030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument counter
114050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_counter = glmsg.add_args();
114060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_counter->set_isarray(false);
114070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_counter->set_type(GLMessage::DataType::INT);
114080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_counter->add_intvalue(counter);
114090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument bufSize
114110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_bufSize = glmsg.add_args();
114120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufSize->set_isarray(false);
114130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufSize->set_type(GLMessage::DataType::INT);
114140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufSize->add_intvalue(bufSize);
114150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument length
114170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_length = glmsg.add_args();
114180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_isarray(false);
1141939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->set_type(GLMessage::DataType::INT64);
1142039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->add_int64value((uintptr_t)length);
114210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument counterString
114230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_counterString = glmsg.add_args();
114240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_counterString->set_isarray(false);
1142539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_counterString->set_type(GLMessage::DataType::INT64);
1142639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_counterString->add_int64value((uintptr_t)counterString);
114270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1142905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1143005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
114310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetPerfMonitorCounterStringAMD(group, counter, bufSize, length, counterString);
1143205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1143305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
114340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
114369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) length,
114379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) counterString,
114389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
114399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1144005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1144105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
114429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1144393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
114440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
114450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetPerfMonitorCounterInfoAMD(GLuint group, GLuint counter, GLenum pname, GLvoid *data) {
114470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
114480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
114490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetPerfMonitorCounterInfoAMD);
114510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument group
114530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_group = glmsg.add_args();
114540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_group->set_isarray(false);
114550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_group->set_type(GLMessage::DataType::INT);
114560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_group->add_intvalue(group);
114570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument counter
114590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_counter = glmsg.add_args();
114600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_counter->set_isarray(false);
114610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_counter->set_type(GLMessage::DataType::INT);
114620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_counter->add_intvalue(counter);
114630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
114650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
114660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
114670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
114680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
114690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument data
114710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_data = glmsg.add_args();
114720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_data->set_isarray(false);
1147339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_data->set_type(GLMessage::DataType::INT64);
1147439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_data->add_int64value((uintptr_t)data);
114750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1147705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1147805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
114790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetPerfMonitorCounterInfoAMD(group, counter, pname, data);
1148005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1148105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
114820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114839801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
114849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) data,
114859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
114869801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1148705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1148805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
114899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1149093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
114910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
114920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGenPerfMonitorsAMD(GLsizei n, GLuint *monitors) {
114940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
114950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
114960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGenPerfMonitorsAMD);
114980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument n
115000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_n = glmsg.add_args();
115010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_isarray(false);
115020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_type(GLMessage::DataType::INT);
115030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->add_intvalue(n);
115040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument monitors
115060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_monitors = glmsg.add_args();
115070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitors->set_isarray(false);
1150839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_monitors->set_type(GLMessage::DataType::INT64);
1150939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_monitors->add_int64value((uintptr_t)monitors);
115100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1151205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1151305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
115140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGenPerfMonitorsAMD(n, monitors);
1151505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1151605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
115170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
115199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) monitors,
115209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
115219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1152205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1152305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
115249801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1152593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
115260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
115270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDeletePerfMonitorsAMD(GLsizei n, GLuint *monitors) {
115290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
115300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
115310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDeletePerfMonitorsAMD);
115330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument n
115350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_n = glmsg.add_args();
115360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_isarray(false);
115370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_type(GLMessage::DataType::INT);
115380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->add_intvalue(n);
115390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument monitors
115410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_monitors = glmsg.add_args();
115420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitors->set_isarray(false);
1154339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_monitors->set_type(GLMessage::DataType::INT64);
1154439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_monitors->add_int64value((uintptr_t)monitors);
115450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1154705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1154805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
115490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDeletePerfMonitorsAMD(n, monitors);
1155005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1155105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
115520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115539801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
115549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) monitors,
115559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
115569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1155705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1155805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
115599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1156093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
115610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
115620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glSelectPerfMonitorCountersAMD(GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList) {
115640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
115650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
115660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glSelectPerfMonitorCountersAMD);
115680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument monitor
115700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_monitor = glmsg.add_args();
115710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitor->set_isarray(false);
115720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitor->set_type(GLMessage::DataType::INT);
115730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitor->add_intvalue(monitor);
115740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument enable
115760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_enable = glmsg.add_args();
115770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_enable->set_isarray(false);
115780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_enable->set_type(GLMessage::DataType::BOOL);
115790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_enable->add_boolvalue(enable);
115800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument group
115820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_group = glmsg.add_args();
115830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_group->set_isarray(false);
115840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_group->set_type(GLMessage::DataType::INT);
115850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_group->add_intvalue(group);
115860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument numCounters
115880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_numCounters = glmsg.add_args();
115890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numCounters->set_isarray(false);
115900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numCounters->set_type(GLMessage::DataType::INT);
115910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numCounters->add_intvalue(numCounters);
115920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument countersList
115940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_countersList = glmsg.add_args();
115950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_countersList->set_isarray(false);
1159639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_countersList->set_type(GLMessage::DataType::INT64);
1159739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_countersList->add_int64value((uintptr_t)countersList);
115980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1160005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1160105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
116020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glSelectPerfMonitorCountersAMD(monitor, enable, group, numCounters, countersList);
1160305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1160405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
116050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
116079801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) countersList,
116089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
116099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1161005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1161105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
116129801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1161393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
116140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
116150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glBeginPerfMonitorAMD(GLuint monitor) {
116170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
116180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
116190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glBeginPerfMonitorAMD);
116210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument monitor
116230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_monitor = glmsg.add_args();
116240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitor->set_isarray(false);
116250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitor->set_type(GLMessage::DataType::INT);
116260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitor->add_intvalue(monitor);
116270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1162905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1163005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
116310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glBeginPerfMonitorAMD(monitor);
1163205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1163305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
116340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
116369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
116379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1163805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1163905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
116409801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1164193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
116420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
116430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glEndPerfMonitorAMD(GLuint monitor) {
116450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
116460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
116470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glEndPerfMonitorAMD);
116490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument monitor
116510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_monitor = glmsg.add_args();
116520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitor->set_isarray(false);
116530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitor->set_type(GLMessage::DataType::INT);
116540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitor->add_intvalue(monitor);
116550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1165705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1165805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
116590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glEndPerfMonitorAMD(monitor);
1166005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1166105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
116620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
116649801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
116659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1166605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1166705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
116689801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1166993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
116700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
116710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetPerfMonitorCounterDataAMD(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten) {
116730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
116740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
116750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetPerfMonitorCounterDataAMD);
116770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument monitor
116790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_monitor = glmsg.add_args();
116800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitor->set_isarray(false);
116810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitor->set_type(GLMessage::DataType::INT);
116820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitor->add_intvalue(monitor);
116830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
116850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
116860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
116870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
116880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
116890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument dataSize
116910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_dataSize = glmsg.add_args();
116920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_dataSize->set_isarray(false);
116930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_dataSize->set_type(GLMessage::DataType::INT);
116940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_dataSize->add_intvalue(dataSize);
116950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument data
116970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_data = glmsg.add_args();
116980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_data->set_isarray(false);
1169939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_data->set_type(GLMessage::DataType::INT64);
1170039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_data->add_int64value((uintptr_t)data);
117010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
117020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument bytesWritten
117030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_bytesWritten = glmsg.add_args();
117040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bytesWritten->set_isarray(false);
1170539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_bytesWritten->set_type(GLMessage::DataType::INT64);
1170639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_bytesWritten->add_int64value((uintptr_t)bytesWritten);
117070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
117080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1170905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1171005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
117110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetPerfMonitorCounterDataAMD(monitor, pname, dataSize, data, bytesWritten);
1171205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1171305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
117140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
117159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
117169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) data,
117179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) bytesWritten,
117189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
117199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1172005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1172105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
117229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1172393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
117240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
117250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1172631272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glBlitFramebufferANGLE(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) {
1172731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1172831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1172931272606149d83437a097800074b21e9e6a205adMathias Agopian
1173031272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glBlitFramebufferANGLE);
1173131272606149d83437a097800074b21e9e6a205adMathias Agopian
1173231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument srcX0
1173331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_srcX0 = glmsg.add_args();
1173431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_srcX0->set_isarray(false);
1173531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_srcX0->set_type(GLMessage::DataType::INT);
1173631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_srcX0->add_intvalue(srcX0);
1173731272606149d83437a097800074b21e9e6a205adMathias Agopian
1173831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument srcY0
1173931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_srcY0 = glmsg.add_args();
1174031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_srcY0->set_isarray(false);
1174131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_srcY0->set_type(GLMessage::DataType::INT);
1174231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_srcY0->add_intvalue(srcY0);
1174331272606149d83437a097800074b21e9e6a205adMathias Agopian
1174431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument srcX1
1174531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_srcX1 = glmsg.add_args();
1174631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_srcX1->set_isarray(false);
1174731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_srcX1->set_type(GLMessage::DataType::INT);
1174831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_srcX1->add_intvalue(srcX1);
1174931272606149d83437a097800074b21e9e6a205adMathias Agopian
1175031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument srcY1
1175131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_srcY1 = glmsg.add_args();
1175231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_srcY1->set_isarray(false);
1175331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_srcY1->set_type(GLMessage::DataType::INT);
1175431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_srcY1->add_intvalue(srcY1);
1175531272606149d83437a097800074b21e9e6a205adMathias Agopian
1175631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument dstX0
1175731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_dstX0 = glmsg.add_args();
1175831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_dstX0->set_isarray(false);
1175931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_dstX0->set_type(GLMessage::DataType::INT);
1176031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_dstX0->add_intvalue(dstX0);
1176131272606149d83437a097800074b21e9e6a205adMathias Agopian
1176231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument dstY0
1176331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_dstY0 = glmsg.add_args();
1176431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_dstY0->set_isarray(false);
1176531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_dstY0->set_type(GLMessage::DataType::INT);
1176631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_dstY0->add_intvalue(dstY0);
1176731272606149d83437a097800074b21e9e6a205adMathias Agopian
1176831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument dstX1
1176931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_dstX1 = glmsg.add_args();
1177031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_dstX1->set_isarray(false);
1177131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_dstX1->set_type(GLMessage::DataType::INT);
1177231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_dstX1->add_intvalue(dstX1);
1177331272606149d83437a097800074b21e9e6a205adMathias Agopian
1177431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument dstY1
1177531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_dstY1 = glmsg.add_args();
1177631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_dstY1->set_isarray(false);
1177731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_dstY1->set_type(GLMessage::DataType::INT);
1177831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_dstY1->add_intvalue(dstY1);
1177931272606149d83437a097800074b21e9e6a205adMathias Agopian
1178031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument mask
1178131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_mask = glmsg.add_args();
1178231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_mask->set_isarray(false);
1178331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_mask->set_type(GLMessage::DataType::INT);
1178431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_mask->add_intvalue(mask);
1178531272606149d83437a097800074b21e9e6a205adMathias Agopian
1178631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument filter
1178731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_filter = glmsg.add_args();
1178831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_filter->set_isarray(false);
1178931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_filter->set_type(GLMessage::DataType::ENUM);
1179031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_filter->add_intvalue((int)filter);
1179131272606149d83437a097800074b21e9e6a205adMathias Agopian
1179231272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1179305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1179405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1179531272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glBlitFramebufferANGLE(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
1179605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1179705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1179831272606149d83437a097800074b21e9e6a205adMathias Agopian
117999801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
118009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
118019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1180205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1180305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
118049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1180531272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1180631272606149d83437a097800074b21e9e6a205adMathias Agopian}
1180731272606149d83437a097800074b21e9e6a205adMathias Agopian
1180831272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glRenderbufferStorageMultisampleANGLE(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
1180931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1181031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1181131272606149d83437a097800074b21e9e6a205adMathias Agopian
1181231272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glRenderbufferStorageMultisampleANGLE);
1181331272606149d83437a097800074b21e9e6a205adMathias Agopian
1181431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument target
1181531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_target = glmsg.add_args();
1181631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_isarray(false);
1181731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_type(GLMessage::DataType::ENUM);
1181831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->add_intvalue((int)target);
1181931272606149d83437a097800074b21e9e6a205adMathias Agopian
1182031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument samples
1182131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_samples = glmsg.add_args();
1182231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_samples->set_isarray(false);
1182331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_samples->set_type(GLMessage::DataType::INT);
1182431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_samples->add_intvalue(samples);
1182531272606149d83437a097800074b21e9e6a205adMathias Agopian
1182631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument internalformat
1182731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_internalformat = glmsg.add_args();
1182831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_isarray(false);
1182931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_type(GLMessage::DataType::ENUM);
1183031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->add_intvalue((int)internalformat);
1183131272606149d83437a097800074b21e9e6a205adMathias Agopian
1183231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument width
1183331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_width = glmsg.add_args();
1183431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_isarray(false);
1183531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_type(GLMessage::DataType::INT);
1183631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->add_intvalue(width);
1183731272606149d83437a097800074b21e9e6a205adMathias Agopian
1183831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument height
1183931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_height = glmsg.add_args();
1184031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_isarray(false);
1184131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_type(GLMessage::DataType::INT);
1184231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->add_intvalue(height);
1184331272606149d83437a097800074b21e9e6a205adMathias Agopian
1184431272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1184505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1184605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1184731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glRenderbufferStorageMultisampleANGLE(target, samples, internalformat, width, height);
1184805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1184905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1185031272606149d83437a097800074b21e9e6a205adMathias Agopian
118519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
118529801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
118539801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1185405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1185505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
118569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1185731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1185831272606149d83437a097800074b21e9e6a205adMathias Agopian}
1185931272606149d83437a097800074b21e9e6a205adMathias Agopian
1186031272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glRenderbufferStorageMultisampleAPPLE(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
1186131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1186231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1186331272606149d83437a097800074b21e9e6a205adMathias Agopian
1186431272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glRenderbufferStorageMultisampleAPPLE);
1186531272606149d83437a097800074b21e9e6a205adMathias Agopian
1186631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument target
1186731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_target = glmsg.add_args();
1186831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_isarray(false);
1186931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_type(GLMessage::DataType::ENUM);
1187031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->add_intvalue((int)target);
1187131272606149d83437a097800074b21e9e6a205adMathias Agopian
1187231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument samples
1187331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_samples = glmsg.add_args();
1187431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_samples->set_isarray(false);
1187531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_samples->set_type(GLMessage::DataType::INT);
1187631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_samples->add_intvalue(samples);
1187731272606149d83437a097800074b21e9e6a205adMathias Agopian
1187831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument internalformat
1187931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_internalformat = glmsg.add_args();
1188031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_isarray(false);
1188131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_type(GLMessage::DataType::ENUM);
1188231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->add_intvalue((int)internalformat);
1188331272606149d83437a097800074b21e9e6a205adMathias Agopian
1188431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument width
1188531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_width = glmsg.add_args();
1188631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_isarray(false);
1188731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_type(GLMessage::DataType::INT);
1188831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->add_intvalue(width);
1188931272606149d83437a097800074b21e9e6a205adMathias Agopian
1189031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument height
1189131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_height = glmsg.add_args();
1189231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_isarray(false);
1189331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_type(GLMessage::DataType::INT);
1189431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->add_intvalue(height);
1189531272606149d83437a097800074b21e9e6a205adMathias Agopian
1189631272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1189705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1189805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1189931272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glRenderbufferStorageMultisampleAPPLE(target, samples, internalformat, width, height);
1190005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1190105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1190231272606149d83437a097800074b21e9e6a205adMathias Agopian
119039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
119049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
119059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1190605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1190705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
119089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1190931272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1191031272606149d83437a097800074b21e9e6a205adMathias Agopian}
1191131272606149d83437a097800074b21e9e6a205adMathias Agopian
1191231272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glResolveMultisampleFramebufferAPPLE(void) {
1191331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1191431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1191531272606149d83437a097800074b21e9e6a205adMathias Agopian
1191631272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glResolveMultisampleFramebufferAPPLE);
1191731272606149d83437a097800074b21e9e6a205adMathias Agopian
1191831272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1191905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1192005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1192131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glResolveMultisampleFramebufferAPPLE();
1192205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1192305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1192431272606149d83437a097800074b21e9e6a205adMathias Agopian
119259801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
119269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
119279801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1192805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1192905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
119309801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1193131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1193231272606149d83437a097800074b21e9e6a205adMathias Agopian}
1193331272606149d83437a097800074b21e9e6a205adMathias Agopian
1193431272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glLabelObjectEXT(GLenum type, GLuint object, GLsizei length, const GLchar *label) {
1193531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1193631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1193731272606149d83437a097800074b21e9e6a205adMathias Agopian
1193831272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glLabelObjectEXT);
1193931272606149d83437a097800074b21e9e6a205adMathias Agopian
1194031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument type
1194131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_type = glmsg.add_args();
1194231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_type->set_isarray(false);
1194331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_type->set_type(GLMessage::DataType::ENUM);
1194431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_type->add_intvalue((int)type);
1194531272606149d83437a097800074b21e9e6a205adMathias Agopian
1194631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument object
1194731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_object = glmsg.add_args();
1194831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_object->set_isarray(false);
1194931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_object->set_type(GLMessage::DataType::INT);
1195031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_object->add_intvalue(object);
1195131272606149d83437a097800074b21e9e6a205adMathias Agopian
1195231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument length
1195331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_length = glmsg.add_args();
1195431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_length->set_isarray(false);
1195531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_length->set_type(GLMessage::DataType::INT);
1195631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_length->add_intvalue(length);
1195731272606149d83437a097800074b21e9e6a205adMathias Agopian
1195831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument label
1195931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_label = glmsg.add_args();
1196031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_label->set_isarray(false);
1196139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_label->set_type(GLMessage::DataType::INT64);
1196239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_label->add_int64value((uintptr_t)label);
1196331272606149d83437a097800074b21e9e6a205adMathias Agopian
1196431272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1196505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1196605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1196731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glLabelObjectEXT(type, object, length, label);
1196805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1196905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1197031272606149d83437a097800074b21e9e6a205adMathias Agopian
119719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
119729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) label,
119739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
119749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1197505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1197605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
119779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1197831272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1197931272606149d83437a097800074b21e9e6a205adMathias Agopian}
1198031272606149d83437a097800074b21e9e6a205adMathias Agopian
1198131272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glGetObjectLabelEXT(GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label) {
1198231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1198331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1198431272606149d83437a097800074b21e9e6a205adMathias Agopian
1198531272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glGetObjectLabelEXT);
1198631272606149d83437a097800074b21e9e6a205adMathias Agopian
1198731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument type
1198831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_type = glmsg.add_args();
1198931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_type->set_isarray(false);
1199031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_type->set_type(GLMessage::DataType::ENUM);
1199131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_type->add_intvalue((int)type);
1199231272606149d83437a097800074b21e9e6a205adMathias Agopian
1199331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument object
1199431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_object = glmsg.add_args();
1199531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_object->set_isarray(false);
1199631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_object->set_type(GLMessage::DataType::INT);
1199731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_object->add_intvalue(object);
1199831272606149d83437a097800074b21e9e6a205adMathias Agopian
1199931272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument bufSize
1200031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_bufSize = glmsg.add_args();
1200131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufSize->set_isarray(false);
1200231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufSize->set_type(GLMessage::DataType::INT);
1200331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufSize->add_intvalue(bufSize);
1200431272606149d83437a097800074b21e9e6a205adMathias Agopian
1200531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument length
1200631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_length = glmsg.add_args();
1200731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_length->set_isarray(false);
1200839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->set_type(GLMessage::DataType::INT64);
1200939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->add_int64value((uintptr_t)length);
1201031272606149d83437a097800074b21e9e6a205adMathias Agopian
1201131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument label
1201231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_label = glmsg.add_args();
1201331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_label->set_isarray(false);
1201439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_label->set_type(GLMessage::DataType::INT64);
1201539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_label->add_int64value((uintptr_t)label);
1201631272606149d83437a097800074b21e9e6a205adMathias Agopian
1201731272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1201805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1201905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1202031272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glGetObjectLabelEXT(type, object, bufSize, length, label);
1202105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1202205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1202331272606149d83437a097800074b21e9e6a205adMathias Agopian
120249801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
120259801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) length,
120269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) label,
120279801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
120289801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1202905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1203005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
120319801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1203231272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1203331272606149d83437a097800074b21e9e6a205adMathias Agopian}
1203431272606149d83437a097800074b21e9e6a205adMathias Agopian
1203531272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glInsertEventMarkerEXT(GLsizei length, const GLchar *marker) {
1203631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1203731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1203831272606149d83437a097800074b21e9e6a205adMathias Agopian
1203931272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glInsertEventMarkerEXT);
1204031272606149d83437a097800074b21e9e6a205adMathias Agopian
1204131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument length
1204231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_length = glmsg.add_args();
1204331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_length->set_isarray(false);
1204431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_length->set_type(GLMessage::DataType::INT);
1204531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_length->add_intvalue(length);
1204631272606149d83437a097800074b21e9e6a205adMathias Agopian
1204731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument marker
1204831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_marker = glmsg.add_args();
1204931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_marker->set_isarray(false);
1205039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_marker->set_type(GLMessage::DataType::INT64);
1205139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_marker->add_int64value((uintptr_t)marker);
1205231272606149d83437a097800074b21e9e6a205adMathias Agopian
1205331272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1205405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1205505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1205631272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glInsertEventMarkerEXT(length, marker);
1205705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1205805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1205931272606149d83437a097800074b21e9e6a205adMathias Agopian
120609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
120619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) marker,
120629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
120639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1206405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1206505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
120669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1206731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1206831272606149d83437a097800074b21e9e6a205adMathias Agopian}
1206931272606149d83437a097800074b21e9e6a205adMathias Agopian
1207031272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glPushGroupMarkerEXT(GLsizei length, const GLchar *marker) {
1207131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1207231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1207331272606149d83437a097800074b21e9e6a205adMathias Agopian
1207431272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glPushGroupMarkerEXT);
1207531272606149d83437a097800074b21e9e6a205adMathias Agopian
1207631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument length
1207731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_length = glmsg.add_args();
1207831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_length->set_isarray(false);
1207931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_length->set_type(GLMessage::DataType::INT);
1208031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_length->add_intvalue(length);
1208131272606149d83437a097800074b21e9e6a205adMathias Agopian
1208231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument marker
1208331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_marker = glmsg.add_args();
1208431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_marker->set_isarray(false);
1208539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_marker->set_type(GLMessage::DataType::INT64);
1208639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_marker->add_int64value((uintptr_t)marker);
1208731272606149d83437a097800074b21e9e6a205adMathias Agopian
1208831272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1208905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1209005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1209131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glPushGroupMarkerEXT(length, marker);
1209205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1209305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1209431272606149d83437a097800074b21e9e6a205adMathias Agopian
120959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
120969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) marker,
120979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
120989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1209905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1210005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
121019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1210231272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1210331272606149d83437a097800074b21e9e6a205adMathias Agopian}
1210431272606149d83437a097800074b21e9e6a205adMathias Agopian
1210531272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glPopGroupMarkerEXT(void) {
1210631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1210731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1210831272606149d83437a097800074b21e9e6a205adMathias Agopian
1210931272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glPopGroupMarkerEXT);
1211031272606149d83437a097800074b21e9e6a205adMathias Agopian
1211131272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1211205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1211305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1211431272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glPopGroupMarkerEXT();
1211505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1211605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1211731272606149d83437a097800074b21e9e6a205adMathias Agopian
121189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
121199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
121209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1212105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1212205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
121239801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1212431272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1212531272606149d83437a097800074b21e9e6a205adMathias Agopian}
1212631272606149d83437a097800074b21e9e6a205adMathias Agopian
121270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDiscardFramebufferEXT(GLenum target, GLsizei numAttachments, const GLenum *attachments) {
121280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
121290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
121300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1213131272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glDiscardFramebufferEXT);
1213231272606149d83437a097800074b21e9e6a205adMathias Agopian
1213331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument target
1213431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_target = glmsg.add_args();
1213531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_isarray(false);
1213631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_type(GLMessage::DataType::ENUM);
1213731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->add_intvalue((int)target);
1213831272606149d83437a097800074b21e9e6a205adMathias Agopian
1213931272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument numAttachments
1214031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_numAttachments = glmsg.add_args();
1214131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_numAttachments->set_isarray(false);
1214231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_numAttachments->set_type(GLMessage::DataType::INT);
1214331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_numAttachments->add_intvalue(numAttachments);
1214431272606149d83437a097800074b21e9e6a205adMathias Agopian
1214531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument attachments
1214631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_attachments = glmsg.add_args();
1214731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_attachments->set_isarray(false);
1214839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_attachments->set_type(GLMessage::DataType::INT64);
1214939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_attachments->add_int64value((uintptr_t)attachments);
1215031272606149d83437a097800074b21e9e6a205adMathias Agopian
1215131272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1215205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1215305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1215431272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glDiscardFramebufferEXT(target, numAttachments, attachments);
1215505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1215605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1215731272606149d83437a097800074b21e9e6a205adMathias Agopian
121589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
121599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) attachments,
121609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
121619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1216205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1216305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
121649801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1216531272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1216631272606149d83437a097800074b21e9e6a205adMathias Agopian}
1216731272606149d83437a097800074b21e9e6a205adMathias Agopian
1216831272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glRenderbufferStorageMultisampleEXT(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
1216931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1217031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1217131272606149d83437a097800074b21e9e6a205adMathias Agopian
1217231272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glRenderbufferStorageMultisampleEXT);
1217331272606149d83437a097800074b21e9e6a205adMathias Agopian
1217431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument target
1217531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_target = glmsg.add_args();
1217631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_isarray(false);
1217731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_type(GLMessage::DataType::ENUM);
1217831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->add_intvalue((int)target);
1217931272606149d83437a097800074b21e9e6a205adMathias Agopian
1218031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument samples
1218131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_samples = glmsg.add_args();
1218231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_samples->set_isarray(false);
1218331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_samples->set_type(GLMessage::DataType::INT);
1218431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_samples->add_intvalue(samples);
1218531272606149d83437a097800074b21e9e6a205adMathias Agopian
1218631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument internalformat
1218731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_internalformat = glmsg.add_args();
1218831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_isarray(false);
1218931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_type(GLMessage::DataType::ENUM);
1219031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->add_intvalue((int)internalformat);
1219131272606149d83437a097800074b21e9e6a205adMathias Agopian
1219231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument width
1219331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_width = glmsg.add_args();
1219431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_isarray(false);
1219531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_type(GLMessage::DataType::INT);
1219631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->add_intvalue(width);
1219731272606149d83437a097800074b21e9e6a205adMathias Agopian
1219831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument height
1219931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_height = glmsg.add_args();
1220031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_isarray(false);
1220131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_type(GLMessage::DataType::INT);
1220231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->add_intvalue(height);
1220331272606149d83437a097800074b21e9e6a205adMathias Agopian
1220431272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1220505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1220605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1220731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glRenderbufferStorageMultisampleEXT(target, samples, internalformat, width, height);
1220805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1220905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1221031272606149d83437a097800074b21e9e6a205adMathias Agopian
122119801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
122129801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
122139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1221405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1221505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
122169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1221731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1221831272606149d83437a097800074b21e9e6a205adMathias Agopian}
1221931272606149d83437a097800074b21e9e6a205adMathias Agopian
1222031272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glFramebufferTexture2DMultisampleEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples) {
1222131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1222231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1222331272606149d83437a097800074b21e9e6a205adMathias Agopian
1222431272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glFramebufferTexture2DMultisampleEXT);
1222531272606149d83437a097800074b21e9e6a205adMathias Agopian
1222631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument target
1222731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_target = glmsg.add_args();
1222831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_isarray(false);
1222931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_type(GLMessage::DataType::ENUM);
1223031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->add_intvalue((int)target);
1223131272606149d83437a097800074b21e9e6a205adMathias Agopian
1223231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument attachment
1223331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_attachment = glmsg.add_args();
1223431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_attachment->set_isarray(false);
1223531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_attachment->set_type(GLMessage::DataType::ENUM);
1223631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_attachment->add_intvalue((int)attachment);
1223731272606149d83437a097800074b21e9e6a205adMathias Agopian
1223831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument textarget
1223931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_textarget = glmsg.add_args();
1224031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_textarget->set_isarray(false);
1224131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_textarget->set_type(GLMessage::DataType::ENUM);
1224231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_textarget->add_intvalue((int)textarget);
1224331272606149d83437a097800074b21e9e6a205adMathias Agopian
1224431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument texture
1224531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_texture = glmsg.add_args();
1224631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_texture->set_isarray(false);
1224731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_texture->set_type(GLMessage::DataType::INT);
1224831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_texture->add_intvalue(texture);
1224931272606149d83437a097800074b21e9e6a205adMathias Agopian
1225031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument level
1225131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_level = glmsg.add_args();
1225231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_level->set_isarray(false);
1225331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_level->set_type(GLMessage::DataType::INT);
1225431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_level->add_intvalue(level);
1225531272606149d83437a097800074b21e9e6a205adMathias Agopian
1225631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument samples
1225731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_samples = glmsg.add_args();
1225831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_samples->set_isarray(false);
1225931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_samples->set_type(GLMessage::DataType::INT);
1226031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_samples->add_intvalue(samples);
1226131272606149d83437a097800074b21e9e6a205adMathias Agopian
1226231272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1226305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1226405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1226531272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glFramebufferTexture2DMultisampleEXT(target, attachment, textarget, texture, level, samples);
1226605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1226705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1226831272606149d83437a097800074b21e9e6a205adMathias Agopian
122699801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
122709801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
122719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1227205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1227305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
122749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1227531272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1227631272606149d83437a097800074b21e9e6a205adMathias Agopian}
1227731272606149d83437a097800074b21e9e6a205adMathias Agopian
1227831272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glMultiDrawArraysEXT(GLenum mode, GLint *first, GLsizei *count, GLsizei primcount) {
1227931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1228031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1228131272606149d83437a097800074b21e9e6a205adMathias Agopian
1228231272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glMultiDrawArraysEXT);
1228331272606149d83437a097800074b21e9e6a205adMathias Agopian
1228431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument mode
1228531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_mode = glmsg.add_args();
1228631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_mode->set_isarray(false);
1228731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_mode->set_type(GLMessage::DataType::ENUM);
1228831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_mode->add_intvalue((int)mode);
1228931272606149d83437a097800074b21e9e6a205adMathias Agopian
1229031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument first
1229131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_first = glmsg.add_args();
1229231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_first->set_isarray(false);
1229339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_first->set_type(GLMessage::DataType::INT64);
1229439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_first->add_int64value((uintptr_t)first);
1229531272606149d83437a097800074b21e9e6a205adMathias Agopian
1229631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument count
1229731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_count = glmsg.add_args();
1229831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_isarray(false);
1229939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_count->set_type(GLMessage::DataType::INT64);
1230039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_count->add_int64value((uintptr_t)count);
1230131272606149d83437a097800074b21e9e6a205adMathias Agopian
1230231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument primcount
1230331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_primcount = glmsg.add_args();
1230431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_primcount->set_isarray(false);
1230531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_primcount->set_type(GLMessage::DataType::INT);
1230631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_primcount->add_intvalue(primcount);
1230731272606149d83437a097800074b21e9e6a205adMathias Agopian
1230831272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1230905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1231005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1231131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glMultiDrawArraysEXT(mode, first, count, primcount);
1231205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1231305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1231431272606149d83437a097800074b21e9e6a205adMathias Agopian
123159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
123169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) first,
123179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) count,
123189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
123199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1232005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1232105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
123229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1232331272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1232431272606149d83437a097800074b21e9e6a205adMathias Agopian}
1232531272606149d83437a097800074b21e9e6a205adMathias Agopian
1232631272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glMultiDrawElementsEXT(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount) {
1232731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1232831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1232931272606149d83437a097800074b21e9e6a205adMathias Agopian
1233031272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glMultiDrawElementsEXT);
1233131272606149d83437a097800074b21e9e6a205adMathias Agopian
1233231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument mode
1233331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_mode = glmsg.add_args();
1233431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_mode->set_isarray(false);
1233531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_mode->set_type(GLMessage::DataType::ENUM);
1233631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_mode->add_intvalue((int)mode);
1233731272606149d83437a097800074b21e9e6a205adMathias Agopian
1233831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument count
1233931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_count = glmsg.add_args();
1234031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_isarray(false);
1234139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_count->set_type(GLMessage::DataType::INT64);
1234239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_count->add_int64value((uintptr_t)count);
1234331272606149d83437a097800074b21e9e6a205adMathias Agopian
1234431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument type
1234531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_type = glmsg.add_args();
1234631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_type->set_isarray(false);
1234731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_type->set_type(GLMessage::DataType::ENUM);
1234831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_type->add_intvalue((int)type);
1234931272606149d83437a097800074b21e9e6a205adMathias Agopian
1235031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument indices
1235131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_indices = glmsg.add_args();
1235231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_indices->set_isarray(false);
1235339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_indices->set_type(GLMessage::DataType::INT64);
1235439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_indices->add_int64value((uintptr_t)indices);
1235531272606149d83437a097800074b21e9e6a205adMathias Agopian
1235631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument primcount
1235731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_primcount = glmsg.add_args();
1235831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_primcount->set_isarray(false);
1235931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_primcount->set_type(GLMessage::DataType::INT);
1236031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_primcount->add_intvalue(primcount);
1236131272606149d83437a097800074b21e9e6a205adMathias Agopian
1236231272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1236305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1236405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1236531272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glMultiDrawElementsEXT(mode, count, type, indices, primcount);
1236605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1236705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1236831272606149d83437a097800074b21e9e6a205adMathias Agopian
123699801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
123709801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) count,
123719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) indices,
123729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
123739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1237405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1237505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
123769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1237731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1237831272606149d83437a097800074b21e9e6a205adMathias Agopian}
1237931272606149d83437a097800074b21e9e6a205adMathias Agopian
1238031272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glGenQueriesEXT(GLsizei n, GLuint *ids) {
1238131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1238231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1238331272606149d83437a097800074b21e9e6a205adMathias Agopian
1238431272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glGenQueriesEXT);
1238531272606149d83437a097800074b21e9e6a205adMathias Agopian
1238631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument n
1238731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_n = glmsg.add_args();
1238831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_n->set_isarray(false);
1238931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_n->set_type(GLMessage::DataType::INT);
1239031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_n->add_intvalue(n);
1239131272606149d83437a097800074b21e9e6a205adMathias Agopian
1239231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument ids
1239331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_ids = glmsg.add_args();
1239431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_ids->set_isarray(false);
1239539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_ids->set_type(GLMessage::DataType::INT64);
1239639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_ids->add_int64value((uintptr_t)ids);
1239731272606149d83437a097800074b21e9e6a205adMathias Agopian
1239831272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1239905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1240005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1240131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glGenQueriesEXT(n, ids);
1240205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1240305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1240431272606149d83437a097800074b21e9e6a205adMathias Agopian
124059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
124069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) ids,
124079801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
124089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1240905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1241005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
124119801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1241231272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1241331272606149d83437a097800074b21e9e6a205adMathias Agopian}
1241431272606149d83437a097800074b21e9e6a205adMathias Agopian
1241531272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glDeleteQueriesEXT(GLsizei n, const GLuint *ids) {
1241631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1241731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1241831272606149d83437a097800074b21e9e6a205adMathias Agopian
1241931272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glDeleteQueriesEXT);
1242031272606149d83437a097800074b21e9e6a205adMathias Agopian
1242131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument n
1242231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_n = glmsg.add_args();
1242331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_n->set_isarray(false);
1242431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_n->set_type(GLMessage::DataType::INT);
1242531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_n->add_intvalue(n);
1242631272606149d83437a097800074b21e9e6a205adMathias Agopian
1242731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument ids
1242831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_ids = glmsg.add_args();
1242931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_ids->set_isarray(false);
1243039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_ids->set_type(GLMessage::DataType::INT64);
1243139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_ids->add_int64value((uintptr_t)ids);
1243231272606149d83437a097800074b21e9e6a205adMathias Agopian
1243331272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1243405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1243505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1243631272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glDeleteQueriesEXT(n, ids);
1243705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1243805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1243931272606149d83437a097800074b21e9e6a205adMathias Agopian
124409801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
124419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) ids,
124429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
124439801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1244405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1244505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
124469801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1244731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1244831272606149d83437a097800074b21e9e6a205adMathias Agopian}
1244931272606149d83437a097800074b21e9e6a205adMathias Agopian
1245031272606149d83437a097800074b21e9e6a205adMathias AgopianGLboolean GLTrace_glIsQueryEXT(GLuint id) {
1245131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1245231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1245331272606149d83437a097800074b21e9e6a205adMathias Agopian
1245431272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glIsQueryEXT);
1245531272606149d83437a097800074b21e9e6a205adMathias Agopian
1245631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument id
1245731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_id = glmsg.add_args();
1245831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_id->set_isarray(false);
1245931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_id->set_type(GLMessage::DataType::INT);
1246031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_id->add_intvalue(id);
1246131272606149d83437a097800074b21e9e6a205adMathias Agopian
1246231272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1246305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1246405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1246531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLboolean retValue = glContext->hooks->gl.glIsQueryEXT(id);
1246605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1246705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1246831272606149d83437a097800074b21e9e6a205adMathias Agopian
1246931272606149d83437a097800074b21e9e6a205adMathias Agopian    // set return value
1247031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
1247131272606149d83437a097800074b21e9e6a205adMathias Agopian    rt->set_isarray(false);
1247231272606149d83437a097800074b21e9e6a205adMathias Agopian    rt->set_type(GLMessage::DataType::BOOL);
1247331272606149d83437a097800074b21e9e6a205adMathias Agopian    rt->add_boolvalue(retValue);
1247431272606149d83437a097800074b21e9e6a205adMathias Agopian
124759801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
124769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
124779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1247805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1247905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
124809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1248131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1248231272606149d83437a097800074b21e9e6a205adMathias Agopian
1248331272606149d83437a097800074b21e9e6a205adMathias Agopian    return retValue;
1248431272606149d83437a097800074b21e9e6a205adMathias Agopian}
1248531272606149d83437a097800074b21e9e6a205adMathias Agopian
1248631272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glBeginQueryEXT(GLenum target, GLuint id) {
1248731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1248831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1248931272606149d83437a097800074b21e9e6a205adMathias Agopian
1249031272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glBeginQueryEXT);
1249131272606149d83437a097800074b21e9e6a205adMathias Agopian
1249231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument target
1249331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_target = glmsg.add_args();
1249431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_isarray(false);
1249531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_type(GLMessage::DataType::ENUM);
1249631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->add_intvalue((int)target);
1249731272606149d83437a097800074b21e9e6a205adMathias Agopian
1249831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument id
1249931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_id = glmsg.add_args();
1250031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_id->set_isarray(false);
1250131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_id->set_type(GLMessage::DataType::INT);
1250231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_id->add_intvalue(id);
1250331272606149d83437a097800074b21e9e6a205adMathias Agopian
1250431272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1250505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1250605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1250731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glBeginQueryEXT(target, id);
1250805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1250905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1251031272606149d83437a097800074b21e9e6a205adMathias Agopian
125119801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
125129801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
125139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1251405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1251505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
125169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1251731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1251831272606149d83437a097800074b21e9e6a205adMathias Agopian}
1251931272606149d83437a097800074b21e9e6a205adMathias Agopian
1252031272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glEndQueryEXT(GLenum target) {
1252131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1252231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1252331272606149d83437a097800074b21e9e6a205adMathias Agopian
1252431272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glEndQueryEXT);
1252531272606149d83437a097800074b21e9e6a205adMathias Agopian
1252631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument target
1252731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_target = glmsg.add_args();
1252831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_isarray(false);
1252931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_type(GLMessage::DataType::ENUM);
1253031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->add_intvalue((int)target);
1253131272606149d83437a097800074b21e9e6a205adMathias Agopian
1253231272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1253305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1253405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1253531272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glEndQueryEXT(target);
1253605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1253705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1253831272606149d83437a097800074b21e9e6a205adMathias Agopian
125399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
125409801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
125419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1254205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1254305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
125449801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1254531272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1254631272606149d83437a097800074b21e9e6a205adMathias Agopian}
1254731272606149d83437a097800074b21e9e6a205adMathias Agopian
1254831272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glGetQueryivEXT(GLenum target, GLenum pname, GLint *params) {
1254931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1255031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1255131272606149d83437a097800074b21e9e6a205adMathias Agopian
1255231272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glGetQueryivEXT);
1255331272606149d83437a097800074b21e9e6a205adMathias Agopian
1255431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument target
1255531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_target = glmsg.add_args();
1255631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_isarray(false);
1255731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_type(GLMessage::DataType::ENUM);
1255831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->add_intvalue((int)target);
1255931272606149d83437a097800074b21e9e6a205adMathias Agopian
1256031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument pname
1256131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_pname = glmsg.add_args();
1256231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pname->set_isarray(false);
1256331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pname->set_type(GLMessage::DataType::ENUM);
1256431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pname->add_intvalue((int)pname);
1256531272606149d83437a097800074b21e9e6a205adMathias Agopian
1256631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument params
1256731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_params = glmsg.add_args();
1256831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_params->set_isarray(false);
1256939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1257039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
1257131272606149d83437a097800074b21e9e6a205adMathias Agopian
1257231272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1257305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1257405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1257531272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glGetQueryivEXT(target, pname, params);
1257605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1257705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1257831272606149d83437a097800074b21e9e6a205adMathias Agopian
125799801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
125809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
125819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
125829801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1258305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1258405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
125859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1258631272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1258731272606149d83437a097800074b21e9e6a205adMathias Agopian}
1258831272606149d83437a097800074b21e9e6a205adMathias Agopian
1258931272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glGetQueryObjectuivEXT(GLuint id, GLenum pname, GLuint *params) {
1259031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1259131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1259231272606149d83437a097800074b21e9e6a205adMathias Agopian
1259331272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glGetQueryObjectuivEXT);
1259431272606149d83437a097800074b21e9e6a205adMathias Agopian
1259531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument id
1259631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_id = glmsg.add_args();
1259731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_id->set_isarray(false);
1259831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_id->set_type(GLMessage::DataType::INT);
1259931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_id->add_intvalue(id);
1260031272606149d83437a097800074b21e9e6a205adMathias Agopian
1260131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument pname
1260231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_pname = glmsg.add_args();
1260331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pname->set_isarray(false);
1260431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pname->set_type(GLMessage::DataType::ENUM);
1260531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pname->add_intvalue((int)pname);
1260631272606149d83437a097800074b21e9e6a205adMathias Agopian
1260731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument params
1260831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_params = glmsg.add_args();
1260931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_params->set_isarray(false);
1261039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1261139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
1261231272606149d83437a097800074b21e9e6a205adMathias Agopian
1261331272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1261405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1261505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1261631272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glGetQueryObjectuivEXT(id, pname, params);
1261705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1261805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1261931272606149d83437a097800074b21e9e6a205adMathias Agopian
126209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
126219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
126229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
126239801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1262405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1262505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
126269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1262731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1262831272606149d83437a097800074b21e9e6a205adMathias Agopian}
1262931272606149d83437a097800074b21e9e6a205adMathias Agopian
1263031272606149d83437a097800074b21e9e6a205adMathias AgopianGLenum GLTrace_glGetGraphicsResetStatusEXT(void) {
1263131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1263231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1263331272606149d83437a097800074b21e9e6a205adMathias Agopian
1263431272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glGetGraphicsResetStatusEXT);
1263531272606149d83437a097800074b21e9e6a205adMathias Agopian
1263631272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1263705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1263805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1263931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLenum retValue = glContext->hooks->gl.glGetGraphicsResetStatusEXT();
1264005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1264105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1264231272606149d83437a097800074b21e9e6a205adMathias Agopian
1264331272606149d83437a097800074b21e9e6a205adMathias Agopian    // set return value
1264431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
1264531272606149d83437a097800074b21e9e6a205adMathias Agopian    rt->set_isarray(false);
1264631272606149d83437a097800074b21e9e6a205adMathias Agopian    rt->set_type(GLMessage::DataType::ENUM);
1264731272606149d83437a097800074b21e9e6a205adMathias Agopian    rt->add_intvalue((int)retValue);
1264831272606149d83437a097800074b21e9e6a205adMathias Agopian
126499801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
126509801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
126519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1265205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1265305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
126549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1265531272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1265631272606149d83437a097800074b21e9e6a205adMathias Agopian
1265731272606149d83437a097800074b21e9e6a205adMathias Agopian    return retValue;
1265831272606149d83437a097800074b21e9e6a205adMathias Agopian}
1265931272606149d83437a097800074b21e9e6a205adMathias Agopian
1266031272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glReadnPixelsEXT(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data) {
1266131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1266231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1266331272606149d83437a097800074b21e9e6a205adMathias Agopian
1266431272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glReadnPixelsEXT);
1266531272606149d83437a097800074b21e9e6a205adMathias Agopian
1266631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument x
1266731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_x = glmsg.add_args();
1266831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_isarray(false);
1266931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_type(GLMessage::DataType::INT);
1267031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->add_intvalue(x);
1267131272606149d83437a097800074b21e9e6a205adMathias Agopian
1267231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument y
1267331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_y = glmsg.add_args();
1267431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->set_isarray(false);
1267531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->set_type(GLMessage::DataType::INT);
1267631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->add_intvalue(y);
1267731272606149d83437a097800074b21e9e6a205adMathias Agopian
1267831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument width
1267931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_width = glmsg.add_args();
1268031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_isarray(false);
1268131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_type(GLMessage::DataType::INT);
1268231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->add_intvalue(width);
1268331272606149d83437a097800074b21e9e6a205adMathias Agopian
1268431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument height
1268531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_height = glmsg.add_args();
1268631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_isarray(false);
1268731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_type(GLMessage::DataType::INT);
1268831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->add_intvalue(height);
1268931272606149d83437a097800074b21e9e6a205adMathias Agopian
1269031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument format
1269131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_format = glmsg.add_args();
1269231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_format->set_isarray(false);
1269331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_format->set_type(GLMessage::DataType::ENUM);
1269431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_format->add_intvalue((int)format);
1269531272606149d83437a097800074b21e9e6a205adMathias Agopian
1269631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument type
1269731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_type = glmsg.add_args();
1269831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_type->set_isarray(false);
1269931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_type->set_type(GLMessage::DataType::ENUM);
1270031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_type->add_intvalue((int)type);
1270131272606149d83437a097800074b21e9e6a205adMathias Agopian
1270231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument bufSize
1270331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_bufSize = glmsg.add_args();
1270431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufSize->set_isarray(false);
1270531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufSize->set_type(GLMessage::DataType::INT);
1270631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufSize->add_intvalue(bufSize);
1270731272606149d83437a097800074b21e9e6a205adMathias Agopian
1270831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument data
1270931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_data = glmsg.add_args();
1271031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_data->set_isarray(false);
1271139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_data->set_type(GLMessage::DataType::INT64);
1271239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_data->add_int64value((uintptr_t)data);
1271331272606149d83437a097800074b21e9e6a205adMathias Agopian
1271431272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1271505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1271605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1271731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glReadnPixelsEXT(x, y, width, height, format, type, bufSize, data);
1271805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1271905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1272031272606149d83437a097800074b21e9e6a205adMathias Agopian
127219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
127229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) data,
127239801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
127249801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1272505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1272605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
127279801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1272831272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1272931272606149d83437a097800074b21e9e6a205adMathias Agopian}
1273031272606149d83437a097800074b21e9e6a205adMathias Agopian
1273131272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glGetnUniformfvEXT(GLuint program, GLint location, GLsizei bufSize, float *params) {
1273231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1273331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1273431272606149d83437a097800074b21e9e6a205adMathias Agopian
1273531272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glGetnUniformfvEXT);
1273631272606149d83437a097800074b21e9e6a205adMathias Agopian
1273731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
1273831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
1273931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
1274031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
1274131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
1274231272606149d83437a097800074b21e9e6a205adMathias Agopian
1274331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
1274431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
1274531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
1274631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
1274731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
1274831272606149d83437a097800074b21e9e6a205adMathias Agopian
1274931272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument bufSize
1275031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_bufSize = glmsg.add_args();
1275131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufSize->set_isarray(false);
1275231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufSize->set_type(GLMessage::DataType::INT);
1275331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufSize->add_intvalue(bufSize);
1275431272606149d83437a097800074b21e9e6a205adMathias Agopian
1275531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument params
1275631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_params = glmsg.add_args();
1275731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_params->set_isarray(false);
1275839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1275939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
1276031272606149d83437a097800074b21e9e6a205adMathias Agopian
1276131272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1276205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1276305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1276431272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glGetnUniformfvEXT(program, location, bufSize, params);
1276505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1276605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1276731272606149d83437a097800074b21e9e6a205adMathias Agopian
127689801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
127699801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
127709801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
127719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1277205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1277305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
127749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1277531272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1277631272606149d83437a097800074b21e9e6a205adMathias Agopian}
1277731272606149d83437a097800074b21e9e6a205adMathias Agopian
1277831272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glGetnUniformivEXT(GLuint program, GLint location, GLsizei bufSize, GLint *params) {
1277931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1278031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1278131272606149d83437a097800074b21e9e6a205adMathias Agopian
1278231272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glGetnUniformivEXT);
1278331272606149d83437a097800074b21e9e6a205adMathias Agopian
1278431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
1278531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
1278631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
1278731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
1278831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
1278931272606149d83437a097800074b21e9e6a205adMathias Agopian
1279031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
1279131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
1279231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
1279331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
1279431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
1279531272606149d83437a097800074b21e9e6a205adMathias Agopian
1279631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument bufSize
1279731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_bufSize = glmsg.add_args();
1279831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufSize->set_isarray(false);
1279931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufSize->set_type(GLMessage::DataType::INT);
1280031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufSize->add_intvalue(bufSize);
1280131272606149d83437a097800074b21e9e6a205adMathias Agopian
1280231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument params
1280331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_params = glmsg.add_args();
1280431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_params->set_isarray(false);
1280539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1280639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
1280731272606149d83437a097800074b21e9e6a205adMathias Agopian
1280831272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1280905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1281005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1281131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glGetnUniformivEXT(program, location, bufSize, params);
1281205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1281305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1281431272606149d83437a097800074b21e9e6a205adMathias Agopian
128159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
128169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
128179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
128189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1281905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1282005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
128219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1282231272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1282331272606149d83437a097800074b21e9e6a205adMathias Agopian}
1282431272606149d83437a097800074b21e9e6a205adMathias Agopian
1282531272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glUseProgramStagesEXT(GLuint pipeline, GLbitfield stages, GLuint program) {
1282631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1282731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1282831272606149d83437a097800074b21e9e6a205adMathias Agopian
1282931272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glUseProgramStagesEXT);
1283031272606149d83437a097800074b21e9e6a205adMathias Agopian
1283131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument pipeline
1283231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_pipeline = glmsg.add_args();
1283331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->set_isarray(false);
1283431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->set_type(GLMessage::DataType::INT);
1283531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->add_intvalue(pipeline);
1283631272606149d83437a097800074b21e9e6a205adMathias Agopian
1283731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument stages
1283831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_stages = glmsg.add_args();
1283931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_stages->set_isarray(false);
1284031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_stages->set_type(GLMessage::DataType::INT);
1284131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_stages->add_intvalue(stages);
1284231272606149d83437a097800074b21e9e6a205adMathias Agopian
1284331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
1284431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
1284531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
1284631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
1284731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
1284831272606149d83437a097800074b21e9e6a205adMathias Agopian
1284931272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1285005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1285105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1285231272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glUseProgramStagesEXT(pipeline, stages, program);
1285305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1285405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1285531272606149d83437a097800074b21e9e6a205adMathias Agopian
128569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
128579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
128589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1285905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1286005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
128619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1286231272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1286331272606149d83437a097800074b21e9e6a205adMathias Agopian}
1286431272606149d83437a097800074b21e9e6a205adMathias Agopian
1286531272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glActiveShaderProgramEXT(GLuint pipeline, GLuint program) {
1286631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1286731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1286831272606149d83437a097800074b21e9e6a205adMathias Agopian
1286931272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glActiveShaderProgramEXT);
1287031272606149d83437a097800074b21e9e6a205adMathias Agopian
1287131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument pipeline
1287231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_pipeline = glmsg.add_args();
1287331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->set_isarray(false);
1287431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->set_type(GLMessage::DataType::INT);
1287531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->add_intvalue(pipeline);
1287631272606149d83437a097800074b21e9e6a205adMathias Agopian
1287731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
1287831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
1287931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
1288031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
1288131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
1288231272606149d83437a097800074b21e9e6a205adMathias Agopian
1288331272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1288405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1288505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1288631272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glActiveShaderProgramEXT(pipeline, program);
1288705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1288805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1288931272606149d83437a097800074b21e9e6a205adMathias Agopian
128909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
128919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
128929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1289305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1289405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
128959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1289631272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1289731272606149d83437a097800074b21e9e6a205adMathias Agopian}
1289831272606149d83437a097800074b21e9e6a205adMathias Agopian
1289931272606149d83437a097800074b21e9e6a205adMathias AgopianGLuint GLTrace_glCreateShaderProgramvEXT(GLenum type, GLsizei count, const GLchar **strings) {
1290031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1290131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1290231272606149d83437a097800074b21e9e6a205adMathias Agopian
1290331272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glCreateShaderProgramvEXT);
1290431272606149d83437a097800074b21e9e6a205adMathias Agopian
1290531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument type
1290631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_type = glmsg.add_args();
1290731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_type->set_isarray(false);
1290831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_type->set_type(GLMessage::DataType::ENUM);
1290931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_type->add_intvalue((int)type);
1291031272606149d83437a097800074b21e9e6a205adMathias Agopian
1291131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument count
1291231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_count = glmsg.add_args();
1291331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_isarray(false);
1291431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_type(GLMessage::DataType::INT);
1291531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->add_intvalue(count);
1291631272606149d83437a097800074b21e9e6a205adMathias Agopian
1291731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument strings
1291831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_strings = glmsg.add_args();
1291931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_strings->set_isarray(false);
1292039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_strings->set_type(GLMessage::DataType::INT64);
1292139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_strings->add_int64value((uintptr_t)strings);
1292231272606149d83437a097800074b21e9e6a205adMathias Agopian
1292331272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1292405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1292505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1292631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLuint retValue = glContext->hooks->gl.glCreateShaderProgramvEXT(type, count, strings);
1292705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1292805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1292931272606149d83437a097800074b21e9e6a205adMathias Agopian
1293031272606149d83437a097800074b21e9e6a205adMathias Agopian    // set return value
1293131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
1293231272606149d83437a097800074b21e9e6a205adMathias Agopian    rt->set_isarray(false);
1293331272606149d83437a097800074b21e9e6a205adMathias Agopian    rt->set_type(GLMessage::DataType::INT);
1293431272606149d83437a097800074b21e9e6a205adMathias Agopian    rt->add_intvalue(retValue);
1293531272606149d83437a097800074b21e9e6a205adMathias Agopian
129369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
129379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) strings,
129389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
129399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1294005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1294105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
129429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1294331272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1294431272606149d83437a097800074b21e9e6a205adMathias Agopian
1294531272606149d83437a097800074b21e9e6a205adMathias Agopian    return retValue;
1294631272606149d83437a097800074b21e9e6a205adMathias Agopian}
1294731272606149d83437a097800074b21e9e6a205adMathias Agopian
1294831272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glBindProgramPipelineEXT(GLuint pipeline) {
1294931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1295031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1295131272606149d83437a097800074b21e9e6a205adMathias Agopian
1295231272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glBindProgramPipelineEXT);
1295331272606149d83437a097800074b21e9e6a205adMathias Agopian
1295431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument pipeline
1295531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_pipeline = glmsg.add_args();
1295631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->set_isarray(false);
1295731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->set_type(GLMessage::DataType::INT);
1295831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->add_intvalue(pipeline);
1295931272606149d83437a097800074b21e9e6a205adMathias Agopian
1296031272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1296105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1296205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1296331272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glBindProgramPipelineEXT(pipeline);
1296405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1296505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1296631272606149d83437a097800074b21e9e6a205adMathias Agopian
129679801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
129689801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
129699801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1297005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1297105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
129729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1297331272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1297431272606149d83437a097800074b21e9e6a205adMathias Agopian}
1297531272606149d83437a097800074b21e9e6a205adMathias Agopian
1297631272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glDeleteProgramPipelinesEXT(GLsizei n, const GLuint *pipelines) {
1297731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1297831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1297931272606149d83437a097800074b21e9e6a205adMathias Agopian
1298031272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glDeleteProgramPipelinesEXT);
1298131272606149d83437a097800074b21e9e6a205adMathias Agopian
1298231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument n
1298331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_n = glmsg.add_args();
1298431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_n->set_isarray(false);
1298531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_n->set_type(GLMessage::DataType::INT);
1298631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_n->add_intvalue(n);
1298731272606149d83437a097800074b21e9e6a205adMathias Agopian
1298831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument pipelines
1298931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_pipelines = glmsg.add_args();
1299031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipelines->set_isarray(false);
1299139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pipelines->set_type(GLMessage::DataType::INT64);
1299239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pipelines->add_int64value((uintptr_t)pipelines);
1299331272606149d83437a097800074b21e9e6a205adMathias Agopian
1299431272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1299505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1299605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1299731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glDeleteProgramPipelinesEXT(n, pipelines);
1299805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1299905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1300031272606149d83437a097800074b21e9e6a205adMathias Agopian
130019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
130029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) pipelines,
130039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
130049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1300505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1300605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
130079801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1300831272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1300931272606149d83437a097800074b21e9e6a205adMathias Agopian}
1301031272606149d83437a097800074b21e9e6a205adMathias Agopian
1301131272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glGenProgramPipelinesEXT(GLsizei n, GLuint *pipelines) {
1301231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1301331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1301431272606149d83437a097800074b21e9e6a205adMathias Agopian
1301531272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glGenProgramPipelinesEXT);
1301631272606149d83437a097800074b21e9e6a205adMathias Agopian
1301731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument n
1301831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_n = glmsg.add_args();
1301931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_n->set_isarray(false);
1302031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_n->set_type(GLMessage::DataType::INT);
1302131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_n->add_intvalue(n);
1302231272606149d83437a097800074b21e9e6a205adMathias Agopian
1302331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument pipelines
1302431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_pipelines = glmsg.add_args();
1302531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipelines->set_isarray(false);
1302639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pipelines->set_type(GLMessage::DataType::INT64);
1302739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pipelines->add_int64value((uintptr_t)pipelines);
1302831272606149d83437a097800074b21e9e6a205adMathias Agopian
1302931272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1303005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1303105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1303231272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glGenProgramPipelinesEXT(n, pipelines);
1303305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1303405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1303531272606149d83437a097800074b21e9e6a205adMathias Agopian
130369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
130379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) pipelines,
130389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
130399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1304005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1304105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
130429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1304331272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1304431272606149d83437a097800074b21e9e6a205adMathias Agopian}
1304531272606149d83437a097800074b21e9e6a205adMathias Agopian
1304631272606149d83437a097800074b21e9e6a205adMathias AgopianGLboolean GLTrace_glIsProgramPipelineEXT(GLuint pipeline) {
1304731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1304831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1304931272606149d83437a097800074b21e9e6a205adMathias Agopian
1305031272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glIsProgramPipelineEXT);
1305131272606149d83437a097800074b21e9e6a205adMathias Agopian
1305231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument pipeline
1305331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_pipeline = glmsg.add_args();
1305431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->set_isarray(false);
1305531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->set_type(GLMessage::DataType::INT);
1305631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->add_intvalue(pipeline);
1305731272606149d83437a097800074b21e9e6a205adMathias Agopian
1305831272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1305905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1306005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1306131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLboolean retValue = glContext->hooks->gl.glIsProgramPipelineEXT(pipeline);
1306205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1306305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1306431272606149d83437a097800074b21e9e6a205adMathias Agopian
1306531272606149d83437a097800074b21e9e6a205adMathias Agopian    // set return value
1306631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
1306731272606149d83437a097800074b21e9e6a205adMathias Agopian    rt->set_isarray(false);
1306831272606149d83437a097800074b21e9e6a205adMathias Agopian    rt->set_type(GLMessage::DataType::BOOL);
1306931272606149d83437a097800074b21e9e6a205adMathias Agopian    rt->add_boolvalue(retValue);
1307031272606149d83437a097800074b21e9e6a205adMathias Agopian
130719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
130729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
130739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1307405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1307505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
130769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1307731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1307831272606149d83437a097800074b21e9e6a205adMathias Agopian
1307931272606149d83437a097800074b21e9e6a205adMathias Agopian    return retValue;
1308031272606149d83437a097800074b21e9e6a205adMathias Agopian}
1308131272606149d83437a097800074b21e9e6a205adMathias Agopian
1308231272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramParameteriEXT(GLuint program, GLenum pname, GLint value) {
1308331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1308431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1308531272606149d83437a097800074b21e9e6a205adMathias Agopian
1308631272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramParameteriEXT);
1308731272606149d83437a097800074b21e9e6a205adMathias Agopian
1308831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
1308931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
1309031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
1309131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
1309231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
1309331272606149d83437a097800074b21e9e6a205adMathias Agopian
1309431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument pname
1309531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_pname = glmsg.add_args();
1309631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pname->set_isarray(false);
1309731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pname->set_type(GLMessage::DataType::ENUM);
1309831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pname->add_intvalue((int)pname);
1309931272606149d83437a097800074b21e9e6a205adMathias Agopian
1310031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument value
1310131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_value = glmsg.add_args();
1310231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_isarray(false);
1310331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_type(GLMessage::DataType::INT);
1310431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->add_intvalue(value);
1310531272606149d83437a097800074b21e9e6a205adMathias Agopian
1310631272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1310705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1310805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1310931272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramParameteriEXT(program, pname, value);
1311005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1311105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1311231272606149d83437a097800074b21e9e6a205adMathias Agopian
131139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
131149801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
131159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1311605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1311705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
131189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1311931272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1312031272606149d83437a097800074b21e9e6a205adMathias Agopian}
1312131272606149d83437a097800074b21e9e6a205adMathias Agopian
1312231272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glGetProgramPipelineivEXT(GLuint pipeline, GLenum pname, GLint *params) {
1312331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1312431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1312531272606149d83437a097800074b21e9e6a205adMathias Agopian
1312631272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glGetProgramPipelineivEXT);
1312731272606149d83437a097800074b21e9e6a205adMathias Agopian
1312831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument pipeline
1312931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_pipeline = glmsg.add_args();
1313031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->set_isarray(false);
1313131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->set_type(GLMessage::DataType::INT);
1313231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->add_intvalue(pipeline);
1313331272606149d83437a097800074b21e9e6a205adMathias Agopian
1313431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument pname
1313531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_pname = glmsg.add_args();
1313631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pname->set_isarray(false);
1313731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pname->set_type(GLMessage::DataType::ENUM);
1313831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pname->add_intvalue((int)pname);
1313931272606149d83437a097800074b21e9e6a205adMathias Agopian
1314031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument params
1314131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_params = glmsg.add_args();
1314231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_params->set_isarray(false);
1314339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1314439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
1314531272606149d83437a097800074b21e9e6a205adMathias Agopian
1314631272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1314705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1314805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1314931272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glGetProgramPipelineivEXT(pipeline, pname, params);
1315005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1315105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1315231272606149d83437a097800074b21e9e6a205adMathias Agopian
131539801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
131549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
131559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
131569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1315705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1315805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
131599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1316031272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1316131272606149d83437a097800074b21e9e6a205adMathias Agopian}
1316231272606149d83437a097800074b21e9e6a205adMathias Agopian
1316331272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform1iEXT(GLuint program, GLint location, GLint x) {
1316431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1316531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1316631272606149d83437a097800074b21e9e6a205adMathias Agopian
1316731272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform1iEXT);
1316831272606149d83437a097800074b21e9e6a205adMathias Agopian
1316931272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
1317031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
1317131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
1317231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
1317331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
1317431272606149d83437a097800074b21e9e6a205adMathias Agopian
1317531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
1317631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
1317731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
1317831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
1317931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
1318031272606149d83437a097800074b21e9e6a205adMathias Agopian
1318131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument x
1318231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_x = glmsg.add_args();
1318331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_isarray(false);
1318431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_type(GLMessage::DataType::INT);
1318531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->add_intvalue(x);
1318631272606149d83437a097800074b21e9e6a205adMathias Agopian
1318731272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1318805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1318905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1319031272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform1iEXT(program, location, x);
1319105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1319205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1319331272606149d83437a097800074b21e9e6a205adMathias Agopian
131949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
131959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
131969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1319705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1319805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
131999801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1320031272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1320131272606149d83437a097800074b21e9e6a205adMathias Agopian}
1320231272606149d83437a097800074b21e9e6a205adMathias Agopian
1320331272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform2iEXT(GLuint program, GLint location, GLint x, GLint y) {
1320431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1320531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1320631272606149d83437a097800074b21e9e6a205adMathias Agopian
1320731272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform2iEXT);
1320831272606149d83437a097800074b21e9e6a205adMathias Agopian
1320931272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
1321031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
1321131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
1321231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
1321331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
1321431272606149d83437a097800074b21e9e6a205adMathias Agopian
1321531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
1321631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
1321731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
1321831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
1321931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
1322031272606149d83437a097800074b21e9e6a205adMathias Agopian
1322131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument x
1322231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_x = glmsg.add_args();
1322331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_isarray(false);
1322431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_type(GLMessage::DataType::INT);
1322531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->add_intvalue(x);
1322631272606149d83437a097800074b21e9e6a205adMathias Agopian
1322731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument y
1322831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_y = glmsg.add_args();
1322931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->set_isarray(false);
1323031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->set_type(GLMessage::DataType::INT);
1323131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->add_intvalue(y);
1323231272606149d83437a097800074b21e9e6a205adMathias Agopian
1323331272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1323405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1323505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1323631272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform2iEXT(program, location, x, y);
1323705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1323805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1323931272606149d83437a097800074b21e9e6a205adMathias Agopian
132409801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
132419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
132429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1324305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1324405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
132459801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1324631272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1324731272606149d83437a097800074b21e9e6a205adMathias Agopian}
1324831272606149d83437a097800074b21e9e6a205adMathias Agopian
1324931272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform3iEXT(GLuint program, GLint location, GLint x, GLint y, GLint z) {
1325031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1325131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1325231272606149d83437a097800074b21e9e6a205adMathias Agopian
1325331272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform3iEXT);
1325431272606149d83437a097800074b21e9e6a205adMathias Agopian
1325531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
1325631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
1325731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
1325831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
1325931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
1326031272606149d83437a097800074b21e9e6a205adMathias Agopian
1326131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
1326231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
1326331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
1326431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
1326531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
1326631272606149d83437a097800074b21e9e6a205adMathias Agopian
1326731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument x
1326831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_x = glmsg.add_args();
1326931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_isarray(false);
1327031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_type(GLMessage::DataType::INT);
1327131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->add_intvalue(x);
1327231272606149d83437a097800074b21e9e6a205adMathias Agopian
1327331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument y
1327431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_y = glmsg.add_args();
1327531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->set_isarray(false);
1327631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->set_type(GLMessage::DataType::INT);
1327731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->add_intvalue(y);
1327831272606149d83437a097800074b21e9e6a205adMathias Agopian
1327931272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument z
1328031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_z = glmsg.add_args();
1328131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_z->set_isarray(false);
1328231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_z->set_type(GLMessage::DataType::INT);
1328331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_z->add_intvalue(z);
1328431272606149d83437a097800074b21e9e6a205adMathias Agopian
1328531272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1328605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1328705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1328831272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform3iEXT(program, location, x, y, z);
1328905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1329005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1329131272606149d83437a097800074b21e9e6a205adMathias Agopian
132929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
132939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
132949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1329505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1329605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
132979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1329831272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1329931272606149d83437a097800074b21e9e6a205adMathias Agopian}
1330031272606149d83437a097800074b21e9e6a205adMathias Agopian
1330131272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform4iEXT(GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w) {
1330231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1330331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1330431272606149d83437a097800074b21e9e6a205adMathias Agopian
1330531272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform4iEXT);
1330631272606149d83437a097800074b21e9e6a205adMathias Agopian
1330731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
1330831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
1330931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
1331031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
1331131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
1331231272606149d83437a097800074b21e9e6a205adMathias Agopian
1331331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
1331431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
1331531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
1331631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
1331731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
1331831272606149d83437a097800074b21e9e6a205adMathias Agopian
1331931272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument x
1332031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_x = glmsg.add_args();
1332131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_isarray(false);
1332231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_type(GLMessage::DataType::INT);
1332331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->add_intvalue(x);
1332431272606149d83437a097800074b21e9e6a205adMathias Agopian
1332531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument y
1332631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_y = glmsg.add_args();
1332731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->set_isarray(false);
1332831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->set_type(GLMessage::DataType::INT);
1332931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->add_intvalue(y);
1333031272606149d83437a097800074b21e9e6a205adMathias Agopian
1333131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument z
1333231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_z = glmsg.add_args();
1333331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_z->set_isarray(false);
1333431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_z->set_type(GLMessage::DataType::INT);
1333531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_z->add_intvalue(z);
1333631272606149d83437a097800074b21e9e6a205adMathias Agopian
1333731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument w
1333831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_w = glmsg.add_args();
1333931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_w->set_isarray(false);
1334031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_w->set_type(GLMessage::DataType::INT);
1334131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_w->add_intvalue(w);
1334231272606149d83437a097800074b21e9e6a205adMathias Agopian
1334331272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1334405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1334505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1334631272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform4iEXT(program, location, x, y, z, w);
1334705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1334805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1334931272606149d83437a097800074b21e9e6a205adMathias Agopian
133509801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
133519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
133529801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1335305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1335405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
133559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1335631272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1335731272606149d83437a097800074b21e9e6a205adMathias Agopian}
1335831272606149d83437a097800074b21e9e6a205adMathias Agopian
1335931272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform1fEXT(GLuint program, GLint location, GLfloat x) {
1336031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1336131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1336231272606149d83437a097800074b21e9e6a205adMathias Agopian
1336331272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform1fEXT);
1336431272606149d83437a097800074b21e9e6a205adMathias Agopian
1336531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
1336631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
1336731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
1336831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
1336931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
1337031272606149d83437a097800074b21e9e6a205adMathias Agopian
1337131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
1337231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
1337331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
1337431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
1337531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
1337631272606149d83437a097800074b21e9e6a205adMathias Agopian
1337731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument x
1337831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_x = glmsg.add_args();
1337931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_isarray(false);
1338031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_type(GLMessage::DataType::FLOAT);
1338131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->add_floatvalue(x);
1338231272606149d83437a097800074b21e9e6a205adMathias Agopian
1338331272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1338405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1338505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1338631272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform1fEXT(program, location, x);
1338705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1338805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1338931272606149d83437a097800074b21e9e6a205adMathias Agopian
133909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
133919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
133929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1339305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1339405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
133959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1339631272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1339731272606149d83437a097800074b21e9e6a205adMathias Agopian}
1339831272606149d83437a097800074b21e9e6a205adMathias Agopian
1339931272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform2fEXT(GLuint program, GLint location, GLfloat x, GLfloat y) {
1340031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1340131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1340231272606149d83437a097800074b21e9e6a205adMathias Agopian
1340331272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform2fEXT);
1340431272606149d83437a097800074b21e9e6a205adMathias Agopian
1340531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
1340631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
1340731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
1340831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
1340931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
1341031272606149d83437a097800074b21e9e6a205adMathias Agopian
1341131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
1341231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
1341331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
1341431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
1341531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
1341631272606149d83437a097800074b21e9e6a205adMathias Agopian
1341731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument x
1341831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_x = glmsg.add_args();
1341931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_isarray(false);
1342031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_type(GLMessage::DataType::FLOAT);
1342131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->add_floatvalue(x);
1342231272606149d83437a097800074b21e9e6a205adMathias Agopian
1342331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument y
1342431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_y = glmsg.add_args();
1342531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->set_isarray(false);
1342631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->set_type(GLMessage::DataType::FLOAT);
1342731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->add_floatvalue(y);
1342831272606149d83437a097800074b21e9e6a205adMathias Agopian
1342931272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1343005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1343105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1343231272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform2fEXT(program, location, x, y);
1343305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1343405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1343531272606149d83437a097800074b21e9e6a205adMathias Agopian
134369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
134379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
134389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1343905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1344005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
134419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1344231272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1344331272606149d83437a097800074b21e9e6a205adMathias Agopian}
1344431272606149d83437a097800074b21e9e6a205adMathias Agopian
1344531272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform3fEXT(GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z) {
1344631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1344731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1344831272606149d83437a097800074b21e9e6a205adMathias Agopian
1344931272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform3fEXT);
1345031272606149d83437a097800074b21e9e6a205adMathias Agopian
1345131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
1345231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
1345331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
1345431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
1345531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
1345631272606149d83437a097800074b21e9e6a205adMathias Agopian
1345731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
1345831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
1345931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
1346031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
1346131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
1346231272606149d83437a097800074b21e9e6a205adMathias Agopian
1346331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument x
1346431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_x = glmsg.add_args();
1346531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_isarray(false);
1346631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_type(GLMessage::DataType::FLOAT);
1346731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->add_floatvalue(x);
1346831272606149d83437a097800074b21e9e6a205adMathias Agopian
1346931272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument y
1347031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_y = glmsg.add_args();
1347131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->set_isarray(false);
1347231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->set_type(GLMessage::DataType::FLOAT);
1347331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->add_floatvalue(y);
1347431272606149d83437a097800074b21e9e6a205adMathias Agopian
1347531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument z
1347631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_z = glmsg.add_args();
1347731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_z->set_isarray(false);
1347831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_z->set_type(GLMessage::DataType::FLOAT);
1347931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_z->add_floatvalue(z);
1348031272606149d83437a097800074b21e9e6a205adMathias Agopian
1348131272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1348205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1348305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1348431272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform3fEXT(program, location, x, y, z);
1348505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1348605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1348731272606149d83437a097800074b21e9e6a205adMathias Agopian
134889801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
134899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
134909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1349105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1349205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
134939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1349431272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1349531272606149d83437a097800074b21e9e6a205adMathias Agopian}
1349631272606149d83437a097800074b21e9e6a205adMathias Agopian
1349731272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform4fEXT(GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w) {
1349831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1349931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1350031272606149d83437a097800074b21e9e6a205adMathias Agopian
1350131272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform4fEXT);
1350231272606149d83437a097800074b21e9e6a205adMathias Agopian
1350331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
1350431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
1350531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
1350631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
1350731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
1350831272606149d83437a097800074b21e9e6a205adMathias Agopian
1350931272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
1351031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
1351131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
1351231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
1351331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
1351431272606149d83437a097800074b21e9e6a205adMathias Agopian
1351531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument x
1351631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_x = glmsg.add_args();
1351731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_isarray(false);
1351831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_type(GLMessage::DataType::FLOAT);
1351931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->add_floatvalue(x);
1352031272606149d83437a097800074b21e9e6a205adMathias Agopian
1352131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument y
1352231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_y = glmsg.add_args();
1352331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->set_isarray(false);
1352431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->set_type(GLMessage::DataType::FLOAT);
1352531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->add_floatvalue(y);
1352631272606149d83437a097800074b21e9e6a205adMathias Agopian
1352731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument z
1352831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_z = glmsg.add_args();
1352931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_z->set_isarray(false);
1353031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_z->set_type(GLMessage::DataType::FLOAT);
1353131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_z->add_floatvalue(z);
1353231272606149d83437a097800074b21e9e6a205adMathias Agopian
1353331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument w
1353431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_w = glmsg.add_args();
1353531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_w->set_isarray(false);
1353631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_w->set_type(GLMessage::DataType::FLOAT);
1353731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_w->add_floatvalue(w);
1353831272606149d83437a097800074b21e9e6a205adMathias Agopian
1353931272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1354005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1354105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1354231272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform4fEXT(program, location, x, y, z, w);
1354305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1354405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1354531272606149d83437a097800074b21e9e6a205adMathias Agopian
135469801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
135479801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
135489801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1354905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1355005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
135519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1355231272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1355331272606149d83437a097800074b21e9e6a205adMathias Agopian}
1355431272606149d83437a097800074b21e9e6a205adMathias Agopian
1355531272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform1ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) {
1355631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1355731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1355831272606149d83437a097800074b21e9e6a205adMathias Agopian
1355931272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform1ivEXT);
1356031272606149d83437a097800074b21e9e6a205adMathias Agopian
1356131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
1356231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
1356331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
1356431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
1356531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
1356631272606149d83437a097800074b21e9e6a205adMathias Agopian
1356731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
1356831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
1356931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
1357031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
1357131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
1357231272606149d83437a097800074b21e9e6a205adMathias Agopian
1357331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument count
1357431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_count = glmsg.add_args();
1357531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_isarray(false);
1357631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_type(GLMessage::DataType::INT);
1357731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->add_intvalue(count);
1357831272606149d83437a097800074b21e9e6a205adMathias Agopian
1357931272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument value
1358031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_value = glmsg.add_args();
1358131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_isarray(false);
1358239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT64);
1358339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->add_int64value((uintptr_t)value);
1358431272606149d83437a097800074b21e9e6a205adMathias Agopian
1358531272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1358605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1358705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1358831272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform1ivEXT(program, location, count, value);
1358905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1359005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1359131272606149d83437a097800074b21e9e6a205adMathias Agopian
135929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
135939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) value,
135949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
135959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1359605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1359705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
135989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1359931272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1360031272606149d83437a097800074b21e9e6a205adMathias Agopian}
1360131272606149d83437a097800074b21e9e6a205adMathias Agopian
1360231272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform2ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) {
1360331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1360431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1360531272606149d83437a097800074b21e9e6a205adMathias Agopian
1360631272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform2ivEXT);
1360731272606149d83437a097800074b21e9e6a205adMathias Agopian
1360831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
1360931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
1361031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
1361131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
1361231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
1361331272606149d83437a097800074b21e9e6a205adMathias Agopian
1361431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
1361531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
1361631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
1361731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
1361831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
1361931272606149d83437a097800074b21e9e6a205adMathias Agopian
1362031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument count
1362131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_count = glmsg.add_args();
1362231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_isarray(false);
1362331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_type(GLMessage::DataType::INT);
1362431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->add_intvalue(count);
1362531272606149d83437a097800074b21e9e6a205adMathias Agopian
1362631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument value
1362731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_value = glmsg.add_args();
1362831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_isarray(false);
1362939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT64);
1363039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->add_int64value((uintptr_t)value);
1363131272606149d83437a097800074b21e9e6a205adMathias Agopian
1363231272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1363305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1363405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1363531272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform2ivEXT(program, location, count, value);
1363605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1363705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1363831272606149d83437a097800074b21e9e6a205adMathias Agopian
136399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
136409801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) value,
136419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
136429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1364305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1364405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
136459801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1364631272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1364731272606149d83437a097800074b21e9e6a205adMathias Agopian}
1364831272606149d83437a097800074b21e9e6a205adMathias Agopian
1364931272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform3ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) {
1365031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1365131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1365231272606149d83437a097800074b21e9e6a205adMathias Agopian
1365331272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform3ivEXT);
1365431272606149d83437a097800074b21e9e6a205adMathias Agopian
1365531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
1365631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
1365731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
1365831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
1365931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
1366031272606149d83437a097800074b21e9e6a205adMathias Agopian
1366131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
1366231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
1366331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
1366431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
1366531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
1366631272606149d83437a097800074b21e9e6a205adMathias Agopian
1366731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument count
1366831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_count = glmsg.add_args();
1366931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_isarray(false);
1367031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_type(GLMessage::DataType::INT);
1367131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->add_intvalue(count);
1367231272606149d83437a097800074b21e9e6a205adMathias Agopian
1367331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument value
1367431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_value = glmsg.add_args();
1367531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_isarray(false);
1367639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT64);
1367739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->add_int64value((uintptr_t)value);
1367831272606149d83437a097800074b21e9e6a205adMathias Agopian
1367931272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1368005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1368105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1368231272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform3ivEXT(program, location, count, value);
1368305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1368405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1368531272606149d83437a097800074b21e9e6a205adMathias Agopian
136869801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
136879801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) value,
136889801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
136899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1369005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1369105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
136929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1369331272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1369431272606149d83437a097800074b21e9e6a205adMathias Agopian}
1369531272606149d83437a097800074b21e9e6a205adMathias Agopian
1369631272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform4ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) {
1369731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1369831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1369931272606149d83437a097800074b21e9e6a205adMathias Agopian
1370031272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform4ivEXT);
1370131272606149d83437a097800074b21e9e6a205adMathias Agopian
1370231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
1370331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
1370431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
1370531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
1370631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
1370731272606149d83437a097800074b21e9e6a205adMathias Agopian
1370831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
1370931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
1371031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
1371131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
1371231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
1371331272606149d83437a097800074b21e9e6a205adMathias Agopian
1371431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument count
1371531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_count = glmsg.add_args();
1371631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_isarray(false);
1371731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_type(GLMessage::DataType::INT);
1371831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->add_intvalue(count);
1371931272606149d83437a097800074b21e9e6a205adMathias Agopian
1372031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument value
1372131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_value = glmsg.add_args();
1372231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_isarray(false);
1372339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT64);
1372439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->add_int64value((uintptr_t)value);
1372531272606149d83437a097800074b21e9e6a205adMathias Agopian
1372631272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1372705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1372805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1372931272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform4ivEXT(program, location, count, value);
1373005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1373105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1373231272606149d83437a097800074b21e9e6a205adMathias Agopian
137339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
137349801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) value,
137359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
137369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1373705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1373805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
137399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1374031272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1374131272606149d83437a097800074b21e9e6a205adMathias Agopian}
1374231272606149d83437a097800074b21e9e6a205adMathias Agopian
1374331272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform1fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) {
1374431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1374531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1374631272606149d83437a097800074b21e9e6a205adMathias Agopian
1374731272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform1fvEXT);
1374831272606149d83437a097800074b21e9e6a205adMathias Agopian
1374931272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
1375031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
1375131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
1375231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
1375331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
1375431272606149d83437a097800074b21e9e6a205adMathias Agopian
1375531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
1375631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
1375731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
1375831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
1375931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
1376031272606149d83437a097800074b21e9e6a205adMathias Agopian
1376131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument count
1376231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_count = glmsg.add_args();
1376331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_isarray(false);
1376431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_type(GLMessage::DataType::INT);
1376531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->add_intvalue(count);
1376631272606149d83437a097800074b21e9e6a205adMathias Agopian
1376731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument value
1376831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_value = glmsg.add_args();
1376931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_isarray(false);
1377039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT64);
1377139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->add_int64value((uintptr_t)value);
1377231272606149d83437a097800074b21e9e6a205adMathias Agopian
1377331272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1377405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1377505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1377631272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform1fvEXT(program, location, count, value);
1377705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1377805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1377931272606149d83437a097800074b21e9e6a205adMathias Agopian
137809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
137819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) value,
137829801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
137839801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1378405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1378505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
137869801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1378731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1378831272606149d83437a097800074b21e9e6a205adMathias Agopian}
1378931272606149d83437a097800074b21e9e6a205adMathias Agopian
1379031272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform2fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) {
1379131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1379231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1379331272606149d83437a097800074b21e9e6a205adMathias Agopian
1379431272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform2fvEXT);
1379531272606149d83437a097800074b21e9e6a205adMathias Agopian
1379631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
1379731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
1379831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
1379931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
1380031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
1380131272606149d83437a097800074b21e9e6a205adMathias Agopian
1380231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
1380331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
1380431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
1380531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
1380631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
1380731272606149d83437a097800074b21e9e6a205adMathias Agopian
1380831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument count
1380931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_count = glmsg.add_args();
1381031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_isarray(false);
1381131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_type(GLMessage::DataType::INT);
1381231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->add_intvalue(count);
1381331272606149d83437a097800074b21e9e6a205adMathias Agopian
1381431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument value
1381531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_value = glmsg.add_args();
1381631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_isarray(false);
1381739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT64);
1381839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->add_int64value((uintptr_t)value);
1381931272606149d83437a097800074b21e9e6a205adMathias Agopian
1382031272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1382105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1382205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1382331272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform2fvEXT(program, location, count, value);
1382405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1382505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1382631272606149d83437a097800074b21e9e6a205adMathias Agopian
138279801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
138289801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) value,
138299801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
138309801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1383105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1383205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
138339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1383431272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1383531272606149d83437a097800074b21e9e6a205adMathias Agopian}
1383631272606149d83437a097800074b21e9e6a205adMathias Agopian
1383731272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform3fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) {
1383831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1383931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1384031272606149d83437a097800074b21e9e6a205adMathias Agopian
1384131272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform3fvEXT);
1384231272606149d83437a097800074b21e9e6a205adMathias Agopian
1384331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
1384431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
1384531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
1384631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
1384731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
1384831272606149d83437a097800074b21e9e6a205adMathias Agopian
1384931272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
1385031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
1385131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
1385231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
1385331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
1385431272606149d83437a097800074b21e9e6a205adMathias Agopian
1385531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument count
1385631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_count = glmsg.add_args();
1385731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_isarray(false);
1385831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_type(GLMessage::DataType::INT);
1385931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->add_intvalue(count);
1386031272606149d83437a097800074b21e9e6a205adMathias Agopian
1386131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument value
1386231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_value = glmsg.add_args();
1386331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_isarray(false);
1386439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT64);
1386539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->add_int64value((uintptr_t)value);
1386631272606149d83437a097800074b21e9e6a205adMathias Agopian
1386731272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1386805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1386905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1387031272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform3fvEXT(program, location, count, value);
1387105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1387205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1387331272606149d83437a097800074b21e9e6a205adMathias Agopian
138749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
138759801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) value,
138769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
138779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1387805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1387905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
138809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1388131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1388231272606149d83437a097800074b21e9e6a205adMathias Agopian}
1388331272606149d83437a097800074b21e9e6a205adMathias Agopian
1388431272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform4fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) {
1388531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1388631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1388731272606149d83437a097800074b21e9e6a205adMathias Agopian
1388831272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform4fvEXT);
1388931272606149d83437a097800074b21e9e6a205adMathias Agopian
1389031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
1389131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
1389231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
1389331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
1389431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
1389531272606149d83437a097800074b21e9e6a205adMathias Agopian
1389631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
1389731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
1389831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
1389931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
1390031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
1390131272606149d83437a097800074b21e9e6a205adMathias Agopian
1390231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument count
1390331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_count = glmsg.add_args();
1390431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_isarray(false);
1390531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_type(GLMessage::DataType::INT);
1390631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->add_intvalue(count);
1390731272606149d83437a097800074b21e9e6a205adMathias Agopian
1390831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument value
1390931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_value = glmsg.add_args();
1391031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_isarray(false);
1391139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT64);
1391239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->add_int64value((uintptr_t)value);
1391331272606149d83437a097800074b21e9e6a205adMathias Agopian
1391431272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1391505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1391605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1391731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform4fvEXT(program, location, count, value);
1391805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1391905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1392031272606149d83437a097800074b21e9e6a205adMathias Agopian
139219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
139229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) value,
139239801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
139249801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1392505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1392605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
139279801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1392831272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1392931272606149d83437a097800074b21e9e6a205adMathias Agopian}
1393031272606149d83437a097800074b21e9e6a205adMathias Agopian
1393131272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniformMatrix2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) {
1393231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1393331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1393431272606149d83437a097800074b21e9e6a205adMathias Agopian
1393531272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniformMatrix2fvEXT);
1393631272606149d83437a097800074b21e9e6a205adMathias Agopian
1393731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
1393831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
1393931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
1394031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
1394131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
1394231272606149d83437a097800074b21e9e6a205adMathias Agopian
1394331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
1394431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
1394531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
1394631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
1394731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
1394831272606149d83437a097800074b21e9e6a205adMathias Agopian
1394931272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument count
1395031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_count = glmsg.add_args();
1395131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_isarray(false);
1395231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_type(GLMessage::DataType::INT);
1395331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->add_intvalue(count);
1395431272606149d83437a097800074b21e9e6a205adMathias Agopian
1395531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument transpose
1395631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_transpose = glmsg.add_args();
1395731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_transpose->set_isarray(false);
1395831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_transpose->set_type(GLMessage::DataType::BOOL);
1395931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_transpose->add_boolvalue(transpose);
1396031272606149d83437a097800074b21e9e6a205adMathias Agopian
1396131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument value
1396231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_value = glmsg.add_args();
1396331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_isarray(false);
1396439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT64);
1396539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->add_int64value((uintptr_t)value);
1396631272606149d83437a097800074b21e9e6a205adMathias Agopian
1396731272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1396805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1396905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1397031272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniformMatrix2fvEXT(program, location, count, transpose, value);
1397105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1397205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1397331272606149d83437a097800074b21e9e6a205adMathias Agopian
139749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
139759801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) value,
139769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
139779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1397805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1397905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
139809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1398131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1398231272606149d83437a097800074b21e9e6a205adMathias Agopian}
1398331272606149d83437a097800074b21e9e6a205adMathias Agopian
1398431272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniformMatrix3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) {
1398531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1398631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1398731272606149d83437a097800074b21e9e6a205adMathias Agopian
1398831272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniformMatrix3fvEXT);
1398931272606149d83437a097800074b21e9e6a205adMathias Agopian
1399031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
1399131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
1399231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
1399331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
1399431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
1399531272606149d83437a097800074b21e9e6a205adMathias Agopian
1399631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
1399731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
1399831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
1399931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
1400031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
1400131272606149d83437a097800074b21e9e6a205adMathias Agopian
1400231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument count
1400331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_count = glmsg.add_args();
1400431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_isarray(false);
1400531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_type(GLMessage::DataType::INT);
1400631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->add_intvalue(count);
1400731272606149d83437a097800074b21e9e6a205adMathias Agopian
1400831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument transpose
1400931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_transpose = glmsg.add_args();
1401031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_transpose->set_isarray(false);
1401131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_transpose->set_type(GLMessage::DataType::BOOL);
1401231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_transpose->add_boolvalue(transpose);
1401331272606149d83437a097800074b21e9e6a205adMathias Agopian
1401431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument value
1401531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_value = glmsg.add_args();
1401631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_isarray(false);
1401739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT64);
1401839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->add_int64value((uintptr_t)value);
1401931272606149d83437a097800074b21e9e6a205adMathias Agopian
1402031272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1402105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1402205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1402331272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniformMatrix3fvEXT(program, location, count, transpose, value);
1402405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1402505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1402631272606149d83437a097800074b21e9e6a205adMathias Agopian
140279801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
140289801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) value,
140299801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
140309801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1403105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1403205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
140339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1403431272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1403531272606149d83437a097800074b21e9e6a205adMathias Agopian}
1403631272606149d83437a097800074b21e9e6a205adMathias Agopian
1403731272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniformMatrix4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) {
1403831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1403931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1404031272606149d83437a097800074b21e9e6a205adMathias Agopian
1404131272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniformMatrix4fvEXT);
1404231272606149d83437a097800074b21e9e6a205adMathias Agopian
1404331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
1404431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
1404531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
1404631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
1404731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
1404831272606149d83437a097800074b21e9e6a205adMathias Agopian
1404931272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
1405031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
1405131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
1405231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
1405331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
1405431272606149d83437a097800074b21e9e6a205adMathias Agopian
1405531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument count
1405631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_count = glmsg.add_args();
1405731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_isarray(false);
1405831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_type(GLMessage::DataType::INT);
1405931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->add_intvalue(count);
1406031272606149d83437a097800074b21e9e6a205adMathias Agopian
1406131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument transpose
1406231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_transpose = glmsg.add_args();
1406331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_transpose->set_isarray(false);
1406431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_transpose->set_type(GLMessage::DataType::BOOL);
1406531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_transpose->add_boolvalue(transpose);
1406631272606149d83437a097800074b21e9e6a205adMathias Agopian
1406731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument value
1406831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_value = glmsg.add_args();
1406931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_isarray(false);
1407039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT64);
1407139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_value->add_int64value((uintptr_t)value);
1407231272606149d83437a097800074b21e9e6a205adMathias Agopian
1407331272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1407405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1407505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1407631272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniformMatrix4fvEXT(program, location, count, transpose, value);
1407705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1407805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1407931272606149d83437a097800074b21e9e6a205adMathias Agopian
140809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
140819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) value,
140829801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
140839801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1408405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1408505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
140869801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1408731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1408831272606149d83437a097800074b21e9e6a205adMathias Agopian}
1408931272606149d83437a097800074b21e9e6a205adMathias Agopian
1409031272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glValidateProgramPipelineEXT(GLuint pipeline) {
1409131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1409231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1409331272606149d83437a097800074b21e9e6a205adMathias Agopian
1409431272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glValidateProgramPipelineEXT);
1409531272606149d83437a097800074b21e9e6a205adMathias Agopian
1409631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument pipeline
1409731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_pipeline = glmsg.add_args();
1409831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->set_isarray(false);
1409931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->set_type(GLMessage::DataType::INT);
1410031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->add_intvalue(pipeline);
1410131272606149d83437a097800074b21e9e6a205adMathias Agopian
1410231272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1410305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1410405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1410531272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glValidateProgramPipelineEXT(pipeline);
1410605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1410705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1410831272606149d83437a097800074b21e9e6a205adMathias Agopian
141099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
141109801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
141119801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1411205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1411305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
141149801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1411531272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1411631272606149d83437a097800074b21e9e6a205adMathias Agopian}
1411731272606149d83437a097800074b21e9e6a205adMathias Agopian
1411831272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glGetProgramPipelineInfoLogEXT(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog) {
1411931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1412031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1412131272606149d83437a097800074b21e9e6a205adMathias Agopian
1412231272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glGetProgramPipelineInfoLogEXT);
1412331272606149d83437a097800074b21e9e6a205adMathias Agopian
1412431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument pipeline
1412531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_pipeline = glmsg.add_args();
1412631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->set_isarray(false);
1412731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->set_type(GLMessage::DataType::INT);
1412831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->add_intvalue(pipeline);
1412931272606149d83437a097800074b21e9e6a205adMathias Agopian
1413031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument bufSize
1413131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_bufSize = glmsg.add_args();
1413231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufSize->set_isarray(false);
1413331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufSize->set_type(GLMessage::DataType::INT);
1413431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufSize->add_intvalue(bufSize);
1413531272606149d83437a097800074b21e9e6a205adMathias Agopian
1413631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument length
1413731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_length = glmsg.add_args();
1413831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_length->set_isarray(false);
1413939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->set_type(GLMessage::DataType::INT64);
1414039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->add_int64value((uintptr_t)length);
1414131272606149d83437a097800074b21e9e6a205adMathias Agopian
1414231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument infoLog
1414331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_infoLog = glmsg.add_args();
1414431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_infoLog->set_isarray(false);
1414539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_infoLog->set_type(GLMessage::DataType::INT64);
1414639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_infoLog->add_int64value((uintptr_t)infoLog);
1414731272606149d83437a097800074b21e9e6a205adMathias Agopian
1414831272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1414905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1415005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1415131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glGetProgramPipelineInfoLogEXT(pipeline, bufSize, length, infoLog);
1415205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1415305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1415431272606149d83437a097800074b21e9e6a205adMathias Agopian
141559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
141569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) length,
141579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) infoLog,
141589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
141599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1416005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1416105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
141629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1416331272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1416431272606149d83437a097800074b21e9e6a205adMathias Agopian}
1416531272606149d83437a097800074b21e9e6a205adMathias Agopian
1416631272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glTexStorage1DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) {
1416731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1416831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1416931272606149d83437a097800074b21e9e6a205adMathias Agopian
1417031272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glTexStorage1DEXT);
1417131272606149d83437a097800074b21e9e6a205adMathias Agopian
1417231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument target
1417331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_target = glmsg.add_args();
1417431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_isarray(false);
1417531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_type(GLMessage::DataType::ENUM);
1417631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->add_intvalue((int)target);
1417731272606149d83437a097800074b21e9e6a205adMathias Agopian
1417831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument levels
1417931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_levels = glmsg.add_args();
1418031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->set_isarray(false);
1418131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->set_type(GLMessage::DataType::INT);
1418231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->add_intvalue(levels);
1418331272606149d83437a097800074b21e9e6a205adMathias Agopian
1418431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument internalformat
1418531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_internalformat = glmsg.add_args();
1418631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_isarray(false);
1418731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_type(GLMessage::DataType::ENUM);
1418831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->add_intvalue((int)internalformat);
1418931272606149d83437a097800074b21e9e6a205adMathias Agopian
1419031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument width
1419131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_width = glmsg.add_args();
1419231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_isarray(false);
1419331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_type(GLMessage::DataType::INT);
1419431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->add_intvalue(width);
1419531272606149d83437a097800074b21e9e6a205adMathias Agopian
1419631272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1419705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1419805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1419931272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glTexStorage1DEXT(target, levels, internalformat, width);
1420005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1420105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1420231272606149d83437a097800074b21e9e6a205adMathias Agopian
142039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
142049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
142059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1420605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1420705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
142089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1420931272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1421031272606149d83437a097800074b21e9e6a205adMathias Agopian}
1421131272606149d83437a097800074b21e9e6a205adMathias Agopian
1421231272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glTexStorage2DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) {
1421331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1421431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1421531272606149d83437a097800074b21e9e6a205adMathias Agopian
1421631272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glTexStorage2DEXT);
1421731272606149d83437a097800074b21e9e6a205adMathias Agopian
1421831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument target
1421931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_target = glmsg.add_args();
1422031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_isarray(false);
1422131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_type(GLMessage::DataType::ENUM);
1422231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->add_intvalue((int)target);
1422331272606149d83437a097800074b21e9e6a205adMathias Agopian
1422431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument levels
1422531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_levels = glmsg.add_args();
1422631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->set_isarray(false);
1422731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->set_type(GLMessage::DataType::INT);
1422831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->add_intvalue(levels);
1422931272606149d83437a097800074b21e9e6a205adMathias Agopian
1423031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument internalformat
1423131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_internalformat = glmsg.add_args();
1423231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_isarray(false);
1423331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_type(GLMessage::DataType::ENUM);
1423431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->add_intvalue((int)internalformat);
1423531272606149d83437a097800074b21e9e6a205adMathias Agopian
1423631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument width
1423731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_width = glmsg.add_args();
1423831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_isarray(false);
1423931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_type(GLMessage::DataType::INT);
1424031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->add_intvalue(width);
1424131272606149d83437a097800074b21e9e6a205adMathias Agopian
1424231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument height
1424331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_height = glmsg.add_args();
1424431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_isarray(false);
1424531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_type(GLMessage::DataType::INT);
1424631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->add_intvalue(height);
1424731272606149d83437a097800074b21e9e6a205adMathias Agopian
1424831272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1424905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1425005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1425131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glTexStorage2DEXT(target, levels, internalformat, width, height);
1425205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1425305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1425431272606149d83437a097800074b21e9e6a205adMathias Agopian
142559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
142569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
142579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1425805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1425905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
142609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1426131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1426231272606149d83437a097800074b21e9e6a205adMathias Agopian}
1426331272606149d83437a097800074b21e9e6a205adMathias Agopian
1426431272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glTexStorage3DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) {
1426531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1426631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1426731272606149d83437a097800074b21e9e6a205adMathias Agopian
1426831272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glTexStorage3DEXT);
1426931272606149d83437a097800074b21e9e6a205adMathias Agopian
1427031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument target
1427131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_target = glmsg.add_args();
1427231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_isarray(false);
1427331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_type(GLMessage::DataType::ENUM);
1427431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->add_intvalue((int)target);
1427531272606149d83437a097800074b21e9e6a205adMathias Agopian
1427631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument levels
1427731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_levels = glmsg.add_args();
1427831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->set_isarray(false);
1427931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->set_type(GLMessage::DataType::INT);
1428031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->add_intvalue(levels);
1428131272606149d83437a097800074b21e9e6a205adMathias Agopian
1428231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument internalformat
1428331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_internalformat = glmsg.add_args();
1428431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_isarray(false);
1428531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_type(GLMessage::DataType::ENUM);
1428631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->add_intvalue((int)internalformat);
1428731272606149d83437a097800074b21e9e6a205adMathias Agopian
1428831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument width
1428931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_width = glmsg.add_args();
1429031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_isarray(false);
1429131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_type(GLMessage::DataType::INT);
1429231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->add_intvalue(width);
1429331272606149d83437a097800074b21e9e6a205adMathias Agopian
1429431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument height
1429531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_height = glmsg.add_args();
1429631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_isarray(false);
1429731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_type(GLMessage::DataType::INT);
1429831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->add_intvalue(height);
1429931272606149d83437a097800074b21e9e6a205adMathias Agopian
1430031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument depth
1430131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_depth = glmsg.add_args();
1430231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_depth->set_isarray(false);
1430331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_depth->set_type(GLMessage::DataType::INT);
1430431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_depth->add_intvalue(depth);
1430531272606149d83437a097800074b21e9e6a205adMathias Agopian
1430631272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1430705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1430805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1430931272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glTexStorage3DEXT(target, levels, internalformat, width, height, depth);
1431005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1431105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1431231272606149d83437a097800074b21e9e6a205adMathias Agopian
143139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
143149801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
143159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1431605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1431705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
143189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1431931272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1432031272606149d83437a097800074b21e9e6a205adMathias Agopian}
1432131272606149d83437a097800074b21e9e6a205adMathias Agopian
1432231272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glTextureStorage1DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) {
1432331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1432431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1432531272606149d83437a097800074b21e9e6a205adMathias Agopian
1432631272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glTextureStorage1DEXT);
1432731272606149d83437a097800074b21e9e6a205adMathias Agopian
1432831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument texture
1432931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_texture = glmsg.add_args();
1433031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_texture->set_isarray(false);
1433131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_texture->set_type(GLMessage::DataType::INT);
1433231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_texture->add_intvalue(texture);
143330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
143340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
143350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
143360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
143370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
143380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
143390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1434031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument levels
1434131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_levels = glmsg.add_args();
1434231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->set_isarray(false);
1434331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->set_type(GLMessage::DataType::INT);
1434431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->add_intvalue(levels);
143450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1434631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument internalformat
1434731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_internalformat = glmsg.add_args();
1434831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_isarray(false);
1434931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_type(GLMessage::DataType::ENUM);
1435031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->add_intvalue((int)internalformat);
1435131272606149d83437a097800074b21e9e6a205adMathias Agopian
1435231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument width
1435331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_width = glmsg.add_args();
1435431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_isarray(false);
1435531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_type(GLMessage::DataType::INT);
1435631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->add_intvalue(width);
143570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
143580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1435905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1436005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1436131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glTextureStorage1DEXT(texture, target, levels, internalformat, width);
1436205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1436305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
143640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
143659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
143669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
143679801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1436805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1436905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
143709801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1437193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
143720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
143730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1437431272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glTextureStorage2DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) {
143750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
143760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
143770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1437831272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glTextureStorage2DEXT);
143790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1438031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument texture
1438131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_texture = glmsg.add_args();
1438231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_texture->set_isarray(false);
1438331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_texture->set_type(GLMessage::DataType::INT);
1438431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_texture->add_intvalue(texture);
143850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1438631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument target
1438731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_target = glmsg.add_args();
1438831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_isarray(false);
1438931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_type(GLMessage::DataType::ENUM);
1439031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->add_intvalue((int)target);
143910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1439231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument levels
1439331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_levels = glmsg.add_args();
1439431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->set_isarray(false);
1439531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->set_type(GLMessage::DataType::INT);
1439631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->add_intvalue(levels);
143970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1439831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument internalformat
1439931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_internalformat = glmsg.add_args();
1440031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_isarray(false);
1440131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_type(GLMessage::DataType::ENUM);
1440231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->add_intvalue((int)internalformat);
1440331272606149d83437a097800074b21e9e6a205adMathias Agopian
1440431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument width
1440531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_width = glmsg.add_args();
1440631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_isarray(false);
1440731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_type(GLMessage::DataType::INT);
1440831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->add_intvalue(width);
1440931272606149d83437a097800074b21e9e6a205adMathias Agopian
1441031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument height
1441131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_height = glmsg.add_args();
1441231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_isarray(false);
1441331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_type(GLMessage::DataType::INT);
1441431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->add_intvalue(height);
144150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
144160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1441705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1441805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1441931272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glTextureStorage2DEXT(texture, target, levels, internalformat, width, height);
1442005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1442105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
144220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
144239801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
144249801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
144259801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1442605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1442705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
144289801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1442993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
144300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
144310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1443231272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glTextureStorage3DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) {
144330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
144340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
144350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1443631272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glTextureStorage3DEXT);
144370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1443831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument texture
1443931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_texture = glmsg.add_args();
1444031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_texture->set_isarray(false);
1444131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_texture->set_type(GLMessage::DataType::INT);
1444231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_texture->add_intvalue(texture);
144430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1444431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument target
1444531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_target = glmsg.add_args();
1444631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_isarray(false);
1444731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_type(GLMessage::DataType::ENUM);
1444831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->add_intvalue((int)target);
144490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1445031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument levels
1445131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_levels = glmsg.add_args();
1445231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->set_isarray(false);
1445331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->set_type(GLMessage::DataType::INT);
1445431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->add_intvalue(levels);
144550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1445631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument internalformat
1445731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_internalformat = glmsg.add_args();
1445831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_isarray(false);
1445931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_type(GLMessage::DataType::ENUM);
1446031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->add_intvalue((int)internalformat);
144610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1446231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument width
1446331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_width = glmsg.add_args();
1446431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_isarray(false);
1446531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_type(GLMessage::DataType::INT);
1446631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->add_intvalue(width);
1446731272606149d83437a097800074b21e9e6a205adMathias Agopian
1446831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument height
1446931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_height = glmsg.add_args();
1447031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_isarray(false);
1447131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_type(GLMessage::DataType::INT);
1447231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->add_intvalue(height);
1447331272606149d83437a097800074b21e9e6a205adMathias Agopian
1447431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument depth
1447531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_depth = glmsg.add_args();
1447631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_depth->set_isarray(false);
1447731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_depth->set_type(GLMessage::DataType::INT);
1447831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_depth->add_intvalue(depth);
144790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
144800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1448105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1448205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1448331272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glTextureStorage3DEXT(texture, target, levels, internalformat, width, height, depth);
1448405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1448505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
144860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
144879801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
144889801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
144899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1449005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1449105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
144929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1449393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
144940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
144950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
144960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glRenderbufferStorageMultisampleIMG(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
144970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
144980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
144990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glRenderbufferStorageMultisampleIMG);
145010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
145030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
145040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
145050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
145060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
145070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument samples
145090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_samples = glmsg.add_args();
145100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_samples->set_isarray(false);
145110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_samples->set_type(GLMessage::DataType::INT);
145120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_samples->add_intvalue(samples);
145130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument internalformat
145150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_internalformat = glmsg.add_args();
145160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->set_isarray(false);
145170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->set_type(GLMessage::DataType::ENUM);
145180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->add_intvalue((int)internalformat);
145190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
145210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
145220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
145230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
145240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
145250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
145270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
145280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
145290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
145300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
145310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1453305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1453405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
145350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glRenderbufferStorageMultisampleIMG(target, samples, internalformat, width, height);
1453605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1453705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
145380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
145409801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
145419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1454205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1454305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
145449801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1454593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
145460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
145470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFramebufferTexture2DMultisampleIMG(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples) {
145490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
145500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
145510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFramebufferTexture2DMultisampleIMG);
145530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
145550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
145560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
145570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
145580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
145590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument attachment
145610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_attachment = glmsg.add_args();
145620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->set_isarray(false);
145630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->set_type(GLMessage::DataType::ENUM);
145640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->add_intvalue((int)attachment);
145650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument textarget
145670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_textarget = glmsg.add_args();
145680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_textarget->set_isarray(false);
145690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_textarget->set_type(GLMessage::DataType::ENUM);
145700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_textarget->add_intvalue((int)textarget);
145710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument texture
145730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_texture = glmsg.add_args();
145740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->set_isarray(false);
145750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->set_type(GLMessage::DataType::INT);
145760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->add_intvalue(texture);
145770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument level
145790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_level = glmsg.add_args();
145800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_isarray(false);
145810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_type(GLMessage::DataType::INT);
145820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->add_intvalue(level);
145830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument samples
145850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_samples = glmsg.add_args();
145860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_samples->set_isarray(false);
145870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_samples->set_type(GLMessage::DataType::INT);
145880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_samples->add_intvalue(samples);
145890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1459105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1459205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
145930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFramebufferTexture2DMultisampleIMG(target, attachment, textarget, texture, level, samples);
1459405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1459505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
145960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
145989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
145999801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1460005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1460105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
146029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1460393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
146040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
146050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1460631272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glCoverageMaskNV(GLboolean mask) {
1460731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1460831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1460931272606149d83437a097800074b21e9e6a205adMathias Agopian
1461031272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glCoverageMaskNV);
1461131272606149d83437a097800074b21e9e6a205adMathias Agopian
1461231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument mask
1461331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_mask = glmsg.add_args();
1461431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_mask->set_isarray(false);
1461531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_mask->set_type(GLMessage::DataType::BOOL);
1461631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_mask->add_boolvalue(mask);
1461731272606149d83437a097800074b21e9e6a205adMathias Agopian
1461831272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1461905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1462005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1462131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glCoverageMaskNV(mask);
1462205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1462305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1462431272606149d83437a097800074b21e9e6a205adMathias Agopian
146259801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
146269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
146279801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1462805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1462905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
146309801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1463131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1463231272606149d83437a097800074b21e9e6a205adMathias Agopian}
1463331272606149d83437a097800074b21e9e6a205adMathias Agopian
1463431272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glCoverageOperationNV(GLenum operation) {
1463531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1463631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1463731272606149d83437a097800074b21e9e6a205adMathias Agopian
1463831272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glCoverageOperationNV);
1463931272606149d83437a097800074b21e9e6a205adMathias Agopian
1464031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument operation
1464131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_operation = glmsg.add_args();
1464231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_operation->set_isarray(false);
1464331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_operation->set_type(GLMessage::DataType::ENUM);
1464431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_operation->add_intvalue((int)operation);
1464531272606149d83437a097800074b21e9e6a205adMathias Agopian
1464631272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1464705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1464805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1464931272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glCoverageOperationNV(operation);
1465005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1465105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1465231272606149d83437a097800074b21e9e6a205adMathias Agopian
146539801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
146549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
146559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1465605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1465705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
146589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1465931272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1466031272606149d83437a097800074b21e9e6a205adMathias Agopian}
1466131272606149d83437a097800074b21e9e6a205adMathias Agopian
1466231272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glDrawBuffersNV(GLsizei n, const GLenum *bufs) {
1466331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1466431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1466531272606149d83437a097800074b21e9e6a205adMathias Agopian
1466631272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glDrawBuffersNV);
1466731272606149d83437a097800074b21e9e6a205adMathias Agopian
1466831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument n
1466931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_n = glmsg.add_args();
1467031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_n->set_isarray(false);
1467131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_n->set_type(GLMessage::DataType::INT);
1467231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_n->add_intvalue(n);
1467331272606149d83437a097800074b21e9e6a205adMathias Agopian
1467431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument bufs
1467531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_bufs = glmsg.add_args();
1467631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufs->set_isarray(false);
1467739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_bufs->set_type(GLMessage::DataType::INT64);
1467839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_bufs->add_int64value((uintptr_t)bufs);
1467931272606149d83437a097800074b21e9e6a205adMathias Agopian
1468031272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1468105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1468205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1468331272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glDrawBuffersNV(n, bufs);
1468405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1468505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1468631272606149d83437a097800074b21e9e6a205adMathias Agopian
146879801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
146889801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) bufs,
146899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
146909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1469105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1469205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
146939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1469431272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1469531272606149d83437a097800074b21e9e6a205adMathias Agopian}
1469631272606149d83437a097800074b21e9e6a205adMathias Agopian
146970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDeleteFencesNV(GLsizei n, const GLuint *fences) {
146980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
146990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
147000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDeleteFencesNV);
147020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument n
147040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_n = glmsg.add_args();
147050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_isarray(false);
147060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_type(GLMessage::DataType::INT);
147070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->add_intvalue(n);
147080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument fences
147100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_fences = glmsg.add_args();
147110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fences->set_isarray(false);
1471239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_fences->set_type(GLMessage::DataType::INT64);
1471339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_fences->add_int64value((uintptr_t)fences);
147140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1471605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1471705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
147180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDeleteFencesNV(n, fences);
1471905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1472005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
147210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
147239801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) fences,
147249801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
147259801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1472605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1472705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
147289801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1472993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
147300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
147310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGenFencesNV(GLsizei n, GLuint *fences) {
147330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
147340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
147350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGenFencesNV);
147370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument n
147390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_n = glmsg.add_args();
147400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_isarray(false);
147410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_type(GLMessage::DataType::INT);
147420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->add_intvalue(n);
147430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument fences
147450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_fences = glmsg.add_args();
147460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fences->set_isarray(false);
1474739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_fences->set_type(GLMessage::DataType::INT64);
1474839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_fences->add_int64value((uintptr_t)fences);
147490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1475105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1475205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
147530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGenFencesNV(n, fences);
1475405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1475505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
147560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
147589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) fences,
147599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
147609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1476105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1476205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
147639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1476493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
147650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
147660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147670469dd6d55fa331bfd7de9431da98b6340d82271Siva VelusamyGLboolean GLTrace_glIsFenceNV(GLuint fence) {
147680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
147690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
147700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glIsFenceNV);
147720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument fence
147740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_fence = glmsg.add_args();
147750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fence->set_isarray(false);
147760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fence->set_type(GLMessage::DataType::INT);
147770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fence->add_intvalue(fence);
147780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1478005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1478105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
147820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLboolean retValue = glContext->hooks->gl.glIsFenceNV(fence);
1478305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1478405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
147850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
147870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
147880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
147890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::BOOL);
147900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_boolvalue(retValue);
147910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
147939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
147949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1479505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1479605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
147979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1479893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
147990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
148010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
148020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148030469dd6d55fa331bfd7de9431da98b6340d82271Siva VelusamyGLboolean GLTrace_glTestFenceNV(GLuint fence) {
148040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
148050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
148060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTestFenceNV);
148080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument fence
148100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_fence = glmsg.add_args();
148110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fence->set_isarray(false);
148120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fence->set_type(GLMessage::DataType::INT);
148130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fence->add_intvalue(fence);
148140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1481605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1481705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
148180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLboolean retValue = glContext->hooks->gl.glTestFenceNV(fence);
1481905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1482005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
148210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
148230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
148240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
148250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::BOOL);
148260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_boolvalue(retValue);
148270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148289801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
148299801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
148309801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1483105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1483205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
148339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1483493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
148350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
148370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
148380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetFenceivNV(GLuint fence, GLenum pname, GLint *params) {
148400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
148410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
148420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetFenceivNV);
148440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument fence
148460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_fence = glmsg.add_args();
148470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fence->set_isarray(false);
148480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fence->set_type(GLMessage::DataType::INT);
148490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fence->add_intvalue(fence);
148500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
148520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
148530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
148540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
148550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
148560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
148580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
148590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
1486039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1486139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
148620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1486405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1486505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
148660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetFenceivNV(fence, pname, params);
1486705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1486805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
148690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148709801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
148719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
148729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
148739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1487405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1487505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
148769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1487793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
148780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
148790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFinishFenceNV(GLuint fence) {
148810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
148820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
148830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFinishFenceNV);
148850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument fence
148870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_fence = glmsg.add_args();
148880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fence->set_isarray(false);
148890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fence->set_type(GLMessage::DataType::INT);
148900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fence->add_intvalue(fence);
148910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1489305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1489405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
148950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFinishFenceNV(fence);
1489605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1489705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
148980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148999801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
149009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
149019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1490205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1490305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
149049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1490593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
149060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
149070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
149080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glSetFenceNV(GLuint fence, GLenum condition) {
149090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
149100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
149110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
149120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glSetFenceNV);
149130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
149140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument fence
149150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_fence = glmsg.add_args();
149160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fence->set_isarray(false);
149170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fence->set_type(GLMessage::DataType::INT);
149180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fence->add_intvalue(fence);
149190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
149200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument condition
149210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_condition = glmsg.add_args();
149220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_condition->set_isarray(false);
149230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_condition->set_type(GLMessage::DataType::ENUM);
149240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_condition->add_intvalue((int)condition);
149250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
149260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1492705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1492805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
149290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glSetFenceNV(fence, condition);
1493005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1493105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
149320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
149339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
149349801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
149359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1493605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1493705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
149389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1493993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
149400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
149410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1494231272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glReadBufferNV(GLenum mode) {
149430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
149440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
149450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1494631272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glReadBufferNV);
149470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1494831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument mode
1494931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_mode = glmsg.add_args();
1495031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_mode->set_isarray(false);
1495131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_mode->set_type(GLMessage::DataType::ENUM);
1495231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_mode->add_intvalue((int)mode);
149530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
149540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1495505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1495605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1495731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glReadBufferNV(mode);
1495805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1495905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
149600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
149619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
149629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
149639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1496405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1496505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
149669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1496793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
149680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
149690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1497031272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glAlphaFuncQCOM(GLenum func, GLclampf ref) {
149710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
149720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
149730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1497431272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glAlphaFuncQCOM);
149750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1497631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument func
1497731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_func = glmsg.add_args();
1497831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_func->set_isarray(false);
1497931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_func->set_type(GLMessage::DataType::ENUM);
1498031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_func->add_intvalue((int)func);
1498131272606149d83437a097800074b21e9e6a205adMathias Agopian
1498231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument ref
1498331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_ref = glmsg.add_args();
1498431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_ref->set_isarray(false);
1498531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_ref->set_type(GLMessage::DataType::FLOAT);
1498631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_ref->add_floatvalue(ref);
149870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
149880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1498905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1499005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1499131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glAlphaFuncQCOM(func, ref);
1499205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1499305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
149940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
149959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
149969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
149979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1499805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1499905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
150009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1500193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
150020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
150030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetDriverControlsQCOM(GLint *num, GLsizei size, GLuint *driverControls) {
150050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
150060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
150070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetDriverControlsQCOM);
150090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument num
150110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_num = glmsg.add_args();
150120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_num->set_isarray(false);
1501339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_num->set_type(GLMessage::DataType::INT64);
1501439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_num->add_int64value((uintptr_t)num);
150150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument size
150170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_size = glmsg.add_args();
150180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_isarray(false);
150190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_type(GLMessage::DataType::INT);
150200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->add_intvalue(size);
150210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument driverControls
150230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_driverControls = glmsg.add_args();
150240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_driverControls->set_isarray(false);
1502539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_driverControls->set_type(GLMessage::DataType::INT64);
1502639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_driverControls->add_int64value((uintptr_t)driverControls);
150270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1502905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1503005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
150310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetDriverControlsQCOM(num, size, driverControls);
1503205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1503305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
150340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
150369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) num,
150379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) driverControls,
150389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
150399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1504005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1504105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
150429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1504393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
150440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
150450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetDriverControlStringQCOM(GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString) {
150470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
150480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
150490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetDriverControlStringQCOM);
150510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument driverControl
150530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_driverControl = glmsg.add_args();
150540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_driverControl->set_isarray(false);
150550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_driverControl->set_type(GLMessage::DataType::INT);
150560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_driverControl->add_intvalue(driverControl);
150570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument bufSize
150590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_bufSize = glmsg.add_args();
150600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufSize->set_isarray(false);
150610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufSize->set_type(GLMessage::DataType::INT);
150620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufSize->add_intvalue(bufSize);
150630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument length
150650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_length = glmsg.add_args();
150660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_isarray(false);
1506739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->set_type(GLMessage::DataType::INT64);
1506839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->add_int64value((uintptr_t)length);
150690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument driverControlString
150710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_driverControlString = glmsg.add_args();
150720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_driverControlString->set_isarray(false);
1507339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_driverControlString->set_type(GLMessage::DataType::INT64);
1507439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_driverControlString->add_int64value((uintptr_t)driverControlString);
150750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1507705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1507805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
150790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetDriverControlStringQCOM(driverControl, bufSize, length, driverControlString);
1508005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1508105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
150820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150839801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
150849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) length,
150859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) driverControlString,
150869801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
150879801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1508805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1508905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
150909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1509193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
150920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
150930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glEnableDriverControlQCOM(GLuint driverControl) {
150950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
150960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
150970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glEnableDriverControlQCOM);
150990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument driverControl
151010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_driverControl = glmsg.add_args();
151020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_driverControl->set_isarray(false);
151030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_driverControl->set_type(GLMessage::DataType::INT);
151040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_driverControl->add_intvalue(driverControl);
151050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1510705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1510805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
151090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glEnableDriverControlQCOM(driverControl);
1511005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1511105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
151120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
151149801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
151159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1511605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1511705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
151189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1511993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
151200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
151210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDisableDriverControlQCOM(GLuint driverControl) {
151230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
151240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
151250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDisableDriverControlQCOM);
151270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument driverControl
151290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_driverControl = glmsg.add_args();
151300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_driverControl->set_isarray(false);
151310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_driverControl->set_type(GLMessage::DataType::INT);
151320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_driverControl->add_intvalue(driverControl);
151330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1513505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1513605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
151370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDisableDriverControlQCOM(driverControl);
1513805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1513905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
151400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
151429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
151439801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1514405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1514505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
151469801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1514793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
151480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
151490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glExtGetTexturesQCOM(GLuint *textures, GLint maxTextures, GLint *numTextures) {
151510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
151520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
151530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glExtGetTexturesQCOM);
151550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument textures
151570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_textures = glmsg.add_args();
151580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_textures->set_isarray(false);
1515939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_textures->set_type(GLMessage::DataType::INT64);
1516039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_textures->add_int64value((uintptr_t)textures);
151610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument maxTextures
151630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_maxTextures = glmsg.add_args();
151640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxTextures->set_isarray(false);
151650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxTextures->set_type(GLMessage::DataType::INT);
151660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxTextures->add_intvalue(maxTextures);
151670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument numTextures
151690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_numTextures = glmsg.add_args();
151700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numTextures->set_isarray(false);
1517139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_numTextures->set_type(GLMessage::DataType::INT64);
1517239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_numTextures->add_int64value((uintptr_t)numTextures);
151730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1517505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1517605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
151770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glExtGetTexturesQCOM(textures, maxTextures, numTextures);
1517805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1517905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
151800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
151829801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) textures,
151839801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) numTextures,
151849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
151859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1518605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1518705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
151889801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1518993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
151900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
151910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glExtGetBuffersQCOM(GLuint *buffers, GLint maxBuffers, GLint *numBuffers) {
151930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
151940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
151950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glExtGetBuffersQCOM);
151970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument buffers
151990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_buffers = glmsg.add_args();
152000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_buffers->set_isarray(false);
1520139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_buffers->set_type(GLMessage::DataType::INT64);
1520239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_buffers->add_int64value((uintptr_t)buffers);
152030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument maxBuffers
152050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_maxBuffers = glmsg.add_args();
152060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxBuffers->set_isarray(false);
152070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxBuffers->set_type(GLMessage::DataType::INT);
152080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxBuffers->add_intvalue(maxBuffers);
152090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument numBuffers
152110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_numBuffers = glmsg.add_args();
152120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numBuffers->set_isarray(false);
1521339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_numBuffers->set_type(GLMessage::DataType::INT64);
1521439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_numBuffers->add_int64value((uintptr_t)numBuffers);
152150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1521705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1521805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
152190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glExtGetBuffersQCOM(buffers, maxBuffers, numBuffers);
1522005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1522105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
152220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152239801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
152249801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) buffers,
152259801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) numBuffers,
152269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
152279801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1522805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1522905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
152309801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1523193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
152320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
152330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glExtGetRenderbuffersQCOM(GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers) {
152350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
152360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
152370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glExtGetRenderbuffersQCOM);
152390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument renderbuffers
152410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_renderbuffers = glmsg.add_args();
152420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffers->set_isarray(false);
1524339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_renderbuffers->set_type(GLMessage::DataType::INT64);
1524439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_renderbuffers->add_int64value((uintptr_t)renderbuffers);
152450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument maxRenderbuffers
152470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_maxRenderbuffers = glmsg.add_args();
152480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxRenderbuffers->set_isarray(false);
152490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxRenderbuffers->set_type(GLMessage::DataType::INT);
152500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxRenderbuffers->add_intvalue(maxRenderbuffers);
152510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument numRenderbuffers
152530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_numRenderbuffers = glmsg.add_args();
152540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numRenderbuffers->set_isarray(false);
1525539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_numRenderbuffers->set_type(GLMessage::DataType::INT64);
1525639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_numRenderbuffers->add_int64value((uintptr_t)numRenderbuffers);
152570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1525905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1526005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
152610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glExtGetRenderbuffersQCOM(renderbuffers, maxRenderbuffers, numRenderbuffers);
1526205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1526305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
152640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
152669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) renderbuffers,
152679801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) numRenderbuffers,
152689801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
152699801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1527005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1527105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
152729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1527393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
152740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
152750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glExtGetFramebuffersQCOM(GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers) {
152770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
152780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
152790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glExtGetFramebuffersQCOM);
152810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument framebuffers
152830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_framebuffers = glmsg.add_args();
152840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffers->set_isarray(false);
1528539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_framebuffers->set_type(GLMessage::DataType::INT64);
1528639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_framebuffers->add_int64value((uintptr_t)framebuffers);
152870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument maxFramebuffers
152890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_maxFramebuffers = glmsg.add_args();
152900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxFramebuffers->set_isarray(false);
152910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxFramebuffers->set_type(GLMessage::DataType::INT);
152920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxFramebuffers->add_intvalue(maxFramebuffers);
152930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument numFramebuffers
152950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_numFramebuffers = glmsg.add_args();
152960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numFramebuffers->set_isarray(false);
1529739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_numFramebuffers->set_type(GLMessage::DataType::INT64);
1529839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_numFramebuffers->add_int64value((uintptr_t)numFramebuffers);
152990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1530105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1530205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
153030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glExtGetFramebuffersQCOM(framebuffers, maxFramebuffers, numFramebuffers);
1530405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1530505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
153060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153079801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
153089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) framebuffers,
153099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) numFramebuffers,
153109801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
153119801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1531205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1531305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
153149801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1531593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
153160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
153170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glExtGetTexLevelParameterivQCOM(GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params) {
153190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
153200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
153210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glExtGetTexLevelParameterivQCOM);
153230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument texture
153250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_texture = glmsg.add_args();
153260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->set_isarray(false);
153270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->set_type(GLMessage::DataType::INT);
153280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->add_intvalue(texture);
153290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument face
153310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_face = glmsg.add_args();
153320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_isarray(false);
153330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_type(GLMessage::DataType::ENUM);
153340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->add_intvalue((int)face);
153350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument level
153370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_level = glmsg.add_args();
153380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_isarray(false);
153390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_type(GLMessage::DataType::INT);
153400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->add_intvalue(level);
153410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
153430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
153440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
153450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
153460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
153470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
153490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
153500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
1535139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1535239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
153530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1535505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1535605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
153570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glExtGetTexLevelParameterivQCOM(texture, face, level, pname, params);
1535805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1535905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
153600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
153629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
153639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
153649801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1536505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1536605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
153679801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1536893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
153690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
153700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glExtTexObjectStateOverrideiQCOM(GLenum target, GLenum pname, GLint param) {
153720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
153730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
153740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glExtTexObjectStateOverrideiQCOM);
153760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
153780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
153790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
153800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
153810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
153820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
153840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
153850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
153860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
153870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
153880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
153900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
153910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
153920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
153930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
153940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1539605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1539705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
153980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glExtTexObjectStateOverrideiQCOM(target, pname, param);
1539905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1540005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
154010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
154039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
154049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1540505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1540605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
154079801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1540893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
154090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
154100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glExtGetTexSubImageQCOM(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels) {
154120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
154130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
154140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glExtGetTexSubImageQCOM);
154160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
154180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
154190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
154200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
154210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
154220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument level
154240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_level = glmsg.add_args();
154250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_isarray(false);
154260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_type(GLMessage::DataType::INT);
154270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->add_intvalue(level);
154280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument xoffset
154300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_xoffset = glmsg.add_args();
154310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->set_isarray(false);
154320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->set_type(GLMessage::DataType::INT);
154330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->add_intvalue(xoffset);
154340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument yoffset
154360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_yoffset = glmsg.add_args();
154370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->set_isarray(false);
154380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->set_type(GLMessage::DataType::INT);
154390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->add_intvalue(yoffset);
154400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zoffset
154420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zoffset = glmsg.add_args();
154430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zoffset->set_isarray(false);
154440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zoffset->set_type(GLMessage::DataType::INT);
154450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zoffset->add_intvalue(zoffset);
154460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
154480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
154490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
154500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
154510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
154520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
154540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
154550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
154560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
154570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
154580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument depth
154600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_depth = glmsg.add_args();
154610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_isarray(false);
154620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_type(GLMessage::DataType::INT);
154630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->add_intvalue(depth);
154640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument format
154660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_format = glmsg.add_args();
154670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->set_isarray(false);
154680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->set_type(GLMessage::DataType::ENUM);
154690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->add_intvalue((int)format);
154700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument type
154720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_type = glmsg.add_args();
154730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_isarray(false);
154740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_type(GLMessage::DataType::ENUM);
154750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->add_intvalue((int)type);
154760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument texels
154780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_texels = glmsg.add_args();
154790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texels->set_isarray(false);
1548039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_texels->set_type(GLMessage::DataType::INT64);
1548139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_texels->add_int64value((uintptr_t)texels);
154820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1548405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1548505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
154860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glExtGetTexSubImageQCOM(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, texels);
1548705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1548805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
154890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
154919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) texels,
154929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
154939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1549405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1549505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
154969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1549793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
154980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
154990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glExtGetBufferPointervQCOM(GLenum target, GLvoid **params) {
155010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
155020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
155030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glExtGetBufferPointervQCOM);
155050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
155070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
155080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
155090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
155100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
155110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
155130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
155140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
1551539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1551639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
155170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1551905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1552005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
155210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glExtGetBufferPointervQCOM(target, params);
1552205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1552305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
155240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155259801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
155269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
155279801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
155289801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1552905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1553005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
155319801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1553293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
155330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
155340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glExtGetShadersQCOM(GLuint *shaders, GLint maxShaders, GLint *numShaders) {
155360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
155370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
155380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glExtGetShadersQCOM);
155400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument shaders
155420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_shaders = glmsg.add_args();
155430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shaders->set_isarray(false);
1554439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_shaders->set_type(GLMessage::DataType::INT64);
1554539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_shaders->add_int64value((uintptr_t)shaders);
155460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument maxShaders
155480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_maxShaders = glmsg.add_args();
155490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxShaders->set_isarray(false);
155500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxShaders->set_type(GLMessage::DataType::INT);
155510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxShaders->add_intvalue(maxShaders);
155520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument numShaders
155540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_numShaders = glmsg.add_args();
155550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numShaders->set_isarray(false);
1555639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_numShaders->set_type(GLMessage::DataType::INT64);
1555739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_numShaders->add_int64value((uintptr_t)numShaders);
155580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1556005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1556105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
155620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glExtGetShadersQCOM(shaders, maxShaders, numShaders);
1556305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1556405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
155650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
155679801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) shaders,
155689801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) numShaders,
155699801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
155709801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1557105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1557205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
155739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1557493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
155750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
155760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glExtGetProgramsQCOM(GLuint *programs, GLint maxPrograms, GLint *numPrograms) {
155780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
155790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
155800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glExtGetProgramsQCOM);
155820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument programs
155840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_programs = glmsg.add_args();
155850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_programs->set_isarray(false);
1558639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_programs->set_type(GLMessage::DataType::INT64);
1558739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_programs->add_int64value((uintptr_t)programs);
155880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument maxPrograms
155900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_maxPrograms = glmsg.add_args();
155910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxPrograms->set_isarray(false);
155920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxPrograms->set_type(GLMessage::DataType::INT);
155930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxPrograms->add_intvalue(maxPrograms);
155940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument numPrograms
155960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_numPrograms = glmsg.add_args();
155970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numPrograms->set_isarray(false);
1559839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_numPrograms->set_type(GLMessage::DataType::INT64);
1559939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_numPrograms->add_int64value((uintptr_t)numPrograms);
156000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1560205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1560305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
156040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glExtGetProgramsQCOM(programs, maxPrograms, numPrograms);
1560505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1560605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
156070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
156099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) programs,
156109801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) numPrograms,
156119801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
156129801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1561305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1561405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
156159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1561693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
156170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
156180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156190469dd6d55fa331bfd7de9431da98b6340d82271Siva VelusamyGLboolean GLTrace_glExtIsProgramBinaryQCOM(GLuint program) {
156200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
156210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
156220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glExtIsProgramBinaryQCOM);
156240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument program
156260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_program = glmsg.add_args();
156270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_isarray(false);
156280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_type(GLMessage::DataType::INT);
156290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->add_intvalue(program);
156300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1563205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1563305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
156340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLboolean retValue = glContext->hooks->gl.glExtIsProgramBinaryQCOM(program);
1563505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1563605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
156370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
156390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
156400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
156410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::BOOL);
156420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_boolvalue(retValue);
156430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156449801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
156459801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
156469801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1564705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1564805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
156499801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1565093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
156510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
156530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
156540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glExtGetProgramBinarySourceQCOM(GLuint program, GLenum shadertype, GLchar *source, GLint *length) {
156560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
156570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
156580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glExtGetProgramBinarySourceQCOM);
156600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument program
156620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_program = glmsg.add_args();
156630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_isarray(false);
156640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_type(GLMessage::DataType::INT);
156650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->add_intvalue(program);
156660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument shadertype
156680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_shadertype = glmsg.add_args();
156690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shadertype->set_isarray(false);
156700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shadertype->set_type(GLMessage::DataType::ENUM);
156710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shadertype->add_intvalue((int)shadertype);
156720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument source
156740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_source = glmsg.add_args();
156750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_source->set_isarray(false);
1567639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_source->set_type(GLMessage::DataType::INT64);
1567739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_source->add_int64value((uintptr_t)source);
156780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument length
156800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_length = glmsg.add_args();
156810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_isarray(false);
1568239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->set_type(GLMessage::DataType::INT64);
1568339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_length->add_int64value((uintptr_t)length);
156840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1568605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1568705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
156880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glExtGetProgramBinarySourceQCOM(program, shadertype, source, length);
1568905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1569005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
156910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
156939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) source,
156949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) length,
156959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
156969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1569705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1569805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
156999801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1570093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
157010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
157020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glStartTilingQCOM(GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask) {
157040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
157050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
157060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glStartTilingQCOM);
157080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
157100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
157110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
157120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::INT);
157130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_intvalue(x);
157140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
157160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
157170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
157180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::INT);
157190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_intvalue(y);
157200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
157220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
157230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
157240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
157250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
157260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
157280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
157290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
157300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
157310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
157320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument preserveMask
157340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_preserveMask = glmsg.add_args();
157350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_preserveMask->set_isarray(false);
157360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_preserveMask->set_type(GLMessage::DataType::INT);
157370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_preserveMask->add_intvalue(preserveMask);
157380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1574005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1574105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
157420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glStartTilingQCOM(x, y, width, height, preserveMask);
1574305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1574405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
157450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157469801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
157479801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
157489801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1574905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1575005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
157519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1575293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
157530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
157540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glEndTilingQCOM(GLbitfield preserveMask) {
157560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
157570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
157580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glEndTilingQCOM);
157600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument preserveMask
157620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_preserveMask = glmsg.add_args();
157630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_preserveMask->set_isarray(false);
157640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_preserveMask->set_type(GLMessage::DataType::INT);
157650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_preserveMask->add_intvalue(preserveMask);
157660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1576805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1576905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
157700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glEndTilingQCOM(preserveMask);
1577105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1577205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
157730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
157759801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
157769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1577705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1577805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
157799801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1578093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
157810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
157820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy// Definitions for GL1 APIs
157850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glAlphaFunc(GLenum func, GLclampf ref) {
157870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
157880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
157890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glAlphaFunc);
157910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument func
157930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_func = glmsg.add_args();
157940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_func->set_isarray(false);
157950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_func->set_type(GLMessage::DataType::ENUM);
157960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_func->add_intvalue((int)func);
157970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument ref
157990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_ref = glmsg.add_args();
158000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ref->set_isarray(false);
158010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ref->set_type(GLMessage::DataType::FLOAT);
158020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ref->add_floatvalue(ref);
158030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
158040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1580505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1580605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
158070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glAlphaFunc(func, ref);
1580805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1580905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
158100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
158119801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
158129801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
158139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1581405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1581505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
158169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1581793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
158180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
158190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
158200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glClipPlanef(GLenum plane, const GLfloat *equation) {
158210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
158220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
158230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
158240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glClipPlanef);
158250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
158260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument plane
158270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_plane = glmsg.add_args();
158280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_plane->set_isarray(false);
158290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_plane->set_type(GLMessage::DataType::ENUM);
158300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_plane->add_intvalue((int)plane);
158310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
158320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument equation
158330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_equation = glmsg.add_args();
158340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_equation->set_isarray(false);
1583539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_equation->set_type(GLMessage::DataType::INT64);
1583639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_equation->add_int64value((uintptr_t)equation);
158370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
158380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1583905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1584005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
158410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glClipPlanef(plane, equation);
1584205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1584305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
158440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
158459801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
158469801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) equation,
158479801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
158489801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1584905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1585005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
158519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1585293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
158530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
158540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
158550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) {
158560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
158570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
158580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
158590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glColor4f);
158600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
158610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument red
158620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_red = glmsg.add_args();
158630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->set_isarray(false);
158640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->set_type(GLMessage::DataType::FLOAT);
158650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->add_floatvalue(red);
158660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
158670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument green
158680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_green = glmsg.add_args();
158690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->set_isarray(false);
158700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->set_type(GLMessage::DataType::FLOAT);
158710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->add_floatvalue(green);
158720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
158730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument blue
158740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_blue = glmsg.add_args();
158750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->set_isarray(false);
158760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->set_type(GLMessage::DataType::FLOAT);
158770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->add_floatvalue(blue);
158780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
158790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument alpha
158800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_alpha = glmsg.add_args();
158810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->set_isarray(false);
158820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->set_type(GLMessage::DataType::FLOAT);
158830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->add_floatvalue(alpha);
158840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
158850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1588605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1588705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
158880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glColor4f(red, green, blue, alpha);
1588905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1589005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
158910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
158929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
158939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
158949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1589505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1589605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
158979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1589893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
158990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
159000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFogf(GLenum pname, GLfloat param) {
159020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
159030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
159040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFogf);
159060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
159080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
159090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
159100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
159110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
159120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
159140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
159150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
159160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::FLOAT);
159170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_floatvalue(param);
159180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1592005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1592105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
159220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFogf(pname, param);
1592305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1592405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
159250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
159279801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
159289801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1592905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1593005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
159319801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1593293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
159330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
159340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFogfv(GLenum pname, const GLfloat *params) {
159360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
159370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
159380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFogfv);
159400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
159420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
159430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
159440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
159450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
159460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
159480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
159490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
1595039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1595139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
159520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1595405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1595505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
159560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFogfv(pname, params);
1595705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1595805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
159590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
159619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
159629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
159639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1596405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1596505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
159669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1596793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
159680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
159690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFrustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) {
159710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
159720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
159730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFrustumf);
159750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument left
159770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_left = glmsg.add_args();
159780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_isarray(false);
159790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_type(GLMessage::DataType::FLOAT);
159800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->add_floatvalue(left);
159810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument right
159830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_right = glmsg.add_args();
159840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_isarray(false);
159850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_type(GLMessage::DataType::FLOAT);
159860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->add_floatvalue(right);
159870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument bottom
159890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_bottom = glmsg.add_args();
159900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_isarray(false);
159910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_type(GLMessage::DataType::FLOAT);
159920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->add_floatvalue(bottom);
159930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument top
159950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_top = glmsg.add_args();
159960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_isarray(false);
159970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_type(GLMessage::DataType::FLOAT);
159980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->add_floatvalue(top);
159990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zNear
160010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zNear = glmsg.add_args();
160020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_isarray(false);
160030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_type(GLMessage::DataType::FLOAT);
160040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->add_floatvalue(zNear);
160050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zFar
160070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zFar = glmsg.add_args();
160080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_isarray(false);
160090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_type(GLMessage::DataType::FLOAT);
160100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->add_floatvalue(zFar);
160110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1601305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1601405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
160150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFrustumf(left, right, bottom, top, zNear, zFar);
1601605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1601705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
160180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
160209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
160219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1602205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1602305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
160249801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1602593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
160260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
160270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetClipPlanef(GLenum pname, GLfloat eqn[4]) {
160290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
160300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
160310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetClipPlanef);
160330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
160350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
160360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
160370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
160380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
160390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument eqn
160410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_eqn = glmsg.add_args();
160420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_eqn->set_isarray(false);
1604339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_eqn->set_type(GLMessage::DataType::INT64);
1604439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_eqn->add_int64value((uintptr_t)eqn);
160450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1604705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1604805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
160490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetClipPlanef(pname, eqn);
1605005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1605105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
160520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160539801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
160549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) eqn,
160559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
160569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1605705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1605805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
160599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1606093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
160610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
160620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetLightfv(GLenum light, GLenum pname, GLfloat *params) {
160640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
160650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
160660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetLightfv);
160680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument light
160700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_light = glmsg.add_args();
160710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_isarray(false);
160720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_type(GLMessage::DataType::ENUM);
160730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->add_intvalue((int)light);
160740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
160760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
160770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
160780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
160790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
160800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
160820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
160830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
1608439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1608539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
160860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1608805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1608905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
160900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetLightfv(light, pname, params);
1609105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1609205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
160930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
160959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
160969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
160979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1609805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1609905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
161009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1610193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
161020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
161030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) {
161050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
161060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
161070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetMaterialfv);
161090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument face
161110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_face = glmsg.add_args();
161120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_isarray(false);
161130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_type(GLMessage::DataType::ENUM);
161140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->add_intvalue((int)face);
161150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
161170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
161180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
161190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
161200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
161210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
161230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
161240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
1612539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1612639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
161270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1612905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1613005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
161310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetMaterialfv(face, pname, params);
1613205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1613305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
161340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
161369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
161379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
161389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1613905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1614005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
161419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1614293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
161430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
161440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetTexEnvfv(GLenum env, GLenum pname, GLfloat *params) {
161460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
161470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
161480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetTexEnvfv);
161500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument env
161520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_env = glmsg.add_args();
161530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_env->set_isarray(false);
161540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_env->set_type(GLMessage::DataType::ENUM);
161550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_env->add_intvalue((int)env);
161560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
161580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
161590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
161600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
161610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
161620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
161640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
161650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
1616639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1616739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
161680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1617005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1617105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
161720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetTexEnvfv(env, pname, params);
1617305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1617405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
161750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
161779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
161789801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
161799801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1618005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1618105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
161829801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1618393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
161840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
161850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLightModelf(GLenum pname, GLfloat param) {
161870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
161880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
161890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLightModelf);
161910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
161930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
161940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
161950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
161960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
161970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
161990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
162000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
162010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::FLOAT);
162020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_floatvalue(param);
162030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1620505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1620605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
162070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLightModelf(pname, param);
1620805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1620905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
162100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162119801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
162129801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
162139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1621405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1621505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
162169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1621793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
162180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
162190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLightModelfv(GLenum pname, const GLfloat *params) {
162210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
162220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
162230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLightModelfv);
162250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
162270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
162280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
162290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
162300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
162310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
162330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
162340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
1623539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1623639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
162370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1623905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1624005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
162410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLightModelfv(pname, params);
1624205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1624305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
162440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162459801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
162469801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
162479801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
162489801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1624905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1625005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
162519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1625293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
162530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
162540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLightf(GLenum light, GLenum pname, GLfloat param) {
162560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
162570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
162580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLightf);
162600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument light
162620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_light = glmsg.add_args();
162630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_isarray(false);
162640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_type(GLMessage::DataType::ENUM);
162650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->add_intvalue((int)light);
162660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
162680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
162690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
162700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
162710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
162720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
162740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
162750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
162760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::FLOAT);
162770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_floatvalue(param);
162780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1628005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1628105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
162820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLightf(light, pname, param);
1628305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1628405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
162850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162869801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
162879801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
162889801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1628905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1629005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
162919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1629293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
162930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
162940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLightfv(GLenum light, GLenum pname, const GLfloat *params) {
162960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
162970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
162980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLightfv);
163000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument light
163020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_light = glmsg.add_args();
163030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_isarray(false);
163040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_type(GLMessage::DataType::ENUM);
163050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->add_intvalue((int)light);
163060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
163080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
163090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
163100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
163110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
163120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
163140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
163150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
1631639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1631739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
163180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1632005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1632105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
163220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLightfv(light, pname, params);
1632305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1632405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
163250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
163279801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
163289801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
163299801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1633005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1633105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
163329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1633393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
163340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
163350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLoadMatrixf(const GLfloat *m) {
163370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
163380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
163390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLoadMatrixf);
163410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument m
163430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_m = glmsg.add_args();
163440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_m->set_isarray(false);
1634539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_m->set_type(GLMessage::DataType::INT64);
1634639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_m->add_int64value((uintptr_t)m);
163470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1634905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1635005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
163510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLoadMatrixf(m);
1635205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1635305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
163540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
163569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) m,
163579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
163589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1635905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1636005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
163619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1636293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
163630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
163640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glMaterialf(GLenum face, GLenum pname, GLfloat param) {
163660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
163670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
163680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glMaterialf);
163700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument face
163720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_face = glmsg.add_args();
163730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_isarray(false);
163740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_type(GLMessage::DataType::ENUM);
163750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->add_intvalue((int)face);
163760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
163780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
163790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
163800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
163810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
163820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
163840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
163850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
163860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::FLOAT);
163870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_floatvalue(param);
163880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1639005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1639105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
163920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glMaterialf(face, pname, param);
1639305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1639405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
163950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
163979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
163989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1639905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1640005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
164019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1640293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
164030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
164040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) {
164060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
164070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
164080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glMaterialfv);
164100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument face
164120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_face = glmsg.add_args();
164130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_isarray(false);
164140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_type(GLMessage::DataType::ENUM);
164150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->add_intvalue((int)face);
164160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
164180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
164190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
164200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
164210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
164220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
164240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
164250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
1642639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1642739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
164280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1643005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1643105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
164320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glMaterialfv(face, pname, params);
1643305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1643405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
164350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
164379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
164389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
164399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1644005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1644105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
164429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1644393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
164440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
164450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glMultMatrixf(const GLfloat *m) {
164470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
164480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
164490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glMultMatrixf);
164510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument m
164530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_m = glmsg.add_args();
164540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_m->set_isarray(false);
1645539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_m->set_type(GLMessage::DataType::INT64);
1645639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_m->add_int64value((uintptr_t)m);
164570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1645905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1646005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
164610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glMultMatrixf(m);
1646205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1646305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
164640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
164669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) m,
164679801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
164689801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1646905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1647005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
164719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1647293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
164730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
164740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) {
164760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
164770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
164780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glMultiTexCoord4f);
164800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
164820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
164830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
164840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
164850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
164860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument s
164880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_s = glmsg.add_args();
164890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_s->set_isarray(false);
164900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_s->set_type(GLMessage::DataType::FLOAT);
164910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_s->add_floatvalue(s);
164920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument t
164940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_t = glmsg.add_args();
164950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_t->set_isarray(false);
164960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_t->set_type(GLMessage::DataType::FLOAT);
164970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_t->add_floatvalue(t);
164980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument r
165000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_r = glmsg.add_args();
165010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_r->set_isarray(false);
165020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_r->set_type(GLMessage::DataType::FLOAT);
165030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_r->add_floatvalue(r);
165040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument q
165060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_q = glmsg.add_args();
165070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_q->set_isarray(false);
165080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_q->set_type(GLMessage::DataType::FLOAT);
165090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_q->add_floatvalue(q);
165100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1651205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1651305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
165140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glMultiTexCoord4f(target, s, t, r, q);
1651505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1651605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
165170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
165199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
165209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1652105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1652205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
165239801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1652493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
165250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
165260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) {
165280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
165290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
165300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glNormal3f);
165320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument nx
165340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_nx = glmsg.add_args();
165350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nx->set_isarray(false);
165360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nx->set_type(GLMessage::DataType::FLOAT);
165370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nx->add_floatvalue(nx);
165380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument ny
165400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_ny = glmsg.add_args();
165410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ny->set_isarray(false);
165420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ny->set_type(GLMessage::DataType::FLOAT);
165430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ny->add_floatvalue(ny);
165440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument nz
165460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_nz = glmsg.add_args();
165470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nz->set_isarray(false);
165480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nz->set_type(GLMessage::DataType::FLOAT);
165490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nz->add_floatvalue(nz);
165500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1655205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1655305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
165540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glNormal3f(nx, ny, nz);
1655505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1655605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
165570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
165599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
165609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1656105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1656205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
165639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1656493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
165650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
165660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glOrthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) {
165680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
165690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
165700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glOrthof);
165720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument left
165740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_left = glmsg.add_args();
165750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_isarray(false);
165760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_type(GLMessage::DataType::FLOAT);
165770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->add_floatvalue(left);
165780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument right
165800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_right = glmsg.add_args();
165810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_isarray(false);
165820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_type(GLMessage::DataType::FLOAT);
165830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->add_floatvalue(right);
165840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument bottom
165860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_bottom = glmsg.add_args();
165870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_isarray(false);
165880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_type(GLMessage::DataType::FLOAT);
165890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->add_floatvalue(bottom);
165900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument top
165920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_top = glmsg.add_args();
165930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_isarray(false);
165940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_type(GLMessage::DataType::FLOAT);
165950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->add_floatvalue(top);
165960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zNear
165980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zNear = glmsg.add_args();
165990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_isarray(false);
166000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_type(GLMessage::DataType::FLOAT);
166010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->add_floatvalue(zNear);
166020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zFar
166040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zFar = glmsg.add_args();
166050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_isarray(false);
166060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_type(GLMessage::DataType::FLOAT);
166070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->add_floatvalue(zFar);
166080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1661005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1661105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
166120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glOrthof(left, right, bottom, top, zNear, zFar);
1661305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1661405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
166150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
166179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
166189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1661905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1662005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
166219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1662293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
166230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
166240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glPointParameterf(GLenum pname, GLfloat param) {
166260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
166270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
166280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glPointParameterf);
166300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
166320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
166330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
166340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
166350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
166360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
166380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
166390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
166400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::FLOAT);
166410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_floatvalue(param);
166420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1664405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1664505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
166460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glPointParameterf(pname, param);
1664705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1664805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
166490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166509801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
166519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
166529801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1665305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1665405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
166559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1665693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
166570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
166580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glPointParameterfv(GLenum pname, const GLfloat *params) {
166600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
166610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
166620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glPointParameterfv);
166640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
166660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
166670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
166680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
166690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
166700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
166720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
166730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
1667439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1667539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
166760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1667805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1667905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
166800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glPointParameterfv(pname, params);
1668105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1668205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
166830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
166859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
166869801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
166879801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1668805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1668905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
166909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1669193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
166920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
166930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glPointSize(GLfloat size) {
166950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
166960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
166970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glPointSize);
166990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument size
167010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_size = glmsg.add_args();
167020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_isarray(false);
167030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_type(GLMessage::DataType::FLOAT);
167040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->add_floatvalue(size);
167050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1670705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1670805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
167090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glPointSize(size);
1671005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1671105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
167120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
167149801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
167159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1671605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1671705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
167189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1671993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
167200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
167210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) {
167230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
167240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
167250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glRotatef);
167270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument angle
167290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_angle = glmsg.add_args();
167300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_angle->set_isarray(false);
167310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_angle->set_type(GLMessage::DataType::FLOAT);
167320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_angle->add_floatvalue(angle);
167330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
167350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
167360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
167370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::FLOAT);
167380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_floatvalue(x);
167390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
167410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
167420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
167430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::FLOAT);
167440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_floatvalue(y);
167450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
167470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
167480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
167490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::FLOAT);
167500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_floatvalue(z);
167510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1675305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1675405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
167550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glRotatef(angle, x, y, z);
1675605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1675705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
167580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
167609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
167619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1676205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1676305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
167649801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1676593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
167660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
167670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glScalef(GLfloat x, GLfloat y, GLfloat z) {
167690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
167700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
167710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glScalef);
167730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
167750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
167760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
167770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::FLOAT);
167780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_floatvalue(x);
167790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
167810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
167820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
167830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::FLOAT);
167840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_floatvalue(y);
167850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
167870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
167880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
167890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::FLOAT);
167900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_floatvalue(z);
167910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1679305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1679405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
167950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glScalef(x, y, z);
1679605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1679705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
167980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167999801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
168009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
168019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1680205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1680305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
168049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1680593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
168060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
168070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexEnvf(GLenum target, GLenum pname, GLfloat param) {
168090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
168100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
168110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexEnvf);
168130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
168150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
168160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
168170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
168180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
168190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
168210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
168220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
168230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
168240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
168250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
168270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
168280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
168290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::FLOAT);
168300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_floatvalue(param);
168310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1683305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1683405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
168350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexEnvf(target, pname, param);
1683605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1683705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
168380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
168409801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
168419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1684205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1684305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
168449801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1684593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
168460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
168470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) {
168490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
168500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
168510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexEnvfv);
168530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
168550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
168560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
168570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
168580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
168590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
168610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
168620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
168630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
168640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
168650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
168670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
168680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
1686939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1687039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
168710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1687305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1687405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
168750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexEnvfv(target, pname, params);
1687605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1687705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
168780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168799801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
168809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
168819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
168829801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1688305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1688405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
168859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1688693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
168870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
168880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTranslatef(GLfloat x, GLfloat y, GLfloat z) {
168900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
168910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
168920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTranslatef);
168940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
168960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
168970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
168980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::FLOAT);
168990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_floatvalue(x);
169000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
169020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
169030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
169040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::FLOAT);
169050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_floatvalue(y);
169060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
169080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
169090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
169100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::FLOAT);
169110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_floatvalue(z);
169120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1691405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1691505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
169160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTranslatef(x, y, z);
1691705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1691805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
169190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
169219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
169229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1692305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1692405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
169259801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1692693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
169270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
169280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glAlphaFuncx(GLenum func, GLclampx ref) {
169300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
169310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
169320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glAlphaFuncx);
169340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument func
169360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_func = glmsg.add_args();
169370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_func->set_isarray(false);
169380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_func->set_type(GLMessage::DataType::ENUM);
169390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_func->add_intvalue((int)func);
169400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument ref
169420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_ref = glmsg.add_args();
169430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ref->set_isarray(false);
169440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ref->set_type(GLMessage::DataType::INT);
169450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ref->add_intvalue(ref);
169460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1694805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1694905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
169500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glAlphaFuncx(func, ref);
1695105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1695205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
169530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
169559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
169569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1695705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1695805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
169599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1696093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
169610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
169620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glClearColorx(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha) {
169640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
169650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
169660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glClearColorx);
169680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument red
169700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_red = glmsg.add_args();
169710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->set_isarray(false);
169720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->set_type(GLMessage::DataType::INT);
169730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->add_intvalue(red);
169740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument green
169760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_green = glmsg.add_args();
169770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->set_isarray(false);
169780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->set_type(GLMessage::DataType::INT);
169790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->add_intvalue(green);
169800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument blue
169820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_blue = glmsg.add_args();
169830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->set_isarray(false);
169840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->set_type(GLMessage::DataType::INT);
169850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->add_intvalue(blue);
169860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument alpha
169880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_alpha = glmsg.add_args();
169890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->set_isarray(false);
169900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->set_type(GLMessage::DataType::INT);
169910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->add_intvalue(alpha);
169920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1699405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1699505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
169960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glClearColorx(red, green, blue, alpha);
1699705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1699805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
169990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
170019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
170029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1700305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1700405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
170059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1700693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
170070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
170080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glClearDepthx(GLclampx depth) {
170100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
170110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
170120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glClearDepthx);
170140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument depth
170160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_depth = glmsg.add_args();
170170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_isarray(false);
170180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_type(GLMessage::DataType::INT);
170190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->add_intvalue(depth);
170200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1702205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1702305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
170240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glClearDepthx(depth);
1702505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1702605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
170270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170289801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
170299801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
170309801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1703105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1703205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
170339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1703493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
170350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
170360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glClientActiveTexture(GLenum texture) {
170380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
170390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
170400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glClientActiveTexture);
170420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument texture
170440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_texture = glmsg.add_args();
170450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->set_isarray(false);
170460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->set_type(GLMessage::DataType::ENUM);
170470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->add_intvalue((int)texture);
170480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1705005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1705105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
170520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glClientActiveTexture(texture);
1705305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1705405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
170550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
170579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
170589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1705905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1706005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
170619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1706293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
170630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
170640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glClipPlanex(GLenum plane, const GLfixed *equation) {
170660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
170670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
170680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glClipPlanex);
170700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument plane
170720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_plane = glmsg.add_args();
170730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_plane->set_isarray(false);
170740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_plane->set_type(GLMessage::DataType::ENUM);
170750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_plane->add_intvalue((int)plane);
170760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument equation
170780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_equation = glmsg.add_args();
170790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_equation->set_isarray(false);
1708039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_equation->set_type(GLMessage::DataType::INT64);
1708139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_equation->add_int64value((uintptr_t)equation);
170820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1708405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1708505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
170860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glClipPlanex(plane, equation);
1708705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1708805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
170890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
170919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) equation,
170929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
170939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1709405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1709505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
170969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1709793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
170980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
170990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) {
171010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
171020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
171030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glColor4ub);
171050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument red
171070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_red = glmsg.add_args();
171080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->set_isarray(false);
171090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->set_type(GLMessage::DataType::BYTE);
171100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->add_intvalue((int)red);
171110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument green
171130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_green = glmsg.add_args();
171140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->set_isarray(false);
171150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->set_type(GLMessage::DataType::BYTE);
171160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->add_intvalue((int)green);
171170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument blue
171190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_blue = glmsg.add_args();
171200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->set_isarray(false);
171210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->set_type(GLMessage::DataType::BYTE);
171220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->add_intvalue((int)blue);
171230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument alpha
171250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_alpha = glmsg.add_args();
171260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->set_isarray(false);
171270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->set_type(GLMessage::DataType::BYTE);
171280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->add_intvalue((int)alpha);
171290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1713105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1713205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
171330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glColor4ub(red, green, blue, alpha);
1713405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1713505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
171360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
171389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
171399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1714005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1714105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
171429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1714393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
171440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
171450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glColor4x(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) {
171470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
171480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
171490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glColor4x);
171510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument red
171530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_red = glmsg.add_args();
171540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->set_isarray(false);
171550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->set_type(GLMessage::DataType::INT);
171560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->add_intvalue(red);
171570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument green
171590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_green = glmsg.add_args();
171600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->set_isarray(false);
171610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->set_type(GLMessage::DataType::INT);
171620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->add_intvalue(green);
171630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument blue
171650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_blue = glmsg.add_args();
171660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->set_isarray(false);
171670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->set_type(GLMessage::DataType::INT);
171680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->add_intvalue(blue);
171690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument alpha
171710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_alpha = glmsg.add_args();
171720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->set_isarray(false);
171730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->set_type(GLMessage::DataType::INT);
171740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->add_intvalue(alpha);
171750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1717705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1717805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
171790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glColor4x(red, green, blue, alpha);
1718005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1718105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
171820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171839801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
171849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
171859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1718605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1718705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
171889801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1718993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
171900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
171910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) {
171930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
171940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
171950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glColorPointer);
171970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument size
171990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_size = glmsg.add_args();
172000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_isarray(false);
172010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_type(GLMessage::DataType::INT);
172020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->add_intvalue(size);
172030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument type
172050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_type = glmsg.add_args();
172060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_isarray(false);
172070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_type(GLMessage::DataType::ENUM);
172080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->add_intvalue((int)type);
172090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument stride
172110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_stride = glmsg.add_args();
172120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->set_isarray(false);
172130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->set_type(GLMessage::DataType::INT);
172140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->add_intvalue(stride);
172150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pointer
172170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pointer = glmsg.add_args();
172180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pointer->set_isarray(false);
1721939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pointer->set_type(GLMessage::DataType::INT64);
1722039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pointer->add_int64value((uintptr_t)pointer);
172210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1722305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1722405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
172250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glColorPointer(size, type, stride, pointer);
1722605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1722705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
172280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172299801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
172309801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) pointer,
172319801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
172329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1723305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1723405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
172359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1723693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
172370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
172380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDepthRangex(GLclampx zNear, GLclampx zFar) {
172400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
172410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
172420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDepthRangex);
172440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zNear
172460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zNear = glmsg.add_args();
172470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_isarray(false);
172480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_type(GLMessage::DataType::INT);
172490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->add_intvalue(zNear);
172500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zFar
172520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zFar = glmsg.add_args();
172530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_isarray(false);
172540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_type(GLMessage::DataType::INT);
172550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->add_intvalue(zFar);
172560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1725805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1725905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
172600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDepthRangex(zNear, zFar);
1726105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1726205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
172630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172649801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
172659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
172669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1726705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1726805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
172699801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1727093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
172710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
172720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDisableClientState(GLenum array) {
172740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
172750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
172760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDisableClientState);
172780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument array
172800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_array = glmsg.add_args();
172810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_array->set_isarray(false);
172820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_array->set_type(GLMessage::DataType::ENUM);
172830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_array->add_intvalue((int)array);
172840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1728605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1728705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
172880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDisableClientState(array);
1728905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1729005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
172910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
172939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
172949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1729505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1729605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
172979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1729893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
172990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
173000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glEnableClientState(GLenum array) {
173020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
173030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
173040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glEnableClientState);
173060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument array
173080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_array = glmsg.add_args();
173090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_array->set_isarray(false);
173100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_array->set_type(GLMessage::DataType::ENUM);
173110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_array->add_intvalue((int)array);
173120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1731405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1731505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
173160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glEnableClientState(array);
1731705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1731805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
173190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
173219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
173229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1732305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1732405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
173259801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1732693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
173270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
173280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFogx(GLenum pname, GLfixed param) {
173300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
173310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
173320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFogx);
173340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
173360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
173370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
173380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
173390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
173400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
173420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
173430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
173440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
173450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
173460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1734805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1734905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
173500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFogx(pname, param);
1735105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1735205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
173530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
173559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
173569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1735705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1735805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
173599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1736093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
173610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
173620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFogxv(GLenum pname, const GLfixed *params) {
173640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
173650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
173660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFogxv);
173680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
173700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
173710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
173720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
173730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
173740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
173760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
173770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
1737839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1737939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
173800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1738205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1738305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
173840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFogxv(pname, params);
1738505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1738605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
173870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173889801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
173899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
173909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
173919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1739205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1739305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
173949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1739593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
173960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
173970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFrustumx(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar) {
173990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
174000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
174010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFrustumx);
174030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument left
174050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_left = glmsg.add_args();
174060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_isarray(false);
174070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_type(GLMessage::DataType::INT);
174080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->add_intvalue(left);
174090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument right
174110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_right = glmsg.add_args();
174120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_isarray(false);
174130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_type(GLMessage::DataType::INT);
174140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->add_intvalue(right);
174150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument bottom
174170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_bottom = glmsg.add_args();
174180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_isarray(false);
174190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_type(GLMessage::DataType::INT);
174200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->add_intvalue(bottom);
174210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument top
174230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_top = glmsg.add_args();
174240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_isarray(false);
174250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_type(GLMessage::DataType::INT);
174260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->add_intvalue(top);
174270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zNear
174290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zNear = glmsg.add_args();
174300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_isarray(false);
174310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_type(GLMessage::DataType::INT);
174320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->add_intvalue(zNear);
174330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zFar
174350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zFar = glmsg.add_args();
174360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_isarray(false);
174370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_type(GLMessage::DataType::INT);
174380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->add_intvalue(zFar);
174390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1744105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1744205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
174430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFrustumx(left, right, bottom, top, zNear, zFar);
1744405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1744505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
174460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174479801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
174489801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
174499801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1745005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1745105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
174529801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1745393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
174540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
174550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetClipPlanex(GLenum pname, GLfixed eqn[4]) {
174570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
174580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
174590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetClipPlanex);
174610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
174630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
174640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
174650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
174660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
174670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument eqn
174690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_eqn = glmsg.add_args();
174700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_eqn->set_isarray(false);
1747139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_eqn->set_type(GLMessage::DataType::INT64);
1747239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_eqn->add_int64value((uintptr_t)eqn);
174730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1747505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1747605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
174770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetClipPlanex(pname, eqn);
1747805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1747905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
174800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
174829801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) eqn,
174839801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
174849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1748505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1748605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
174879801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1748893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
174890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
174900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetFixedv(GLenum pname, GLfixed *params) {
174920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
174930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
174940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetFixedv);
174960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
174980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
174990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
175000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
175010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
175020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
175040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
175050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
1750639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1750739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
175080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1751005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1751105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
175120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetFixedv(pname, params);
1751305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1751405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
175150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
175179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
175189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
175199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1752005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1752105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
175229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1752393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
175240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
175250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetLightxv(GLenum light, GLenum pname, GLfixed *params) {
175270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
175280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
175290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetLightxv);
175310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument light
175330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_light = glmsg.add_args();
175340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_isarray(false);
175350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_type(GLMessage::DataType::ENUM);
175360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->add_intvalue((int)light);
175370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
175390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
175400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
175410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
175420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
175430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
175450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
175460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
1754739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1754839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
175490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1755105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1755205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
175530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetLightxv(light, pname, params);
1755405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1755505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
175560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
175589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
175599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
175609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1756105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1756205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
175639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1756493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
175650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
175660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetMaterialxv(GLenum face, GLenum pname, GLfixed *params) {
175680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
175690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
175700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetMaterialxv);
175720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument face
175740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_face = glmsg.add_args();
175750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_isarray(false);
175760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_type(GLMessage::DataType::ENUM);
175770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->add_intvalue((int)face);
175780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
175800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
175810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
175820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
175830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
175840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
175860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
175870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
1758839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1758939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
175900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1759205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1759305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
175940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetMaterialxv(face, pname, params);
1759505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1759605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
175970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
175999801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
176009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
176019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1760205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1760305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
176049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1760593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
176060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
176070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetPointerv(GLenum pname, GLvoid **params) {
176090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
176100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
176110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetPointerv);
176130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
176150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
176160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
176170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
176180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
176190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
176210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
176220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
1762339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1762439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
176250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1762705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1762805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
176290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetPointerv(pname, params);
1763005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1763105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
176320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
176349801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
176359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
176369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1763705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1763805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
176399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1764093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
176410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
176420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetTexEnviv(GLenum env, GLenum pname, GLint *params) {
176440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
176450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
176460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetTexEnviv);
176480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument env
176500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_env = glmsg.add_args();
176510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_env->set_isarray(false);
176520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_env->set_type(GLMessage::DataType::ENUM);
176530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_env->add_intvalue((int)env);
176540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
176560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
176570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
176580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
176590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
176600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
176620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
176630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
1766439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1766539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
176660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1766805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1766905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
176700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetTexEnviv(env, pname, params);
1767105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1767205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
176730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
176759801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
176769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
176779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1767805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1767905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
176809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1768193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
176820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
176830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetTexEnvxv(GLenum env, GLenum pname, GLfixed *params) {
176850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
176860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
176870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetTexEnvxv);
176890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument env
176910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_env = glmsg.add_args();
176920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_env->set_isarray(false);
176930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_env->set_type(GLMessage::DataType::ENUM);
176940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_env->add_intvalue((int)env);
176950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
176970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
176980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
176990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
177000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
177010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
177030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
177040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
1770539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1770639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
177070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1770905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1771005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
177110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetTexEnvxv(env, pname, params);
1771205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1771305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
177140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
177169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
177179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
177189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1771905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1772005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
177219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1772293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
177230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
177240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetTexParameterxv(GLenum target, GLenum pname, GLfixed *params) {
177260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
177270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
177280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetTexParameterxv);
177300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
177320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
177330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
177340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
177350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
177360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
177380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
177390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
177400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
177410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
177420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
177440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
177450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
1774639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1774739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
177480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1775005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1775105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
177520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetTexParameterxv(target, pname, params);
1775305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1775405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
177550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
177579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
177589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
177599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1776005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1776105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
177629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1776393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
177640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
177650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLightModelx(GLenum pname, GLfixed param) {
177670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
177680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
177690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLightModelx);
177710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
177730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
177740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
177750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
177760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
177770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
177790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
177800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
177810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
177820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
177830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1778505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1778605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
177870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLightModelx(pname, param);
1778805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1778905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
177900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
177929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
177939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1779405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1779505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
177969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1779793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
177980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
177990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
178000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLightModelxv(GLenum pname, const GLfixed *params) {
178010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
178020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
178030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
178040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLightModelxv);
178050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
178060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
178070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
178080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
178090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
178100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
178110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
178120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
178130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
178140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
1781539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1781639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
178170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
178180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1781905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1782005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
178210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLightModelxv(pname, params);
1782205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1782305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
178240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
178259801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
178269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
178279801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
178289801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1782905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1783005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
178319801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1783293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
178330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
178340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
178350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLightx(GLenum light, GLenum pname, GLfixed param) {
178360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
178370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
178380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
178390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLightx);
178400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
178410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument light
178420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_light = glmsg.add_args();
178430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_isarray(false);
178440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_type(GLMessage::DataType::ENUM);
178450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->add_intvalue((int)light);
178460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
178470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
178480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
178490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
178500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
178510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
178520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
178530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
178540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
178550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
178560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
178570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
178580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
178590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1786005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1786105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
178620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLightx(light, pname, param);
1786305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1786405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
178650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
178669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
178679801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
178689801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1786905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1787005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
178719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1787293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
178730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
178740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
178750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLightxv(GLenum light, GLenum pname, const GLfixed *params) {
178760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
178770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
178780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
178790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLightxv);
178800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
178810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument light
178820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_light = glmsg.add_args();
178830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_isarray(false);
178840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_type(GLMessage::DataType::ENUM);
178850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->add_intvalue((int)light);
178860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
178870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
178880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
178890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
178900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
178910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
178920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
178930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
178940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
178950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
1789639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1789739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
178980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
178990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1790005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1790105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
179020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLightxv(light, pname, params);
1790305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1790405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
179050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
179069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
179079801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
179089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
179099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1791005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1791105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
179129801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1791393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
179140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
179150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
179160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLineWidthx(GLfixed width) {
179170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
179180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
179190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
179200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLineWidthx);
179210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
179220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
179230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
179240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
179250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
179260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
179270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
179280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1792905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1793005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
179310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLineWidthx(width);
1793205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1793305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
179340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
179359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
179369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
179379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1793805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1793905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
179409801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1794193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
179420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
179430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
179440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLoadIdentity(void) {
179450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
179460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
179470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
179480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLoadIdentity);
179490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
179500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1795105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1795205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
179530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLoadIdentity();
1795405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1795505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
179560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
179579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
179589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
179599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1796005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1796105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
179629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1796393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
179640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
179650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
179660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLoadMatrixx(const GLfixed *m) {
179670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
179680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
179690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
179700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLoadMatrixx);
179710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
179720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument m
179730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_m = glmsg.add_args();
179740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_m->set_isarray(false);
1797539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_m->set_type(GLMessage::DataType::INT64);
1797639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_m->add_int64value((uintptr_t)m);
179770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
179780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1797905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1798005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
179810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLoadMatrixx(m);
1798205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1798305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
179840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
179859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
179869801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) m,
179879801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
179889801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1798905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1799005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
179919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1799293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
179930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
179940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
179950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLogicOp(GLenum opcode) {
179960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
179970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
179980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
179990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLogicOp);
180000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
180010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument opcode
180020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_opcode = glmsg.add_args();
180030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_opcode->set_isarray(false);
180040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_opcode->set_type(GLMessage::DataType::ENUM);
180050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_opcode->add_intvalue((int)opcode);
180060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
180070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1800805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1800905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
180100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLogicOp(opcode);
1801105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1801205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
180130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
180149801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
180159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
180169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1801705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1801805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
180199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1802093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
180210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
180220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
180230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glMaterialx(GLenum face, GLenum pname, GLfixed param) {
180240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
180250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
180260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
180270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glMaterialx);
180280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
180290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument face
180300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_face = glmsg.add_args();
180310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_isarray(false);
180320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_type(GLMessage::DataType::ENUM);
180330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->add_intvalue((int)face);
180340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
180350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
180360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
180370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
180380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
180390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
180400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
180410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
180420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
180430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
180440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
180450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
180460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
180470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1804805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1804905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
180500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glMaterialx(face, pname, param);
1805105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1805205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
180530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
180549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
180559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
180569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1805705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1805805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
180599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1806093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
180610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
180620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
180630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glMaterialxv(GLenum face, GLenum pname, const GLfixed *params) {
180640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
180650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
180660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
180670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glMaterialxv);
180680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
180690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument face
180700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_face = glmsg.add_args();
180710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_isarray(false);
180720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_type(GLMessage::DataType::ENUM);
180730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->add_intvalue((int)face);
180740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
180750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
180760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
180770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
180780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
180790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
180800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
180810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
180820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
180830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
1808439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1808539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
180860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
180870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1808805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1808905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
180900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glMaterialxv(face, pname, params);
1809105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1809205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
180930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
180949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
180959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
180969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
180979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1809805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1809905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
181009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1810193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
181020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
181030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
181040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glMatrixMode(GLenum mode) {
181050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
181060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
181070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
181080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glMatrixMode);
181090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
181100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument mode
181110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_mode = glmsg.add_args();
181120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->set_isarray(false);
181130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->set_type(GLMessage::DataType::ENUM);
181140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->add_intvalue((int)mode);
181150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
181160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1811705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1811805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
181190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glMatrixMode(mode);
1812005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1812105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
181220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
181239801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
181249801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
181259801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1812605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1812705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
181289801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1812993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
181300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
181310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
181320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glMultMatrixx(const GLfixed *m) {
181330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
181340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
181350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
181360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glMultMatrixx);
181370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
181380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument m
181390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_m = glmsg.add_args();
181400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_m->set_isarray(false);
1814139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_m->set_type(GLMessage::DataType::INT64);
1814239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_m->add_int64value((uintptr_t)m);
181430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
181440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1814505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1814605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
181470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glMultMatrixx(m);
1814805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1814905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
181500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
181519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
181529801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) m,
181539801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
181549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1815505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1815605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
181579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1815893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
181590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
181600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
181610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glMultiTexCoord4x(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q) {
181620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
181630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
181640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
181650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glMultiTexCoord4x);
181660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
181670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
181680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
181690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
181700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
181710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
181720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
181730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument s
181740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_s = glmsg.add_args();
181750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_s->set_isarray(false);
181760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_s->set_type(GLMessage::DataType::INT);
181770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_s->add_intvalue(s);
181780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
181790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument t
181800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_t = glmsg.add_args();
181810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_t->set_isarray(false);
181820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_t->set_type(GLMessage::DataType::INT);
181830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_t->add_intvalue(t);
181840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
181850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument r
181860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_r = glmsg.add_args();
181870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_r->set_isarray(false);
181880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_r->set_type(GLMessage::DataType::INT);
181890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_r->add_intvalue(r);
181900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
181910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument q
181920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_q = glmsg.add_args();
181930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_q->set_isarray(false);
181940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_q->set_type(GLMessage::DataType::INT);
181950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_q->add_intvalue(q);
181960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
181970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1819805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1819905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
182000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glMultiTexCoord4x(target, s, t, r, q);
1820105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1820205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
182030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
182049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
182059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
182069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1820705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1820805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
182099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1821093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
182110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
182120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
182130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glNormal3x(GLfixed nx, GLfixed ny, GLfixed nz) {
182140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
182150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
182160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
182170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glNormal3x);
182180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
182190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument nx
182200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_nx = glmsg.add_args();
182210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nx->set_isarray(false);
182220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nx->set_type(GLMessage::DataType::INT);
182230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nx->add_intvalue(nx);
182240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
182250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument ny
182260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_ny = glmsg.add_args();
182270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ny->set_isarray(false);
182280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ny->set_type(GLMessage::DataType::INT);
182290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ny->add_intvalue(ny);
182300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
182310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument nz
182320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_nz = glmsg.add_args();
182330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nz->set_isarray(false);
182340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nz->set_type(GLMessage::DataType::INT);
182350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nz->add_intvalue(nz);
182360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
182370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1823805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1823905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
182400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glNormal3x(nx, ny, nz);
1824105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1824205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
182430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
182449801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
182459801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
182469801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1824705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1824805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
182499801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1825093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
182510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
182520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
182530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) {
182540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
182550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
182560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
182570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glNormalPointer);
182580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
182590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument type
182600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_type = glmsg.add_args();
182610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_isarray(false);
182620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_type(GLMessage::DataType::ENUM);
182630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->add_intvalue((int)type);
182640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
182650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument stride
182660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_stride = glmsg.add_args();
182670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->set_isarray(false);
182680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->set_type(GLMessage::DataType::INT);
182690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->add_intvalue(stride);
182700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
182710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pointer
182720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pointer = glmsg.add_args();
182730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pointer->set_isarray(false);
1827439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pointer->set_type(GLMessage::DataType::INT64);
1827539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pointer->add_int64value((uintptr_t)pointer);
182760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
182770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1827805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1827905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
182800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glNormalPointer(type, stride, pointer);
1828105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1828205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
182830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
182849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
182859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) pointer,
182869801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
182879801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1828805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1828905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
182909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1829193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
182920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
182930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
182940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glOrthox(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar) {
182950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
182960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
182970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
182980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glOrthox);
182990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
183000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument left
183010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_left = glmsg.add_args();
183020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_isarray(false);
183030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_type(GLMessage::DataType::INT);
183040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->add_intvalue(left);
183050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
183060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument right
183070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_right = glmsg.add_args();
183080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_isarray(false);
183090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_type(GLMessage::DataType::INT);
183100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->add_intvalue(right);
183110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
183120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument bottom
183130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_bottom = glmsg.add_args();
183140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_isarray(false);
183150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_type(GLMessage::DataType::INT);
183160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->add_intvalue(bottom);
183170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
183180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument top
183190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_top = glmsg.add_args();
183200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_isarray(false);
183210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_type(GLMessage::DataType::INT);
183220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->add_intvalue(top);
183230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
183240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zNear
183250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zNear = glmsg.add_args();
183260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_isarray(false);
183270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_type(GLMessage::DataType::INT);
183280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->add_intvalue(zNear);
183290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
183300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zFar
183310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zFar = glmsg.add_args();
183320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_isarray(false);
183330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_type(GLMessage::DataType::INT);
183340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->add_intvalue(zFar);
183350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
183360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1833705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1833805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
183390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glOrthox(left, right, bottom, top, zNear, zFar);
1834005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1834105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
183420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
183439801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
183449801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
183459801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1834605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1834705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
183489801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1834993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
183500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
183510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
183520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glPointParameterx(GLenum pname, GLfixed param) {
183530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
183540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
183550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
183560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glPointParameterx);
183570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
183580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
183590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
183600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
183610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
183620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
183630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
183640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
183650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
183660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
183670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
183680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
183690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
183700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1837105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1837205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
183730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glPointParameterx(pname, param);
1837405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1837505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
183760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
183779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
183789801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
183799801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1838005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1838105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
183829801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1838393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
183840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
183850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
183860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glPointParameterxv(GLenum pname, const GLfixed *params) {
183870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
183880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
183890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
183900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glPointParameterxv);
183910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
183920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
183930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
183940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
183950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
183960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
183970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
183980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
183990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
184000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
1840139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1840239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
184030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
184040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1840505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1840605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
184070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glPointParameterxv(pname, params);
1840805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1840905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
184100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
184119801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
184129801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
184139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
184149801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1841505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1841605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
184179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1841893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
184190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
184200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
184210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glPointSizex(GLfixed size) {
184220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
184230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
184240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
184250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glPointSizex);
184260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
184270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument size
184280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_size = glmsg.add_args();
184290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_isarray(false);
184300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_type(GLMessage::DataType::INT);
184310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->add_intvalue(size);
184320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
184330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1843405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1843505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
184360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glPointSizex(size);
1843705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1843805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
184390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
184409801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
184419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
184429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1844305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1844405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
184459801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1844693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
184470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
184480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
184490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glPolygonOffsetx(GLfixed factor, GLfixed units) {
184500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
184510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
184520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
184530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glPolygonOffsetx);
184540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
184550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument factor
184560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_factor = glmsg.add_args();
184570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_factor->set_isarray(false);
184580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_factor->set_type(GLMessage::DataType::INT);
184590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_factor->add_intvalue(factor);
184600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
184610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument units
184620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_units = glmsg.add_args();
184630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_units->set_isarray(false);
184640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_units->set_type(GLMessage::DataType::INT);
184650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_units->add_intvalue(units);
184660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
184670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1846805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1846905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
184700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glPolygonOffsetx(factor, units);
1847105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1847205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
184730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
184749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
184759801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
184769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1847705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1847805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
184799801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1848093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
184810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
184820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
184830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glPopMatrix(void) {
184840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
184850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
184860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
184870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glPopMatrix);
184880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
184890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1849005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1849105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
184920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glPopMatrix();
1849305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1849405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
184950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
184969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
184979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
184989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1849905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1850005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
185019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1850293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
185030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
185040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
185050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glPushMatrix(void) {
185060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
185070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
185080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
185090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glPushMatrix);
185100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
185110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1851205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1851305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
185140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glPushMatrix();
1851505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1851605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
185170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
185189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
185199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
185209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1852105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1852205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
185239801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1852493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
185250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
185260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
185270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glRotatex(GLfixed angle, GLfixed x, GLfixed y, GLfixed z) {
185280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
185290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
185300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
185310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glRotatex);
185320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
185330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument angle
185340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_angle = glmsg.add_args();
185350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_angle->set_isarray(false);
185360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_angle->set_type(GLMessage::DataType::INT);
185370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_angle->add_intvalue(angle);
185380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
185390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
185400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
185410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
185420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::INT);
185430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_intvalue(x);
185440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
185450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
185460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
185470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
185480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::INT);
185490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_intvalue(y);
185500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
185510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
185520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
185530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
185540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::INT);
185550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_intvalue(z);
185560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
185570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1855805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1855905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
185600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glRotatex(angle, x, y, z);
1856105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1856205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
185630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
185649801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
185659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
185669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1856705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1856805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
185699801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1857093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
185710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
185720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
185730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glSampleCoveragex(GLclampx value, GLboolean invert) {
185740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
185750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
185760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
185770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glSampleCoveragex);
185780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
185790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument value
185800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_value = glmsg.add_args();
185810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_value->set_isarray(false);
185820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT);
185830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_value->add_intvalue(value);
185840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
185850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument invert
185860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_invert = glmsg.add_args();
185870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_invert->set_isarray(false);
185880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_invert->set_type(GLMessage::DataType::BOOL);
185890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_invert->add_boolvalue(invert);
185900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
185910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1859205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1859305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
185940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glSampleCoveragex(value, invert);
1859505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1859605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
185970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
185989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
185999801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
186009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1860105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1860205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
186039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1860493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
186050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
186060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
186070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glScalex(GLfixed x, GLfixed y, GLfixed z) {
186080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
186090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
186100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
186110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glScalex);
186120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
186130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
186140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
186150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
186160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::INT);
186170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_intvalue(x);
186180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
186190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
186200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
186210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
186220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::INT);
186230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_intvalue(y);
186240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
186250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
186260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
186270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
186280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::INT);
186290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_intvalue(z);
186300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
186310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1863205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1863305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
186340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glScalex(x, y, z);
1863505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1863605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
186370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
186389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
186399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
186409801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1864105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1864205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
186439801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1864493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
186450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
186460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
186470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glShadeModel(GLenum mode) {
186480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
186490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
186500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
186510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glShadeModel);
186520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
186530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument mode
186540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_mode = glmsg.add_args();
186550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->set_isarray(false);
186560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->set_type(GLMessage::DataType::ENUM);
186570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->add_intvalue((int)mode);
186580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
186590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1866005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1866105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
186620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glShadeModel(mode);
1866305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1866405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
186650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
186669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
186679801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
186689801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1866905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1867005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
186719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1867293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
186730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
186740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
186750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) {
186760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
186770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
186780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
186790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexCoordPointer);
186800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
186810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument size
186820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_size = glmsg.add_args();
186830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_isarray(false);
186840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_type(GLMessage::DataType::INT);
186850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->add_intvalue(size);
186860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
186870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument type
186880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_type = glmsg.add_args();
186890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_isarray(false);
186900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_type(GLMessage::DataType::ENUM);
186910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->add_intvalue((int)type);
186920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
186930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument stride
186940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_stride = glmsg.add_args();
186950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->set_isarray(false);
186960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->set_type(GLMessage::DataType::INT);
186970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->add_intvalue(stride);
186980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
186990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pointer
187000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pointer = glmsg.add_args();
187010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pointer->set_isarray(false);
1870239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pointer->set_type(GLMessage::DataType::INT64);
1870339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pointer->add_int64value((uintptr_t)pointer);
187040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
187050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1870605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1870705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
187080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexCoordPointer(size, type, stride, pointer);
1870905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1871005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
187110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
187129801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
187139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) pointer,
187149801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
187159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1871605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1871705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
187189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1871993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
187200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
187210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
187220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexEnvi(GLenum target, GLenum pname, GLint param) {
187230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
187240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
187250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
187260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexEnvi);
187270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
187280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
187290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
187300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
187310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
187320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
187330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
187340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
187350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
187360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
187370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
187380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
187390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
187400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
187410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
187420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
187430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
187440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
187450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
187460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1874705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1874805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
187490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexEnvi(target, pname, param);
1875005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1875105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
187520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
187539801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
187549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
187559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1875605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1875705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
187589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1875993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
187600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
187610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
187620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexEnvx(GLenum target, GLenum pname, GLfixed param) {
187630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
187640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
187650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
187660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexEnvx);
187670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
187680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
187690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
187700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
187710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
187720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
187730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
187740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
187750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
187760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
187770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
187780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
187790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
187800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
187810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
187820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
187830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
187840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
187850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
187860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1878705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1878805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
187890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexEnvx(target, pname, param);
1879005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1879105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
187920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
187939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
187949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
187959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1879605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1879705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
187989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1879993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
188000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
188010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
188020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexEnviv(GLenum target, GLenum pname, const GLint *params) {
188030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
188040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
188050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
188060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexEnviv);
188070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
188080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
188090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
188100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
188110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
188120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
188130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
188140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
188150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
188160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
188170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
188180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
188190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
188200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
188210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
188220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
1882339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1882439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
188250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
188260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1882705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1882805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
188290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexEnviv(target, pname, params);
1883005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1883105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
188320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
188339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
188349801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
188359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
188369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1883705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1883805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
188399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1884093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
188410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
188420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
188430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexEnvxv(GLenum target, GLenum pname, const GLfixed *params) {
188440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
188450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
188460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
188470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexEnvxv);
188480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
188490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
188500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
188510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
188520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
188530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
188540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
188550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
188560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
188570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
188580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
188590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
188600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
188610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
188620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
188630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
1886439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1886539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
188660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
188670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1886805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1886905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
188700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexEnvxv(target, pname, params);
1887105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1887205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
188730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
188749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
188759801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
188769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
188779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1887805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1887905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
188809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1888193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
188820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
188830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
188840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexParameterx(GLenum target, GLenum pname, GLfixed param) {
188850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
188860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
188870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
188880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexParameterx);
188890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
188900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
188910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
188920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
188930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
188940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
188950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
188960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
188970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
188980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
188990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
189000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
189010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
189020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
189030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
189040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
189050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
189060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
189070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
189080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1890905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1891005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
189110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexParameterx(target, pname, param);
1891205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1891305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
189140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
189159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
189169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
189179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1891805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1891905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
189209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1892193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
189220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
189230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
189240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexParameterxv(GLenum target, GLenum pname, const GLfixed *params) {
189250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
189260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
189270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
189280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexParameterxv);
189290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
189300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
189310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
189320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
189330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
189340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
189350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
189360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
189370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
189380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
189390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
189400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
189410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
189420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
189430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
189440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
1894539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1894639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
189470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
189480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1894905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1895005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
189510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexParameterxv(target, pname, params);
1895205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1895305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
189540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
189559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
189569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
189579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
189589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1895905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1896005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
189619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1896293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
189630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
189640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
189650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTranslatex(GLfixed x, GLfixed y, GLfixed z) {
189660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
189670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
189680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
189690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTranslatex);
189700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
189710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
189720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
189730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
189740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::INT);
189750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_intvalue(x);
189760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
189770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
189780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
189790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
189800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::INT);
189810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_intvalue(y);
189820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
189830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
189840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
189850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
189860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::INT);
189870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_intvalue(z);
189880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
189890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1899005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1899105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
189920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTranslatex(x, y, z);
1899305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1899405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
189950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
189969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
189979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
189989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1899905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1900005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
190019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1900293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
190030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
190040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
190050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) {
190060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
190070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
190080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
190090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glVertexPointer);
190100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
190110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument size
190120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_size = glmsg.add_args();
190130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_isarray(false);
190140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_type(GLMessage::DataType::INT);
190150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->add_intvalue(size);
190160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
190170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument type
190180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_type = glmsg.add_args();
190190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_isarray(false);
190200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_type(GLMessage::DataType::ENUM);
190210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->add_intvalue((int)type);
190220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
190230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument stride
190240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_stride = glmsg.add_args();
190250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->set_isarray(false);
190260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->set_type(GLMessage::DataType::INT);
190270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->add_intvalue(stride);
190280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
190290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pointer
190300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pointer = glmsg.add_args();
190310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pointer->set_isarray(false);
1903239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pointer->set_type(GLMessage::DataType::INT64);
1903339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pointer->add_int64value((uintptr_t)pointer);
190340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
190350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1903605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1903705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
190380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glVertexPointer(size, type, stride, pointer);
1903905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1904005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
190410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
190429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
190439801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) pointer,
190449801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
190459801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1904605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1904705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
190489801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1904993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
190500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
190510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
190520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glPointSizePointerOES(GLenum type, GLsizei stride, const GLvoid *pointer) {
190530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
190540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
190550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
190560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glPointSizePointerOES);
190570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
190580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument type
190590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_type = glmsg.add_args();
190600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_isarray(false);
190610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_type(GLMessage::DataType::ENUM);
190620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->add_intvalue((int)type);
190630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
190640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument stride
190650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_stride = glmsg.add_args();
190660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->set_isarray(false);
190670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->set_type(GLMessage::DataType::INT);
190680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->add_intvalue(stride);
190690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
190700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pointer
190710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pointer = glmsg.add_args();
190720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pointer->set_isarray(false);
1907339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pointer->set_type(GLMessage::DataType::INT64);
1907439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pointer->add_int64value((uintptr_t)pointer);
190750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
190760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1907705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1907805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
190790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glPointSizePointerOES(type, stride, pointer);
1908005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1908105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
190820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
190839801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
190849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) pointer,
190859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
190869801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1908705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1908805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
190899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1909093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
190910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
190920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
190930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
190940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy// Definitions for GL1Ext APIs
190950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
190960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glBlendEquationSeparateOES(GLenum modeRGB, GLenum modeAlpha) {
190970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
190980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
190990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
191000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glBlendEquationSeparateOES);
191010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
191020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument modeRGB
191030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_modeRGB = glmsg.add_args();
191040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_modeRGB->set_isarray(false);
191050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_modeRGB->set_type(GLMessage::DataType::ENUM);
191060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_modeRGB->add_intvalue((int)modeRGB);
191070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
191080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument modeAlpha
191090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_modeAlpha = glmsg.add_args();
191100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_modeAlpha->set_isarray(false);
191110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_modeAlpha->set_type(GLMessage::DataType::ENUM);
191120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_modeAlpha->add_intvalue((int)modeAlpha);
191130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
191140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1911505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1911605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
191170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glBlendEquationSeparateOES(modeRGB, modeAlpha);
1911805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1911905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
191200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
191219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
191229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
191239801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1912405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1912505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
191269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1912793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
191280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
191290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
191300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glBlendFuncSeparateOES(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) {
191310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
191320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
191330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
191340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glBlendFuncSeparateOES);
191350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
191360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument srcRGB
191370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_srcRGB = glmsg.add_args();
191380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_srcRGB->set_isarray(false);
191390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_srcRGB->set_type(GLMessage::DataType::ENUM);
191400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_srcRGB->add_intvalue((int)srcRGB);
191410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
191420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument dstRGB
191430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_dstRGB = glmsg.add_args();
191440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_dstRGB->set_isarray(false);
191450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_dstRGB->set_type(GLMessage::DataType::ENUM);
191460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_dstRGB->add_intvalue((int)dstRGB);
191470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
191480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument srcAlpha
191490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_srcAlpha = glmsg.add_args();
191500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_srcAlpha->set_isarray(false);
191510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_srcAlpha->set_type(GLMessage::DataType::ENUM);
191520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_srcAlpha->add_intvalue((int)srcAlpha);
191530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
191540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument dstAlpha
191550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_dstAlpha = glmsg.add_args();
191560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_dstAlpha->set_isarray(false);
191570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_dstAlpha->set_type(GLMessage::DataType::ENUM);
191580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_dstAlpha->add_intvalue((int)dstAlpha);
191590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
191600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1916105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1916205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
191630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glBlendFuncSeparateOES(srcRGB, dstRGB, srcAlpha, dstAlpha);
1916405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1916505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
191660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
191679801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
191689801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
191699801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1917005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1917105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
191729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1917393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
191740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
191750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
191760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glBlendEquationOES(GLenum mode) {
191770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
191780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
191790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
191800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glBlendEquationOES);
191810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
191820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument mode
191830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_mode = glmsg.add_args();
191840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->set_isarray(false);
191850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->set_type(GLMessage::DataType::ENUM);
191860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->add_intvalue((int)mode);
191870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
191880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1918905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1919005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
191910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glBlendEquationOES(mode);
1919205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1919305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
191940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
191959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
191969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
191979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1919805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1919905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
192009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1920193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
192020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
192030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
192040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDrawTexsOES(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height) {
192050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
192060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
192070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
192080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDrawTexsOES);
192090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
192100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
192110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
192120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
192130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::INT);
192140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_intvalue(x);
192150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
192160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
192170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
192180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
192190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::INT);
192200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_intvalue(y);
192210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
192220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
192230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
192240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
192250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::INT);
192260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_intvalue(z);
192270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
192280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
192290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
192300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
192310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
192320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
192330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
192340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
192350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
192360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
192370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
192380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
192390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
192400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1924105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1924205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
192430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDrawTexsOES(x, y, z, width, height);
1924405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1924505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
192460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
192479801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
192489801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
192499801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1925005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1925105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
192529801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1925393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
192540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
192550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
192560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDrawTexiOES(GLint x, GLint y, GLint z, GLint width, GLint height) {
192570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
192580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
192590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
192600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDrawTexiOES);
192610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
192620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
192630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
192640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
192650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::INT);
192660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_intvalue(x);
192670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
192680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
192690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
192700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
192710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::INT);
192720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_intvalue(y);
192730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
192740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
192750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
192760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
192770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::INT);
192780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_intvalue(z);
192790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
192800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
192810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
192820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
192830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
192840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
192850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
192860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
192870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
192880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
192890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
192900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
192910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
192920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1929305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1929405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
192950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDrawTexiOES(x, y, z, width, height);
1929605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1929705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
192980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
192999801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
193009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
193019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1930205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1930305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
193049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1930593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
193060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
193070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
193080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDrawTexxOES(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height) {
193090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
193100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
193110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
193120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDrawTexxOES);
193130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
193140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
193150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
193160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
193170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::INT);
193180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_intvalue(x);
193190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
193200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
193210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
193220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
193230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::INT);
193240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_intvalue(y);
193250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
193260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
193270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
193280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
193290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::INT);
193300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_intvalue(z);
193310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
193320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
193330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
193340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
193350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
193360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
193370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
193380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
193390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
193400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
193410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
193420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
193430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
193440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1934505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1934605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
193470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDrawTexxOES(x, y, z, width, height);
1934805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1934905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
193500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
193519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
193529801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
193539801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1935405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1935505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
193569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1935793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
193580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
193590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
193600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDrawTexsvOES(const GLshort *coords) {
193610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
193620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
193630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
193640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDrawTexsvOES);
193650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
193660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument coords
193670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_coords = glmsg.add_args();
193680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coords->set_isarray(false);
1936939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_coords->set_type(GLMessage::DataType::INT64);
1937039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_coords->add_int64value((uintptr_t)coords);
193710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
193720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1937305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1937405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
193750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDrawTexsvOES(coords);
1937605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1937705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
193780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
193799801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
193809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) coords,
193819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
193829801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1938305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1938405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
193859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1938693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
193870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
193880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
193890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDrawTexivOES(const GLint *coords) {
193900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
193910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
193920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
193930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDrawTexivOES);
193940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
193950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument coords
193960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_coords = glmsg.add_args();
193970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coords->set_isarray(false);
1939839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_coords->set_type(GLMessage::DataType::INT64);
1939939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_coords->add_int64value((uintptr_t)coords);
194000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
194010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1940205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1940305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
194040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDrawTexivOES(coords);
1940505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1940605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
194070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
194089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
194099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) coords,
194109801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
194119801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1941205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1941305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
194149801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1941593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
194160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
194170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
194180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDrawTexxvOES(const GLfixed *coords) {
194190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
194200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
194210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
194220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDrawTexxvOES);
194230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
194240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument coords
194250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_coords = glmsg.add_args();
194260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coords->set_isarray(false);
1942739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_coords->set_type(GLMessage::DataType::INT64);
1942839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_coords->add_int64value((uintptr_t)coords);
194290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
194300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1943105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1943205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
194330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDrawTexxvOES(coords);
1943405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1943505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
194360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
194379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
194389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) coords,
194399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
194409801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1944105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1944205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
194439801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1944493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
194450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
194460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
194470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDrawTexfOES(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height) {
194480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
194490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
194500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
194510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDrawTexfOES);
194520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
194530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
194540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
194550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
194560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::FLOAT);
194570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_floatvalue(x);
194580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
194590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
194600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
194610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
194620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::FLOAT);
194630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_floatvalue(y);
194640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
194650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
194660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
194670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
194680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::FLOAT);
194690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_floatvalue(z);
194700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
194710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
194720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
194730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
194740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::FLOAT);
194750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_floatvalue(width);
194760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
194770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
194780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
194790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
194800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::FLOAT);
194810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_floatvalue(height);
194820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
194830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1948405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1948505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
194860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDrawTexfOES(x, y, z, width, height);
1948705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1948805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
194890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
194909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
194919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
194929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1949305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1949405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
194959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1949693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
194970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
194980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
194990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDrawTexfvOES(const GLfloat *coords) {
195000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
195010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
195020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
195030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDrawTexfvOES);
195040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
195050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument coords
195060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_coords = glmsg.add_args();
195070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coords->set_isarray(false);
1950839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_coords->set_type(GLMessage::DataType::INT64);
1950939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_coords->add_int64value((uintptr_t)coords);
195100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
195110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1951205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1951305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
195140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDrawTexfvOES(coords);
1951505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1951605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
195170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
195189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
195199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) coords,
195209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
195219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1952205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1952305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
195249801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1952593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
195260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
195270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
195280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glAlphaFuncxOES(GLenum func, GLclampx ref) {
195290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
195300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
195310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
195320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glAlphaFuncxOES);
195330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
195340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument func
195350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_func = glmsg.add_args();
195360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_func->set_isarray(false);
195370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_func->set_type(GLMessage::DataType::ENUM);
195380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_func->add_intvalue((int)func);
195390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
195400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument ref
195410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_ref = glmsg.add_args();
195420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ref->set_isarray(false);
195430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ref->set_type(GLMessage::DataType::INT);
195440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ref->add_intvalue(ref);
195450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
195460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1954705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1954805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
195490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glAlphaFuncxOES(func, ref);
1955005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1955105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
195520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
195539801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
195549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
195559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1955605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1955705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
195589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1955993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
195600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
195610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
195620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glClearColorxOES(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha) {
195630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
195640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
195650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
195660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glClearColorxOES);
195670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
195680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument red
195690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_red = glmsg.add_args();
195700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->set_isarray(false);
195710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->set_type(GLMessage::DataType::INT);
195720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->add_intvalue(red);
195730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
195740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument green
195750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_green = glmsg.add_args();
195760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->set_isarray(false);
195770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->set_type(GLMessage::DataType::INT);
195780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->add_intvalue(green);
195790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
195800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument blue
195810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_blue = glmsg.add_args();
195820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->set_isarray(false);
195830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->set_type(GLMessage::DataType::INT);
195840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->add_intvalue(blue);
195850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
195860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument alpha
195870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_alpha = glmsg.add_args();
195880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->set_isarray(false);
195890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->set_type(GLMessage::DataType::INT);
195900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->add_intvalue(alpha);
195910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
195920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1959305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1959405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
195950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glClearColorxOES(red, green, blue, alpha);
1959605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1959705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
195980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
195999801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
196009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
196019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1960205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1960305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
196049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1960593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
196060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
196070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
196080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glClearDepthxOES(GLclampx depth) {
196090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
196100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
196110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
196120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glClearDepthxOES);
196130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
196140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument depth
196150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_depth = glmsg.add_args();
196160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_isarray(false);
196170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_type(GLMessage::DataType::INT);
196180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->add_intvalue(depth);
196190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
196200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1962105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1962205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
196230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glClearDepthxOES(depth);
1962405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1962505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
196260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
196279801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
196289801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
196299801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1963005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1963105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
196329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1963393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
196340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
196350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
196360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glClipPlanexOES(GLenum plane, const GLfixed *equation) {
196370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
196380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
196390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
196400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glClipPlanexOES);
196410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
196420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument plane
196430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_plane = glmsg.add_args();
196440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_plane->set_isarray(false);
196450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_plane->set_type(GLMessage::DataType::ENUM);
196460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_plane->add_intvalue((int)plane);
196470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
196480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument equation
196490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_equation = glmsg.add_args();
196500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_equation->set_isarray(false);
1965139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_equation->set_type(GLMessage::DataType::INT64);
1965239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_equation->add_int64value((uintptr_t)equation);
196530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
196540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1965505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1965605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
196570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glClipPlanexOES(plane, equation);
1965805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1965905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
196600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
196619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
196629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) equation,
196639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
196649801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1966505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1966605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
196679801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1966893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
196690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
196700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
196710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glColor4xOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) {
196720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
196730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
196740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
196750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glColor4xOES);
196760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
196770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument red
196780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_red = glmsg.add_args();
196790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->set_isarray(false);
196800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->set_type(GLMessage::DataType::INT);
196810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->add_intvalue(red);
196820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
196830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument green
196840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_green = glmsg.add_args();
196850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->set_isarray(false);
196860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->set_type(GLMessage::DataType::INT);
196870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->add_intvalue(green);
196880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
196890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument blue
196900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_blue = glmsg.add_args();
196910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->set_isarray(false);
196920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->set_type(GLMessage::DataType::INT);
196930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->add_intvalue(blue);
196940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
196950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument alpha
196960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_alpha = glmsg.add_args();
196970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->set_isarray(false);
196980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->set_type(GLMessage::DataType::INT);
196990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->add_intvalue(alpha);
197000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
197010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1970205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1970305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
197040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glColor4xOES(red, green, blue, alpha);
1970505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1970605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
197070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
197089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
197099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
197109801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1971105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1971205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
197139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1971493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
197150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
197160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
197170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDepthRangexOES(GLclampx zNear, GLclampx zFar) {
197180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
197190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
197200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
197210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDepthRangexOES);
197220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
197230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zNear
197240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zNear = glmsg.add_args();
197250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_isarray(false);
197260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_type(GLMessage::DataType::INT);
197270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->add_intvalue(zNear);
197280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
197290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zFar
197300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zFar = glmsg.add_args();
197310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_isarray(false);
197320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_type(GLMessage::DataType::INT);
197330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->add_intvalue(zFar);
197340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
197350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1973605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1973705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
197380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDepthRangexOES(zNear, zFar);
1973905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1974005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
197410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
197429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
197439801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
197449801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1974505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1974605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
197479801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1974893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
197490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
197500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
197510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFogxOES(GLenum pname, GLfixed param) {
197520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
197530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
197540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
197550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFogxOES);
197560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
197570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
197580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
197590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
197600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
197610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
197620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
197630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
197640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
197650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
197660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
197670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
197680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
197690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1977005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1977105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
197720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFogxOES(pname, param);
1977305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1977405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
197750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
197769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
197779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
197789801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1977905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1978005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
197819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1978293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
197830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
197840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
197850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFogxvOES(GLenum pname, const GLfixed *params) {
197860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
197870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
197880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
197890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFogxvOES);
197900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
197910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
197920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
197930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
197940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
197950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
197960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
197970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
197980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
197990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
1980039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1980139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
198020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
198030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1980405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1980505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
198060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFogxvOES(pname, params);
1980705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1980805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
198090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
198109801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
198119801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
198129801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
198139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1981405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1981505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
198169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1981793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
198180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
198190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
198200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFrustumxOES(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar) {
198210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
198220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
198230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
198240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFrustumxOES);
198250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
198260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument left
198270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_left = glmsg.add_args();
198280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_isarray(false);
198290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_type(GLMessage::DataType::INT);
198300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->add_intvalue(left);
198310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
198320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument right
198330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_right = glmsg.add_args();
198340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_isarray(false);
198350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_type(GLMessage::DataType::INT);
198360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->add_intvalue(right);
198370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
198380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument bottom
198390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_bottom = glmsg.add_args();
198400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_isarray(false);
198410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_type(GLMessage::DataType::INT);
198420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->add_intvalue(bottom);
198430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
198440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument top
198450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_top = glmsg.add_args();
198460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_isarray(false);
198470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_type(GLMessage::DataType::INT);
198480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->add_intvalue(top);
198490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
198500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zNear
198510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zNear = glmsg.add_args();
198520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_isarray(false);
198530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_type(GLMessage::DataType::INT);
198540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->add_intvalue(zNear);
198550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
198560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zFar
198570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zFar = glmsg.add_args();
198580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_isarray(false);
198590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_type(GLMessage::DataType::INT);
198600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->add_intvalue(zFar);
198610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
198620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1986305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1986405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
198650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFrustumxOES(left, right, bottom, top, zNear, zFar);
1986605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1986705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
198680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
198699801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
198709801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
198719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1987205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1987305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
198749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1987593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
198760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
198770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
198780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetClipPlanexOES(GLenum pname, GLfixed eqn[4]) {
198790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
198800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
198810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
198820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetClipPlanexOES);
198830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
198840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
198850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
198860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
198870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
198880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
198890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
198900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument eqn
198910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_eqn = glmsg.add_args();
198920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_eqn->set_isarray(false);
1989339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_eqn->set_type(GLMessage::DataType::INT64);
1989439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_eqn->add_int64value((uintptr_t)eqn);
198950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
198960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1989705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1989805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
198990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetClipPlanexOES(pname, eqn);
1990005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1990105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
199020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
199039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
199049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) eqn,
199059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
199069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1990705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1990805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
199099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1991093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
199110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
199120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
199130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetFixedvOES(GLenum pname, GLfixed *params) {
199140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
199150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
199160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
199170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetFixedvOES);
199180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
199190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
199200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
199210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
199220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
199230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
199240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
199250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
199260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
199270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
1992839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1992939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
199300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
199310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1993205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1993305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
199340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetFixedvOES(pname, params);
1993505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1993605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
199370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
199389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
199399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
199409801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
199419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1994205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1994305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
199449801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1994593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
199460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
199470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
199480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetLightxvOES(GLenum light, GLenum pname, GLfixed *params) {
199490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
199500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
199510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
199520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetLightxvOES);
199530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
199540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument light
199550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_light = glmsg.add_args();
199560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_isarray(false);
199570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_type(GLMessage::DataType::ENUM);
199580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->add_intvalue((int)light);
199590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
199600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
199610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
199620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
199630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
199640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
199650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
199660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
199670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
199680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
1996939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
1997039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
199710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
199720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1997305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1997405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
199750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetLightxvOES(light, pname, params);
1997605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1997705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
199780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
199799801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
199809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
199819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
199829801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1998305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1998405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
199859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1998693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
199870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
199880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
199890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetMaterialxvOES(GLenum face, GLenum pname, GLfixed *params) {
199900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
199910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
199920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
199930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetMaterialxvOES);
199940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
199950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument face
199960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_face = glmsg.add_args();
199970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_isarray(false);
199980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_type(GLMessage::DataType::ENUM);
199990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->add_intvalue((int)face);
200000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
200010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
200020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
200030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
200040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
200050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
200060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
200070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
200080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
200090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
2001039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
2001139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
200120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
200130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2001405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2001505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
200160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetMaterialxvOES(face, pname, params);
2001705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2001805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
200190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
200209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
200219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
200229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
200239801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2002405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2002505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
200269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2002793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
200280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
200290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
200300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetTexEnvxvOES(GLenum env, GLenum pname, GLfixed *params) {
200310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
200320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
200330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
200340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetTexEnvxvOES);
200350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
200360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument env
200370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_env = glmsg.add_args();
200380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_env->set_isarray(false);
200390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_env->set_type(GLMessage::DataType::ENUM);
200400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_env->add_intvalue((int)env);
200410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
200420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
200430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
200440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
200450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
200460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
200470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
200480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
200490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
200500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
2005139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
2005239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
200530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
200540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2005505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2005605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
200570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetTexEnvxvOES(env, pname, params);
2005805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2005905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
200600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
200619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
200629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
200639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
200649801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2006505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2006605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
200679801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2006893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
200690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
200700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
200710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetTexParameterxvOES(GLenum target, GLenum pname, GLfixed *params) {
200720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
200730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
200740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
200750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetTexParameterxvOES);
200760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
200770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
200780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
200790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
200800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
200810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
200820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
200830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
200840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
200850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
200860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
200870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
200880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
200890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
200900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
200910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
2009239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
2009339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
200940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
200950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2009605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2009705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
200980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetTexParameterxvOES(target, pname, params);
2009905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2010005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
201010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
201029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
201039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
201049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
201059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2010605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2010705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
201089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2010993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
201100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
201110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
201120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLightModelxOES(GLenum pname, GLfixed param) {
201130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
201140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
201150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
201160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLightModelxOES);
201170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
201180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
201190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
201200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
201210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
201220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
201230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
201240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
201250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
201260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
201270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
201280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
201290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
201300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2013105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2013205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
201330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLightModelxOES(pname, param);
2013405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2013505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
201360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
201379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
201389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
201399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2014005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2014105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
201429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2014393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
201440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
201450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
201460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLightModelxvOES(GLenum pname, const GLfixed *params) {
201470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
201480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
201490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
201500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLightModelxvOES);
201510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
201520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
201530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
201540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
201550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
201560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
201570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
201580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
201590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
201600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
2016139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
2016239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
201630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
201640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2016505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2016605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
201670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLightModelxvOES(pname, params);
2016805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2016905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
201700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
201719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
201729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
201739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
201749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2017505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2017605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
201779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2017893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
201790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
201800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
201810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLightxOES(GLenum light, GLenum pname, GLfixed param) {
201820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
201830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
201840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
201850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLightxOES);
201860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
201870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument light
201880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_light = glmsg.add_args();
201890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_isarray(false);
201900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_type(GLMessage::DataType::ENUM);
201910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->add_intvalue((int)light);
201920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
201930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
201940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
201950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
201960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
201970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
201980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
201990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
202000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
202010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
202020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
202030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
202040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
202050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2020605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2020705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
202080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLightxOES(light, pname, param);
2020905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2021005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
202110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
202129801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
202139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
202149801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2021505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2021605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
202179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2021893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
202190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
202200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
202210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLightxvOES(GLenum light, GLenum pname, const GLfixed *params) {
202220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
202230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
202240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
202250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLightxvOES);
202260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
202270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument light
202280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_light = glmsg.add_args();
202290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_isarray(false);
202300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_type(GLMessage::DataType::ENUM);
202310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->add_intvalue((int)light);
202320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
202330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
202340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
202350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
202360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
202370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
202380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
202390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
202400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
202410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
2024239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
2024339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
202440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
202450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2024605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2024705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
202480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLightxvOES(light, pname, params);
2024905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2025005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
202510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
202529801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
202539801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
202549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
202559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2025605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2025705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
202589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2025993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
202600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
202610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
202620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLineWidthxOES(GLfixed width) {
202630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
202640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
202650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
202660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLineWidthxOES);
202670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
202680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
202690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
202700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
202710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
202720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
202730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
202740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2027505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2027605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
202770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLineWidthxOES(width);
2027805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2027905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
202800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
202819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
202829801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
202839801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2028405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2028505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
202869801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2028793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
202880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
202890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
202900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLoadMatrixxOES(const GLfixed *m) {
202910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
202920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
202930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
202940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLoadMatrixxOES);
202950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
202960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument m
202970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_m = glmsg.add_args();
202980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_m->set_isarray(false);
2029939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_m->set_type(GLMessage::DataType::INT64);
2030039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_m->add_int64value((uintptr_t)m);
203010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
203020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2030305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2030405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
203050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLoadMatrixxOES(m);
2030605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2030705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
203080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
203099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
203109801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) m,
203119801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
203129801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2031305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2031405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
203159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2031693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
203170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
203180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
203190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glMaterialxOES(GLenum face, GLenum pname, GLfixed param) {
203200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
203210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
203220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
203230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glMaterialxOES);
203240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
203250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument face
203260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_face = glmsg.add_args();
203270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_isarray(false);
203280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_type(GLMessage::DataType::ENUM);
203290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->add_intvalue((int)face);
203300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
203310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
203320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
203330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
203340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
203350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
203360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
203370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
203380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
203390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
203400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
203410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
203420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
203430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2034405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2034505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
203460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glMaterialxOES(face, pname, param);
2034705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2034805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
203490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
203509801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
203519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
203529801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2035305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2035405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
203559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2035693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
203570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
203580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
203590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glMaterialxvOES(GLenum face, GLenum pname, const GLfixed *params) {
203600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
203610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
203620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
203630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glMaterialxvOES);
203640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
203650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument face
203660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_face = glmsg.add_args();
203670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_isarray(false);
203680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_type(GLMessage::DataType::ENUM);
203690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->add_intvalue((int)face);
203700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
203710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
203720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
203730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
203740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
203750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
203760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
203770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
203780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
203790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
2038039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
2038139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
203820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
203830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2038405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2038505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
203860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glMaterialxvOES(face, pname, params);
2038705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2038805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
203890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
203909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
203919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
203929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
203939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2039405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2039505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
203969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2039793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
203980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
203990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
204000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glMultMatrixxOES(const GLfixed *m) {
204010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
204020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
204030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
204040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glMultMatrixxOES);
204050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
204060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument m
204070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_m = glmsg.add_args();
204080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_m->set_isarray(false);
2040939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_m->set_type(GLMessage::DataType::INT64);
2041039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_m->add_int64value((uintptr_t)m);
204110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
204120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2041305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2041405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
204150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glMultMatrixxOES(m);
2041605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2041705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
204180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
204199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
204209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) m,
204219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
204229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2042305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2042405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
204259801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2042693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
204270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
204280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
204290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glMultiTexCoord4xOES(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q) {
204300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
204310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
204320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
204330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glMultiTexCoord4xOES);
204340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
204350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
204360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
204370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
204380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
204390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
204400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
204410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument s
204420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_s = glmsg.add_args();
204430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_s->set_isarray(false);
204440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_s->set_type(GLMessage::DataType::INT);
204450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_s->add_intvalue(s);
204460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
204470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument t
204480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_t = glmsg.add_args();
204490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_t->set_isarray(false);
204500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_t->set_type(GLMessage::DataType::INT);
204510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_t->add_intvalue(t);
204520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
204530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument r
204540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_r = glmsg.add_args();
204550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_r->set_isarray(false);
204560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_r->set_type(GLMessage::DataType::INT);
204570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_r->add_intvalue(r);
204580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
204590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument q
204600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_q = glmsg.add_args();
204610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_q->set_isarray(false);
204620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_q->set_type(GLMessage::DataType::INT);
204630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_q->add_intvalue(q);
204640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
204650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2046605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2046705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
204680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glMultiTexCoord4xOES(target, s, t, r, q);
2046905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2047005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
204710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
204729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
204739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
204749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2047505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2047605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
204779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2047893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
204790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
204800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
204810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glNormal3xOES(GLfixed nx, GLfixed ny, GLfixed nz) {
204820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
204830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
204840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
204850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glNormal3xOES);
204860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
204870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument nx
204880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_nx = glmsg.add_args();
204890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nx->set_isarray(false);
204900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nx->set_type(GLMessage::DataType::INT);
204910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nx->add_intvalue(nx);
204920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
204930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument ny
204940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_ny = glmsg.add_args();
204950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ny->set_isarray(false);
204960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ny->set_type(GLMessage::DataType::INT);
204970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ny->add_intvalue(ny);
204980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
204990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument nz
205000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_nz = glmsg.add_args();
205010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nz->set_isarray(false);
205020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nz->set_type(GLMessage::DataType::INT);
205030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nz->add_intvalue(nz);
205040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
205050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2050605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2050705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
205080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glNormal3xOES(nx, ny, nz);
2050905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2051005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
205110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
205129801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
205139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
205149801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2051505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2051605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
205179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2051893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
205190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
205200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
205210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glOrthoxOES(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar) {
205220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
205230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
205240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
205250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glOrthoxOES);
205260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
205270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument left
205280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_left = glmsg.add_args();
205290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_isarray(false);
205300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_type(GLMessage::DataType::INT);
205310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->add_intvalue(left);
205320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
205330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument right
205340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_right = glmsg.add_args();
205350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_isarray(false);
205360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_type(GLMessage::DataType::INT);
205370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->add_intvalue(right);
205380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
205390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument bottom
205400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_bottom = glmsg.add_args();
205410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_isarray(false);
205420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_type(GLMessage::DataType::INT);
205430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->add_intvalue(bottom);
205440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
205450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument top
205460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_top = glmsg.add_args();
205470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_isarray(false);
205480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_type(GLMessage::DataType::INT);
205490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->add_intvalue(top);
205500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
205510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zNear
205520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zNear = glmsg.add_args();
205530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_isarray(false);
205540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_type(GLMessage::DataType::INT);
205550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->add_intvalue(zNear);
205560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
205570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zFar
205580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zFar = glmsg.add_args();
205590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_isarray(false);
205600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_type(GLMessage::DataType::INT);
205610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->add_intvalue(zFar);
205620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
205630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2056405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2056505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
205660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glOrthoxOES(left, right, bottom, top, zNear, zFar);
2056705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2056805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
205690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
205709801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
205719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
205729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2057305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2057405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
205759801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2057693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
205770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
205780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
205790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glPointParameterxOES(GLenum pname, GLfixed param) {
205800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
205810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
205820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
205830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glPointParameterxOES);
205840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
205850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
205860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
205870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
205880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
205890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
205900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
205910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
205920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
205930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
205940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
205950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
205960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
205970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2059805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2059905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
206000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glPointParameterxOES(pname, param);
2060105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2060205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
206030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
206049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
206059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
206069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2060705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2060805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
206099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2061093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
206110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
206120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
206130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glPointParameterxvOES(GLenum pname, const GLfixed *params) {
206140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
206150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
206160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
206170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glPointParameterxvOES);
206180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
206190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
206200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
206210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
206220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
206230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
206240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
206250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
206260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
206270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
2062839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
2062939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
206300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
206310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2063205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2063305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
206340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glPointParameterxvOES(pname, params);
2063505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2063605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
206370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
206389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
206399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
206409801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
206419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2064205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2064305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
206449801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2064593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
206460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
206470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
206480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glPointSizexOES(GLfixed size) {
206490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
206500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
206510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
206520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glPointSizexOES);
206530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
206540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument size
206550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_size = glmsg.add_args();
206560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_isarray(false);
206570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_type(GLMessage::DataType::INT);
206580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->add_intvalue(size);
206590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
206600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2066105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2066205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
206630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glPointSizexOES(size);
2066405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2066505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
206660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
206679801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
206689801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
206699801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2067005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2067105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
206729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2067393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
206740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
206750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
206760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glPolygonOffsetxOES(GLfixed factor, GLfixed units) {
206770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
206780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
206790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
206800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glPolygonOffsetxOES);
206810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
206820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument factor
206830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_factor = glmsg.add_args();
206840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_factor->set_isarray(false);
206850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_factor->set_type(GLMessage::DataType::INT);
206860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_factor->add_intvalue(factor);
206870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
206880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument units
206890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_units = glmsg.add_args();
206900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_units->set_isarray(false);
206910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_units->set_type(GLMessage::DataType::INT);
206920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_units->add_intvalue(units);
206930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
206940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2069505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2069605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
206970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glPolygonOffsetxOES(factor, units);
2069805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2069905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
207000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
207019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
207029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
207039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2070405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2070505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
207069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2070793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
207080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
207090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
207100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glRotatexOES(GLfixed angle, GLfixed x, GLfixed y, GLfixed z) {
207110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
207120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
207130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
207140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glRotatexOES);
207150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
207160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument angle
207170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_angle = glmsg.add_args();
207180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_angle->set_isarray(false);
207190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_angle->set_type(GLMessage::DataType::INT);
207200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_angle->add_intvalue(angle);
207210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
207220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
207230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
207240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
207250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::INT);
207260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_intvalue(x);
207270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
207280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
207290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
207300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
207310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::INT);
207320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_intvalue(y);
207330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
207340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
207350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
207360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
207370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::INT);
207380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_intvalue(z);
207390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
207400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2074105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2074205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
207430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glRotatexOES(angle, x, y, z);
2074405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2074505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
207460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
207479801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
207489801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
207499801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2075005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2075105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
207529801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2075393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
207540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
207550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
207560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glSampleCoveragexOES(GLclampx value, GLboolean invert) {
207570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
207580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
207590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
207600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glSampleCoveragexOES);
207610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
207620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument value
207630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_value = glmsg.add_args();
207640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_value->set_isarray(false);
207650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT);
207660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_value->add_intvalue(value);
207670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
207680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument invert
207690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_invert = glmsg.add_args();
207700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_invert->set_isarray(false);
207710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_invert->set_type(GLMessage::DataType::BOOL);
207720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_invert->add_boolvalue(invert);
207730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
207740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2077505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2077605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
207770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glSampleCoveragexOES(value, invert);
2077805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2077905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
207800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
207819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
207829801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
207839801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2078405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2078505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
207869801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2078793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
207880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
207890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
207900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glScalexOES(GLfixed x, GLfixed y, GLfixed z) {
207910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
207920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
207930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
207940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glScalexOES);
207950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
207960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
207970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
207980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
207990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::INT);
208000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_intvalue(x);
208010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
208020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
208030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
208040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
208050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::INT);
208060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_intvalue(y);
208070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
208080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
208090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
208100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
208110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::INT);
208120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_intvalue(z);
208130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
208140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2081505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2081605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
208170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glScalexOES(x, y, z);
2081805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2081905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
208200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
208219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
208229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
208239801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2082405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2082505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
208269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2082793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
208280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
208290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
208300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexEnvxOES(GLenum target, GLenum pname, GLfixed param) {
208310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
208320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
208330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
208340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexEnvxOES);
208350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
208360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
208370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
208380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
208390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
208400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
208410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
208420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
208430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
208440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
208450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
208460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
208470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
208480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
208490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
208500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
208510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
208520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
208530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
208540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2085505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2085605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
208570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexEnvxOES(target, pname, param);
2085805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2085905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
208600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
208619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
208629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
208639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2086405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2086505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
208669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2086793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
208680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
208690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
208700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexEnvxvOES(GLenum target, GLenum pname, const GLfixed *params) {
208710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
208720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
208730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
208740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexEnvxvOES);
208750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
208760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
208770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
208780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
208790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
208800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
208810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
208820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
208830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
208840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
208850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
208860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
208870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
208880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
208890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
208900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
2089139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
2089239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
208930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
208940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2089505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2089605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
208970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexEnvxvOES(target, pname, params);
2089805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2089905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
209000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
209019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
209029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
209039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
209049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2090505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2090605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
209079801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2090893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
209090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
209100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
209110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexParameterxOES(GLenum target, GLenum pname, GLfixed param) {
209120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
209130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
209140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
209150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexParameterxOES);
209160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
209170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
209180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
209190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
209200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
209210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
209220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
209230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
209240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
209250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
209260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
209270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
209280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
209290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
209300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
209310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
209320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
209330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
209340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
209350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2093605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2093705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
209380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexParameterxOES(target, pname, param);
2093905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2094005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
209410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
209429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
209439801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
209449801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2094505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2094605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
209479801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2094893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
209490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
209500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
209510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexParameterxvOES(GLenum target, GLenum pname, const GLfixed *params) {
209520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
209530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
209540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
209550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexParameterxvOES);
209560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
209570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
209580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
209590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
209600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
209610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
209620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
209630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
209640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
209650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
209660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
209670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
209680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
209690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
209700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
209710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
2097239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
2097339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
209740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
209750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2097605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2097705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
209780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexParameterxvOES(target, pname, params);
2097905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2098005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
209810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
209829801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
209839801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
209849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
209859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2098605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2098705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
209889801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2098993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
209900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
209910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
209920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTranslatexOES(GLfixed x, GLfixed y, GLfixed z) {
209930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
209940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
209950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
209960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTranslatexOES);
209970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
209980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
209990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
210000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
210010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::INT);
210020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_intvalue(x);
210030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
210040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
210050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
210060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
210070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::INT);
210080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_intvalue(y);
210090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
210100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
210110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
210120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
210130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::INT);
210140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_intvalue(z);
210150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
210160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2101705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2101805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
210190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTranslatexOES(x, y, z);
2102005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2102105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
210220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
210239801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
210249801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
210259801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2102605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2102705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
210289801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2102993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
210300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
210310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
210320469dd6d55fa331bfd7de9431da98b6340d82271Siva VelusamyGLboolean GLTrace_glIsRenderbufferOES(GLuint renderbuffer) {
210330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
210340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
210350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
210360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glIsRenderbufferOES);
210370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
210380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument renderbuffer
210390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
210400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffer->set_isarray(false);
210410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffer->set_type(GLMessage::DataType::INT);
210420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffer->add_intvalue(renderbuffer);
210430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
210440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2104505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2104605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
210470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLboolean retValue = glContext->hooks->gl.glIsRenderbufferOES(renderbuffer);
2104805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2104905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
210500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
210510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
210520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
210530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
210540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::BOOL);
210550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_boolvalue(retValue);
210560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
210579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
210589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
210599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2106005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2106105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
210629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2106393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
210640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
210650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
210660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
210670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
210680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glBindRenderbufferOES(GLenum target, GLuint renderbuffer) {
210690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
210700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
210710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
210720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glBindRenderbufferOES);
210730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
210740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
210750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
210760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
210770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
210780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
210790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
210800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument renderbuffer
210810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
210820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffer->set_isarray(false);
210830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffer->set_type(GLMessage::DataType::INT);
210840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffer->add_intvalue(renderbuffer);
210850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
210860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2108705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2108805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
210890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glBindRenderbufferOES(target, renderbuffer);
2109005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2109105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
210920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
210939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
210949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
210959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2109605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2109705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
210989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2109993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
211000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
211010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
211020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDeleteRenderbuffersOES(GLsizei n, const GLuint* renderbuffers) {
211030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
211040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
211050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
211060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDeleteRenderbuffersOES);
211070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
211080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument n
211090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_n = glmsg.add_args();
211100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_isarray(false);
211110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_type(GLMessage::DataType::INT);
211120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->add_intvalue(n);
211130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
211140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument renderbuffers
211150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_renderbuffers = glmsg.add_args();
211160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffers->set_isarray(false);
2111739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_renderbuffers->set_type(GLMessage::DataType::INT64);
2111839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_renderbuffers->add_int64value((uintptr_t)renderbuffers);
211190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
211200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2112105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2112205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
211230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDeleteRenderbuffersOES(n, renderbuffers);
2112405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2112505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
211260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
211279801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
211289801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) renderbuffers,
211299801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
211309801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2113105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2113205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
211339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2113493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
211350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
211360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
211370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGenRenderbuffersOES(GLsizei n, GLuint* renderbuffers) {
211380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
211390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
211400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
211410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGenRenderbuffersOES);
211420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
211430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument n
211440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_n = glmsg.add_args();
211450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_isarray(false);
211460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_type(GLMessage::DataType::INT);
211470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->add_intvalue(n);
211480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
211490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument renderbuffers
211500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_renderbuffers = glmsg.add_args();
211510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffers->set_isarray(false);
2115239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_renderbuffers->set_type(GLMessage::DataType::INT64);
2115339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_renderbuffers->add_int64value((uintptr_t)renderbuffers);
211540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
211550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2115605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2115705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
211580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGenRenderbuffersOES(n, renderbuffers);
2115905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2116005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
211610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
211629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
211639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) renderbuffers,
211649801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
211659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2116605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2116705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
211689801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2116993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
211700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
211710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
211720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glRenderbufferStorageOES(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) {
211730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
211740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
211750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
211760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glRenderbufferStorageOES);
211770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
211780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
211790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
211800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
211810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
211820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
211830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
211840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument internalformat
211850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_internalformat = glmsg.add_args();
211860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->set_isarray(false);
211870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->set_type(GLMessage::DataType::ENUM);
211880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->add_intvalue((int)internalformat);
211890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
211900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
211910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
211920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
211930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
211940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
211950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
211960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
211970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
211980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
211990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
212000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
212010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
212020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2120305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2120405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
212050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glRenderbufferStorageOES(target, internalformat, width, height);
2120605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2120705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
212080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
212099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
212109801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
212119801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2121205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2121305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
212149801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2121593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
212160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
212170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
212180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetRenderbufferParameterivOES(GLenum target, GLenum pname, GLint* params) {
212190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
212200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
212210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
212220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetRenderbufferParameterivOES);
212230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
212240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
212250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
212260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
212270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
212280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
212290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
212300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
212310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
212320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
212330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
212340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
212350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
212360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
212370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
212380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
2123939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
2124039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
212410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
212420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2124305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2124405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
212450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetRenderbufferParameterivOES(target, pname, params);
2124605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2124705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
212480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
212499801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
212509801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
212519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
212529801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2125305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2125405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
212559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2125693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
212570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
212580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
212590469dd6d55fa331bfd7de9431da98b6340d82271Siva VelusamyGLboolean GLTrace_glIsFramebufferOES(GLuint framebuffer) {
212600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
212610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
212620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
212630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glIsFramebufferOES);
212640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
212650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument framebuffer
212660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_framebuffer = glmsg.add_args();
212670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffer->set_isarray(false);
212680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffer->set_type(GLMessage::DataType::INT);
212690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffer->add_intvalue(framebuffer);
212700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
212710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2127205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2127305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
212740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLboolean retValue = glContext->hooks->gl.glIsFramebufferOES(framebuffer);
2127505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2127605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
212770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
212780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
212790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
212800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
212810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::BOOL);
212820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_boolvalue(retValue);
212830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
212849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
212859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
212869801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2128705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2128805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
212899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2129093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
212910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
212920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
212930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
212940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
212950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glBindFramebufferOES(GLenum target, GLuint framebuffer) {
212960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
212970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
212980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
212990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glBindFramebufferOES);
213000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
213010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
213020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
213030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
213040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
213050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
213060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
213070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument framebuffer
213080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_framebuffer = glmsg.add_args();
213090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffer->set_isarray(false);
213100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffer->set_type(GLMessage::DataType::INT);
213110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffer->add_intvalue(framebuffer);
213120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
213130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2131405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2131505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
213160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glBindFramebufferOES(target, framebuffer);
2131705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2131805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
213190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
213209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
213219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
213229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2132305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2132405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
213259801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2132693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
213270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
213280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
213290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDeleteFramebuffersOES(GLsizei n, const GLuint* framebuffers) {
213300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
213310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
213320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
213330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDeleteFramebuffersOES);
213340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
213350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument n
213360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_n = glmsg.add_args();
213370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_isarray(false);
213380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_type(GLMessage::DataType::INT);
213390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->add_intvalue(n);
213400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
213410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument framebuffers
213420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_framebuffers = glmsg.add_args();
213430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffers->set_isarray(false);
2134439177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_framebuffers->set_type(GLMessage::DataType::INT64);
2134539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_framebuffers->add_int64value((uintptr_t)framebuffers);
213460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
213470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2134805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2134905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
213500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDeleteFramebuffersOES(n, framebuffers);
2135105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2135205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
213530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
213549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
213559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) framebuffers,
213569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
213579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2135805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2135905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
213609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2136193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
213620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
213630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
213640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGenFramebuffersOES(GLsizei n, GLuint* framebuffers) {
213650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
213660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
213670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
213680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGenFramebuffersOES);
213690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
213700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument n
213710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_n = glmsg.add_args();
213720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_isarray(false);
213730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_type(GLMessage::DataType::INT);
213740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->add_intvalue(n);
213750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
213760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument framebuffers
213770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_framebuffers = glmsg.add_args();
213780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffers->set_isarray(false);
2137939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_framebuffers->set_type(GLMessage::DataType::INT64);
2138039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_framebuffers->add_int64value((uintptr_t)framebuffers);
213810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
213820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2138305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2138405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
213850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGenFramebuffersOES(n, framebuffers);
2138605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2138705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
213880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
213899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
213909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) framebuffers,
213919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
213929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2139305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2139405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
213959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2139693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
213970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
213980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
213990469dd6d55fa331bfd7de9431da98b6340d82271Siva VelusamyGLenum GLTrace_glCheckFramebufferStatusOES(GLenum target) {
214000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
214010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
214020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
214030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glCheckFramebufferStatusOES);
214040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
214050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
214060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
214070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
214080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
214090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
214100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
214110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2141205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2141305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
214140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLenum retValue = glContext->hooks->gl.glCheckFramebufferStatusOES(target);
2141505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2141605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
214170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
214180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
214190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
214200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
214210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::ENUM);
214220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_intvalue((int)retValue);
214230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
214249801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
214259801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
214269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2142705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2142805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
214299801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2143093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
214310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
214320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
214330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
214340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
214350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFramebufferRenderbufferOES(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) {
214360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
214370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
214380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
214390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFramebufferRenderbufferOES);
214400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
214410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
214420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
214430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
214440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
214450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
214460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
214470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument attachment
214480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_attachment = glmsg.add_args();
214490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->set_isarray(false);
214500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->set_type(GLMessage::DataType::ENUM);
214510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->add_intvalue((int)attachment);
214520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
214530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument renderbuffertarget
214540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_renderbuffertarget = glmsg.add_args();
214550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffertarget->set_isarray(false);
214560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffertarget->set_type(GLMessage::DataType::ENUM);
214570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffertarget->add_intvalue((int)renderbuffertarget);
214580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
214590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument renderbuffer
214600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
214610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffer->set_isarray(false);
214620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffer->set_type(GLMessage::DataType::INT);
214630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffer->add_intvalue(renderbuffer);
214640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
214650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2146605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2146705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
214680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFramebufferRenderbufferOES(target, attachment, renderbuffertarget, renderbuffer);
2146905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2147005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
214710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
214729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
214739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
214749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2147505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2147605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
214779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2147893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
214790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
214800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
214810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFramebufferTexture2DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) {
214820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
214830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
214840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
214850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFramebufferTexture2DOES);
214860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
214870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
214880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
214890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
214900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
214910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
214920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
214930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument attachment
214940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_attachment = glmsg.add_args();
214950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->set_isarray(false);
214960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->set_type(GLMessage::DataType::ENUM);
214970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->add_intvalue((int)attachment);
214980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
214990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument textarget
215000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_textarget = glmsg.add_args();
215010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_textarget->set_isarray(false);
215020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_textarget->set_type(GLMessage::DataType::ENUM);
215030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_textarget->add_intvalue((int)textarget);
215040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
215050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument texture
215060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_texture = glmsg.add_args();
215070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->set_isarray(false);
215080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->set_type(GLMessage::DataType::INT);
215090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->add_intvalue(texture);
215100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
215110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument level
215120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_level = glmsg.add_args();
215130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_isarray(false);
215140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_type(GLMessage::DataType::INT);
215150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->add_intvalue(level);
215160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
215170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2151805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2151905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
215200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFramebufferTexture2DOES(target, attachment, textarget, texture, level);
2152105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2152205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
215230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
215249801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
215259801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
215269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2152705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2152805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
215299801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2153093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
215310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
215320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
215330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetFramebufferAttachmentParameterivOES(GLenum target, GLenum attachment, GLenum pname, GLint* params) {
215340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
215350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
215360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
215370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetFramebufferAttachmentParameterivOES);
215380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
215390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
215400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
215410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
215420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
215430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
215440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
215450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument attachment
215460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_attachment = glmsg.add_args();
215470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->set_isarray(false);
215480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->set_type(GLMessage::DataType::ENUM);
215490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->add_intvalue((int)attachment);
215500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
215510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
215520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
215530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
215540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
215550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
215560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
215570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
215580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
215590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
2156039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
2156139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
215620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
215630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2156405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2156505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
215660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetFramebufferAttachmentParameterivOES(target, attachment, pname, params);
2156705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2156805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
215690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
215709801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
215719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
215729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
215739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2157405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2157505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
215769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2157793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
215780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
215790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
215800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGenerateMipmapOES(GLenum target) {
215810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
215820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
215830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
215840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGenerateMipmapOES);
215850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
215860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
215870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
215880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
215890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
215900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
215910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
215920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2159305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2159405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
215950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGenerateMipmapOES(target);
2159605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2159705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
215980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
215999801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
216009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
216019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2160205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2160305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
216049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2160593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
216060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
216070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
216080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glCurrentPaletteMatrixOES(GLuint matrixpaletteindex) {
216090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
216100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
216110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
216120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glCurrentPaletteMatrixOES);
216130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
216140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument matrixpaletteindex
216150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_matrixpaletteindex = glmsg.add_args();
216160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_matrixpaletteindex->set_isarray(false);
216170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_matrixpaletteindex->set_type(GLMessage::DataType::INT);
216180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_matrixpaletteindex->add_intvalue(matrixpaletteindex);
216190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
216200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2162105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2162205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
216230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glCurrentPaletteMatrixOES(matrixpaletteindex);
2162405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2162505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
216260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
216279801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
216289801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
216299801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2163005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2163105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
216329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2163393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
216340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
216350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
216360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLoadPaletteFromModelViewMatrixOES(void) {
216370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
216380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
216390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
216400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLoadPaletteFromModelViewMatrixOES);
216410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
216420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2164305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2164405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
216450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLoadPaletteFromModelViewMatrixOES();
2164605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2164705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
216480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
216499801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
216509801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
216519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2165205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2165305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
216549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2165593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
216560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
216570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
216580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glMatrixIndexPointerOES(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) {
216590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
216600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
216610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
216620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glMatrixIndexPointerOES);
216630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
216640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument size
216650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_size = glmsg.add_args();
216660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_isarray(false);
216670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_type(GLMessage::DataType::INT);
216680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->add_intvalue(size);
216690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
216700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument type
216710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_type = glmsg.add_args();
216720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_isarray(false);
216730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_type(GLMessage::DataType::ENUM);
216740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->add_intvalue((int)type);
216750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
216760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument stride
216770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_stride = glmsg.add_args();
216780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->set_isarray(false);
216790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->set_type(GLMessage::DataType::INT);
216800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->add_intvalue(stride);
216810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
216820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pointer
216830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pointer = glmsg.add_args();
216840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pointer->set_isarray(false);
2168539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pointer->set_type(GLMessage::DataType::INT64);
2168639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pointer->add_int64value((uintptr_t)pointer);
216870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
216880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2168905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2169005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
216910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glMatrixIndexPointerOES(size, type, stride, pointer);
2169205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2169305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
216940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
216959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
216969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) pointer,
216979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
216989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2169905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2170005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
217019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2170293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
217030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
217040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
217050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glWeightPointerOES(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) {
217060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
217070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
217080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
217090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glWeightPointerOES);
217100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
217110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument size
217120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_size = glmsg.add_args();
217130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_isarray(false);
217140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_type(GLMessage::DataType::INT);
217150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->add_intvalue(size);
217160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
217170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument type
217180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_type = glmsg.add_args();
217190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_isarray(false);
217200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_type(GLMessage::DataType::ENUM);
217210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->add_intvalue((int)type);
217220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
217230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument stride
217240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_stride = glmsg.add_args();
217250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->set_isarray(false);
217260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->set_type(GLMessage::DataType::INT);
217270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->add_intvalue(stride);
217280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
217290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pointer
217300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pointer = glmsg.add_args();
217310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pointer->set_isarray(false);
2173239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pointer->set_type(GLMessage::DataType::INT64);
2173339177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_pointer->add_int64value((uintptr_t)pointer);
217340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
217350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2173605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2173705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
217380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glWeightPointerOES(size, type, stride, pointer);
2173905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2174005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
217410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
217429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
217439801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) pointer,
217449801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
217459801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2174605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2174705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
217489801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2174993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
217500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
217510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
217520469dd6d55fa331bfd7de9431da98b6340d82271Siva VelusamyGLbitfield GLTrace_glQueryMatrixxOES(GLfixed mantissa[16], GLint exponent[16]) {
217530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
217540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
217550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
217560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glQueryMatrixxOES);
217570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
217580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument mantissa
217590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_mantissa = glmsg.add_args();
217600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mantissa->set_isarray(false);
2176139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_mantissa->set_type(GLMessage::DataType::INT64);
2176239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_mantissa->add_int64value((uintptr_t)mantissa);
217630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
217640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument exponent
217650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_exponent = glmsg.add_args();
217660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_exponent->set_isarray(false);
2176739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_exponent->set_type(GLMessage::DataType::INT64);
2176839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_exponent->add_int64value((uintptr_t)exponent);
217690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
217700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2177105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2177205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
217730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLbitfield retValue = glContext->hooks->gl.glQueryMatrixxOES(mantissa, exponent);
2177405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2177505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
217760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
217770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
217780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
217790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
217800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::INT);
217810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_intvalue(retValue);
217820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
217839801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
217849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) mantissa,
217859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) exponent,
217869801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
217879801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2178805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2178905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
217909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2179193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
217920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
217930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
217940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
217950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
217960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDepthRangefOES(GLclampf zNear, GLclampf zFar) {
217970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
217980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
217990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
218000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDepthRangefOES);
218010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
218020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zNear
218030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zNear = glmsg.add_args();
218040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_isarray(false);
218050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_type(GLMessage::DataType::FLOAT);
218060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->add_floatvalue(zNear);
218070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
218080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zFar
218090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zFar = glmsg.add_args();
218100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_isarray(false);
218110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_type(GLMessage::DataType::FLOAT);
218120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->add_floatvalue(zFar);
218130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
218140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2181505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2181605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
218170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDepthRangefOES(zNear, zFar);
2181805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2181905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
218200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
218219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
218229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
218239801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2182405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2182505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
218269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2182793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
218280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
218290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
218300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFrustumfOES(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) {
218310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
218320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
218330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
218340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFrustumfOES);
218350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
218360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument left
218370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_left = glmsg.add_args();
218380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_isarray(false);
218390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_type(GLMessage::DataType::FLOAT);
218400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->add_floatvalue(left);
218410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
218420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument right
218430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_right = glmsg.add_args();
218440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_isarray(false);
218450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_type(GLMessage::DataType::FLOAT);
218460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->add_floatvalue(right);
218470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
218480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument bottom
218490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_bottom = glmsg.add_args();
218500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_isarray(false);
218510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_type(GLMessage::DataType::FLOAT);
218520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->add_floatvalue(bottom);
218530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
218540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument top
218550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_top = glmsg.add_args();
218560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_isarray(false);
218570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_type(GLMessage::DataType::FLOAT);
218580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->add_floatvalue(top);
218590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
218600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zNear
218610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zNear = glmsg.add_args();
218620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_isarray(false);
218630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_type(GLMessage::DataType::FLOAT);
218640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->add_floatvalue(zNear);
218650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
218660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zFar
218670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zFar = glmsg.add_args();
218680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_isarray(false);
218690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_type(GLMessage::DataType::FLOAT);
218700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->add_floatvalue(zFar);
218710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
218720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2187305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2187405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
218750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFrustumfOES(left, right, bottom, top, zNear, zFar);
2187605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2187705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
218780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
218799801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
218809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
218819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2188205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2188305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
218849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2188593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
218860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
218870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
218880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glOrthofOES(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) {
218890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
218900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
218910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
218920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glOrthofOES);
218930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
218940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument left
218950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_left = glmsg.add_args();
218960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_isarray(false);
218970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_type(GLMessage::DataType::FLOAT);
218980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->add_floatvalue(left);
218990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
219000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument right
219010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_right = glmsg.add_args();
219020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_isarray(false);
219030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_type(GLMessage::DataType::FLOAT);
219040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->add_floatvalue(right);
219050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
219060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument bottom
219070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_bottom = glmsg.add_args();
219080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_isarray(false);
219090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_type(GLMessage::DataType::FLOAT);
219100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->add_floatvalue(bottom);
219110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
219120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument top
219130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_top = glmsg.add_args();
219140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_isarray(false);
219150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_type(GLMessage::DataType::FLOAT);
219160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->add_floatvalue(top);
219170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
219180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zNear
219190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zNear = glmsg.add_args();
219200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_isarray(false);
219210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_type(GLMessage::DataType::FLOAT);
219220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->add_floatvalue(zNear);
219230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
219240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zFar
219250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zFar = glmsg.add_args();
219260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_isarray(false);
219270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_type(GLMessage::DataType::FLOAT);
219280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->add_floatvalue(zFar);
219290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
219300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2193105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2193205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
219330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glOrthofOES(left, right, bottom, top, zNear, zFar);
2193405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2193505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
219360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
219379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
219389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
219399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2194005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2194105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
219429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2194393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
219440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
219450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
219460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glClipPlanefOES(GLenum plane, const GLfloat *equation) {
219470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
219480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
219490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
219500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glClipPlanefOES);
219510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
219520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument plane
219530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_plane = glmsg.add_args();
219540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_plane->set_isarray(false);
219550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_plane->set_type(GLMessage::DataType::ENUM);
219560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_plane->add_intvalue((int)plane);
219570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
219580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument equation
219590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_equation = glmsg.add_args();
219600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_equation->set_isarray(false);
2196139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_equation->set_type(GLMessage::DataType::INT64);
2196239177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_equation->add_int64value((uintptr_t)equation);
219630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
219640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2196505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2196605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
219670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glClipPlanefOES(plane, equation);
2196805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2196905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
219700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
219719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
219729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) equation,
219739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
219749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2197505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2197605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
219779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2197893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
219790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
219800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
219810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetClipPlanefOES(GLenum pname, GLfloat eqn[4]) {
219820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
219830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
219840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
219850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetClipPlanefOES);
219860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
219870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
219880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
219890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
219900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
219910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
219920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
219930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument eqn
219940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_eqn = glmsg.add_args();
219950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_eqn->set_isarray(false);
2199639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_eqn->set_type(GLMessage::DataType::INT64);
2199739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_eqn->add_int64value((uintptr_t)eqn);
219980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
219990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2200005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2200105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
220020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetClipPlanefOES(pname, eqn);
2200305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2200405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
220050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
220069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
220079801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) eqn,
220089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
220099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2201005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2201105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
220129801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2201393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
220140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
220150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
220160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glClearDepthfOES(GLclampf depth) {
220170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
220180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
220190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
220200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glClearDepthfOES);
220210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
220220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument depth
220230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_depth = glmsg.add_args();
220240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_isarray(false);
220250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_type(GLMessage::DataType::FLOAT);
220260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->add_floatvalue(depth);
220270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
220280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2202905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2203005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
220310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glClearDepthfOES(depth);
2203205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2203305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
220340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
220359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
220369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
220379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2203805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2203905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
220409801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2204193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
220420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
220430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
220440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexGenfOES(GLenum coord, GLenum pname, GLfloat param) {
220450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
220460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
220470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
220480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexGenfOES);
220490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
220500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument coord
220510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_coord = glmsg.add_args();
220520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_isarray(false);
220530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_type(GLMessage::DataType::ENUM);
220540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->add_intvalue((int)coord);
220550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
220560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
220570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
220580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
220590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
220600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
220610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
220620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
220630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
220640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
220650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::FLOAT);
220660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_floatvalue(param);
220670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
220680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2206905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2207005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
220710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexGenfOES(coord, pname, param);
2207205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2207305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
220740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
220759801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
220769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
220779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2207805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2207905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
220809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2208193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
220820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
220830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
220840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexGenfvOES(GLenum coord, GLenum pname, const GLfloat *params) {
220850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
220860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
220870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
220880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexGenfvOES);
220890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
220900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument coord
220910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_coord = glmsg.add_args();
220920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_isarray(false);
220930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_type(GLMessage::DataType::ENUM);
220940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->add_intvalue((int)coord);
220950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
220960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
220970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
220980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
220990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
221000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
221010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
221020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
221030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
221040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
2210539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
2210639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
221070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
221080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2210905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2211005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
221110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexGenfvOES(coord, pname, params);
2211205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2211305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
221140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
221159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
221169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
221179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
221189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2211905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2212005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
221219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2212293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
221230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
221240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
221250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexGeniOES(GLenum coord, GLenum pname, GLint param) {
221260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
221270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
221280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
221290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexGeniOES);
221300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
221310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument coord
221320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_coord = glmsg.add_args();
221330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_isarray(false);
221340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_type(GLMessage::DataType::ENUM);
221350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->add_intvalue((int)coord);
221360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
221370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
221380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
221390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
221400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
221410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
221420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
221430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
221440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
221450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
221460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
221470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
221480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
221490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2215005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2215105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
221520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexGeniOES(coord, pname, param);
2215305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2215405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
221550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
221569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
221579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
221589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2215905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2216005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
221619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2216293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
221630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
221640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
221650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexGenivOES(GLenum coord, GLenum pname, const GLint *params) {
221660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
221670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
221680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
221690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexGenivOES);
221700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
221710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument coord
221720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_coord = glmsg.add_args();
221730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_isarray(false);
221740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_type(GLMessage::DataType::ENUM);
221750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->add_intvalue((int)coord);
221760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
221770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
221780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
221790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
221800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
221810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
221820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
221830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
221840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
221850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
2218639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
2218739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
221880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
221890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2219005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2219105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
221920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexGenivOES(coord, pname, params);
2219305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2219405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
221950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
221969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
221979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
221989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
221999801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2220005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2220105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
222029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2220393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
222040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
222050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
222060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexGenxOES(GLenum coord, GLenum pname, GLfixed param) {
222070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
222080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
222090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
222100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexGenxOES);
222110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
222120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument coord
222130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_coord = glmsg.add_args();
222140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_isarray(false);
222150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_type(GLMessage::DataType::ENUM);
222160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->add_intvalue((int)coord);
222170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
222180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
222190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
222200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
222210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
222220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
222230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
222240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
222250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
222260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
222270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
222280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
222290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
222300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2223105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2223205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
222330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexGenxOES(coord, pname, param);
2223405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2223505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
222360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
222379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
222389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
222399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2224005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2224105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
222429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2224393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
222440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
222450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
222460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexGenxvOES(GLenum coord, GLenum pname, const GLfixed *params) {
222470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
222480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
222490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
222500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexGenxvOES);
222510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
222520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument coord
222530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_coord = glmsg.add_args();
222540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_isarray(false);
222550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_type(GLMessage::DataType::ENUM);
222560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->add_intvalue((int)coord);
222570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
222580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
222590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
222600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
222610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
222620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
222630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
222640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
222650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
222660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
2226739177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
2226839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
222690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
222700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2227105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2227205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
222730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexGenxvOES(coord, pname, params);
2227405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2227505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
222760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
222779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
222789801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
222799801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
222809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2228105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2228205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
222839801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2228493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
222850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
222860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
222870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetTexGenfvOES(GLenum coord, GLenum pname, GLfloat *params) {
222880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
222890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
222900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
222910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetTexGenfvOES);
222920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
222930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument coord
222940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_coord = glmsg.add_args();
222950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_isarray(false);
222960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_type(GLMessage::DataType::ENUM);
222970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->add_intvalue((int)coord);
222980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
222990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
223000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
223010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
223020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
223030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
223040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
223050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
223060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
223070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
2230839177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
2230939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
223100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
223110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2231205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2231305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
223140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetTexGenfvOES(coord, pname, params);
2231505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2231605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
223170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
223189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
223199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
223209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
223219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2232205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2232305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
223249801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2232593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
223260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
223270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
223280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetTexGenivOES(GLenum coord, GLenum pname, GLint *params) {
223290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
223300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
223310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
223320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetTexGenivOES);
223330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
223340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument coord
223350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_coord = glmsg.add_args();
223360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_isarray(false);
223370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_type(GLMessage::DataType::ENUM);
223380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->add_intvalue((int)coord);
223390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
223400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
223410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
223420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
223430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
223440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
223450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
223460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
223470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
223480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
2234939177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
2235039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
223510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
223520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2235305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2235405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
223550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetTexGenivOES(coord, pname, params);
2235605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2235705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
223580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
223599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
223609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
223619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
223629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2236305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2236405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
223659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2236693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
223670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
223680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
223690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetTexGenxvOES(GLenum coord, GLenum pname, GLfixed *params) {
223700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
223710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
223720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
223730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetTexGenxvOES);
223740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
223750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument coord
223760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_coord = glmsg.add_args();
223770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_isarray(false);
223780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_type(GLMessage::DataType::ENUM);
223790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->add_intvalue((int)coord);
223800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
223810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
223820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
223830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
223840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
223850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
223860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
223870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
223880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
223890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
2239039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT64);
2239139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_params->add_int64value((uintptr_t)params);
223920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
223930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2239405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2239505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
223960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetTexGenxvOES(coord, pname, params);
2239705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2239805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
223990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
224009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
224019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
224029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
224039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2240405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2240505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
224069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2240793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
224080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
224090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
224100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glClipPlanefIMG(GLenum p, const GLfloat *eqn) {
224110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
224120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
224130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
224140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glClipPlanefIMG);
224150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
224160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument p
224170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_p = glmsg.add_args();
224180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_p->set_isarray(false);
224190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_p->set_type(GLMessage::DataType::ENUM);
224200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_p->add_intvalue((int)p);
224210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
224220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument eqn
224230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_eqn = glmsg.add_args();
224240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_eqn->set_isarray(false);
2242539177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_eqn->set_type(GLMessage::DataType::INT64);
2242639177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_eqn->add_int64value((uintptr_t)eqn);
224270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
224280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2242905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2243005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
224310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glClipPlanefIMG(p, eqn);
2243205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2243305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
224340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
224359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
224369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) eqn,
224379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
224389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2243905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2244005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
224419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2244293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
224430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
224440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
224450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glClipPlanexIMG(GLenum p, const GLfixed *eqn) {
224460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
224470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
224480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
224490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glClipPlanexIMG);
224500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
224510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument p
224520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_p = glmsg.add_args();
224530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_p->set_isarray(false);
224540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_p->set_type(GLMessage::DataType::ENUM);
224550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_p->add_intvalue((int)p);
224560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
224570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument eqn
224580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_eqn = glmsg.add_args();
224590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_eqn->set_isarray(false);
2246039177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_eqn->set_type(GLMessage::DataType::INT64);
2246139177b4103f7c8f1f9903b3f52e83048fc066235Siva Velusamy    arg_eqn->add_int64value((uintptr_t)eqn);
224620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
224630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
2246405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
2246505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
224660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glClipPlanexIMG(p, eqn);
2246705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
2246805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
224690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
224709801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
224719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) eqn,
224729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
224739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
2247405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
2247505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
224769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
2247793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
224780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
224790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
224800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
224810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}; // namespace gltrace
224820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}; // namespace android
22483