gltrace_api.cpp revision d58974c6b25fe9fdadb38dc1f1371196b71a0913
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>
210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy#include <GLES2/gl2.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
310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy// 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);
1160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_name->set_type(GLMessage::DataType::INT);
1170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_name->add_intvalue((int)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
2720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf 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);
4810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_data->set_type(GLMessage::DataType::INT);
4820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_data->add_intvalue((int)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);
5340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_data->set_type(GLMessage::DataType::INT);
5350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_data->add_intvalue((int)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
6180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf 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
6640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glClearDepthf(GLclampf 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);
8450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_data->set_type(GLMessage::DataType::INT);
8460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_data->add_intvalue((int)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);
9220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_data->set_type(GLMessage::DataType::INT);
9230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_data->add_intvalue((int)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);
11910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_buffers->set_type(GLMessage::DataType::INT);
11920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_buffers->add_intvalue((int)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);
12260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffers->set_type(GLMessage::DataType::INT);
12270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffers->add_intvalue((int)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);
12890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffers->set_type(GLMessage::DataType::INT);
12900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffers->add_intvalue((int)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);
13520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_textures->set_type(GLMessage::DataType::INT);
13530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_textures->add_intvalue((int)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
14280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDepthRangef(GLclampf zNear, GLclampf zFar) {
14290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
14300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
14310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
14320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDepthRangef);
14330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
14340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zNear
14350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zNear = glmsg.add_args();
14360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_isarray(false);
14370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_type(GLMessage::DataType::FLOAT);
14380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->add_floatvalue(zNear);
14390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
14400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zFar
14410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zFar = glmsg.add_args();
14420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_isarray(false);
14430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_type(GLMessage::DataType::FLOAT);
14440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->add_floatvalue(zFar);
14450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
14460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
144705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
144805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
14490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDepthRangef(zNear, zFar);
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);
16190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_indices->set_type(GLMessage::DataType::INT);
16200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_indices->add_intvalue((int)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);
18800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_buffers->set_type(GLMessage::DataType::INT);
18810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_buffers->add_intvalue((int)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);
19430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffers->set_type(GLMessage::DataType::INT);
19440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffers->add_intvalue((int)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);
19780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffers->set_type(GLMessage::DataType::INT);
19790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffers->add_intvalue((int)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);
20130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_textures->set_type(GLMessage::DataType::INT);
20140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_textures->add_intvalue((int)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);
20600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_type(GLMessage::DataType::INT);
20610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->add_intvalue((int)length);
20620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
20630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument size
20640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_size = glmsg.add_args();
20650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_isarray(false);
20660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_type(GLMessage::DataType::INT);
20670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->add_intvalue((int)size);
20680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
20690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument type
20700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_type = glmsg.add_args();
20710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_isarray(false);
20720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_type(GLMessage::DataType::INT);
20730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->add_intvalue((int)type);
20740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
20750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument name
20760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_name = glmsg.add_args();
20770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_name->set_isarray(false);
20780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_name->set_type(GLMessage::DataType::INT);
20790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_name->add_intvalue((int)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);
21280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_type(GLMessage::DataType::INT);
21290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->add_intvalue((int)length);
21300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
21310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument size
21320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_size = glmsg.add_args();
21330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_isarray(false);
21340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_type(GLMessage::DataType::INT);
21350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->add_intvalue((int)size);
21360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
21370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument type
21380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_type = glmsg.add_args();
21390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_isarray(false);
21400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_type(GLMessage::DataType::INT);
21410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->add_intvalue((int)type);
21420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
21430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument name
21440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_name = glmsg.add_args();
21450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_name->set_isarray(false);
21460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_name->set_type(GLMessage::DataType::INT);
21470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_name->add_intvalue((int)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);
21900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->set_type(GLMessage::DataType::INT);
21910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_count->add_intvalue((int)count);
21920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
21930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument shaders
21940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_shaders = glmsg.add_args();
21950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shaders->set_isarray(false);
21960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shaders->set_type(GLMessage::DataType::INT);
21970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shaders->add_intvalue((int)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);
22320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_name->set_type(GLMessage::DataType::INT);
22330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_name->add_intvalue((int)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);
22750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
22760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)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);
23160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
23170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)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);
23810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
23820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)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);
24280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
24290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)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);
24630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
24640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)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);
25040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
25050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)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);
25450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_type(GLMessage::DataType::INT);
25460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->add_intvalue((int)length);
25470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
25480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument infolog
25490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_infolog = glmsg.add_args();
25500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_infolog->set_isarray(false);
25510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_infolog->set_type(GLMessage::DataType::INT);
25520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_infolog->add_intvalue((int)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);
25930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
25940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)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);
26340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
26350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)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);
26750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_type(GLMessage::DataType::INT);
26760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->add_intvalue((int)length);
26770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
26780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument infolog
26790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_infolog = glmsg.add_args();
26800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_infolog->set_isarray(false);
26810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_infolog->set_type(GLMessage::DataType::INT);
26820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_infolog->add_intvalue((int)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);
27230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_range->set_type(GLMessage::DataType::INT);
27240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_range->add_intvalue((int)range);
27250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
27260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument precision
27270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_precision = glmsg.add_args();
27280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_precision->set_isarray(false);
27290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_precision->set_type(GLMessage::DataType::INT);
27300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_precision->add_intvalue((int)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);
27710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_type(GLMessage::DataType::INT);
27720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->add_intvalue((int)length);
27730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
27740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument source
27750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_source = glmsg.add_args();
27760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_source->set_isarray(false);
27770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_source->set_type(GLMessage::DataType::INT);
27780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_source->add_intvalue((int)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);
28200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::INT);
28210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_intvalue((int)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);
28560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
28570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)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);
28970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
28980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)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);
29380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
29390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)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);
29790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
29800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)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);
30140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_name->set_type(GLMessage::DataType::INT);
30150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_name->add_intvalue((int)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);
30630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
30640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)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);
31040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
31050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)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);
31450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pointer->set_type(GLMessage::DataType::INT);
31460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pointer->add_intvalue((int)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);
36200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pixels->set_type(GLMessage::DataType::INT);
36210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pixels->add_intvalue((int)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
37080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glSampleCoverage(GLclampf 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);
38030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shaders->set_type(GLMessage::DataType::INT);
38040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shaders->add_intvalue((int)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);
38150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_binary->set_type(GLMessage::DataType::INT);
38160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_binary->add_intvalue((int)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);
38630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_string->set_type(GLMessage::DataType::INT);
38640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_string->add_intvalue((int)string);
38650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
38660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument length
38670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_length = glmsg.add_args();
38680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_isarray(false);
38690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_type(GLMessage::DataType::INT);
38700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->add_intvalue((int)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);
41810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pixels->set_type(GLMessage::DataType::INT);
41820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pixels->add_intvalue((int)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);
42620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
42630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)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);
43430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
43440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)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);
44200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pixels->set_type(GLMessage::DataType::INT);
44210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pixels->add_intvalue((int)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);
44950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_v->set_type(GLMessage::DataType::INT);
44960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_v->add_intvalue((int)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);
45700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_v->set_type(GLMessage::DataType::INT);
45710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_v->add_intvalue((int)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);
46510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_v->set_type(GLMessage::DataType::INT);
46520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_v->add_intvalue((int)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);
47320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_v->set_type(GLMessage::DataType::INT);
47330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_v->add_intvalue((int)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);
48190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_v->set_type(GLMessage::DataType::INT);
48200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_v->add_intvalue((int)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);
49060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_v->set_type(GLMessage::DataType::INT);
49070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_v->add_intvalue((int)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);
49990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_v->set_type(GLMessage::DataType::INT);
50000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_v->add_intvalue((int)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);
50920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_v->set_type(GLMessage::DataType::INT);
50930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_v->add_intvalue((int)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);
51390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT);
51400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_value->add_intvalue((int)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);
51860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT);
51870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_value->add_intvalue((int)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);
52330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT);
52340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_value->add_intvalue((int)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);
53580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_values->set_type(GLMessage::DataType::INT);
53590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_values->add_intvalue((int)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);
54330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_values->set_type(GLMessage::DataType::INT);
54340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_values->add_intvalue((int)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);
55140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_values->set_type(GLMessage::DataType::INT);
55150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_values->add_intvalue((int)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);
56010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_values->set_type(GLMessage::DataType::INT);
56020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_values->add_intvalue((int)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);
56600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ptr->set_type(GLMessage::DataType::INT);
56610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ptr->add_intvalue((int)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
57260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
57270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy// Definitions for GL2Ext APIs
57280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
57290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image) {
57300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
57310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
57320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
57330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glEGLImageTargetTexture2DOES);
57340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
57350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
57360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
57370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
57380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
57390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
57400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
57410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument image
57420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_image = glmsg.add_args();
57430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_image->set_isarray(false);
57440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_image->set_type(GLMessage::DataType::INT);
57450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_image->add_intvalue((int)image);
57460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
57470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
574805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
574905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
57500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glEGLImageTargetTexture2DOES(target, image);
575105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
575205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
57530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
57549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
57559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) image,
57569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
57579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
575805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
575905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
57609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
576193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
57620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
57630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
57640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glEGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image) {
57650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
57660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
57670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
57680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glEGLImageTargetRenderbufferStorageOES);
57690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
57700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
57710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
57720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
57730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
57740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
57750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
57760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument image
57770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_image = glmsg.add_args();
57780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_image->set_isarray(false);
57790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_image->set_type(GLMessage::DataType::INT);
57800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_image->add_intvalue((int)image);
57810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
57820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
578305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
578405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
57850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glEGLImageTargetRenderbufferStorageOES(target, image);
578605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
578705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
57880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
57899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
57909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) image,
57919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
57929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
579305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
579405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
57959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
579693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
57970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
57980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
57990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetProgramBinaryOES(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary) {
58000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
58010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
58020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
58030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetProgramBinaryOES);
58040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
58050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument program
58060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_program = glmsg.add_args();
58070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_isarray(false);
58080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_type(GLMessage::DataType::INT);
58090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->add_intvalue(program);
58100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
58110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument bufSize
58120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_bufSize = glmsg.add_args();
58130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufSize->set_isarray(false);
58140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufSize->set_type(GLMessage::DataType::INT);
58150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufSize->add_intvalue(bufSize);
58160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
58170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument length
58180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_length = glmsg.add_args();
58190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_isarray(false);
58200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_type(GLMessage::DataType::INT);
58210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->add_intvalue((int)length);
58220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
58230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument binaryFormat
58240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_binaryFormat = glmsg.add_args();
58250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_binaryFormat->set_isarray(false);
58260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_binaryFormat->set_type(GLMessage::DataType::INT);
58270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_binaryFormat->add_intvalue((int)binaryFormat);
58280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
58290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument binary
58300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_binary = glmsg.add_args();
58310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_binary->set_isarray(false);
58320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_binary->set_type(GLMessage::DataType::INT);
58330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_binary->add_intvalue((int)binary);
58340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
58350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
583605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
583705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
58380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetProgramBinaryOES(program, bufSize, length, binaryFormat, binary);
583905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
584005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
58410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
58429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
58439801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) length,
58449801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) binaryFormat,
58459801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) binary,
58469801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
58479801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
584805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
584905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
58509801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
585193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
58520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
58530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
58540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glProgramBinaryOES(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length) {
58550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
58560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
58570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
58580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glProgramBinaryOES);
58590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
58600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument program
58610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_program = glmsg.add_args();
58620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_isarray(false);
58630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_type(GLMessage::DataType::INT);
58640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->add_intvalue(program);
58650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
58660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument binaryFormat
58670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_binaryFormat = glmsg.add_args();
58680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_binaryFormat->set_isarray(false);
58690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_binaryFormat->set_type(GLMessage::DataType::ENUM);
58700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_binaryFormat->add_intvalue((int)binaryFormat);
58710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
58720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument binary
58730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_binary = glmsg.add_args();
58740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_binary->set_isarray(false);
58750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_binary->set_type(GLMessage::DataType::INT);
58760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_binary->add_intvalue((int)binary);
58770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
58780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument length
58790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_length = glmsg.add_args();
58800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_isarray(false);
58810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_type(GLMessage::DataType::INT);
58820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->add_intvalue(length);
58830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
58840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
588505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
588605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
58870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glProgramBinaryOES(program, binaryFormat, binary, length);
588805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
588905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
58900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
58919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
58929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) binary,
58939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
58949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
589505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
589605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
58979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
589893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
58990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
59000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
59010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid* GLTrace_glMapBufferOES(GLenum target, GLenum access) {
59020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
59030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
59040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
59050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glMapBufferOES);
59060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
59070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
59080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
59090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
59100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
59110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
59120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
59130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument access
59140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_access = glmsg.add_args();
59150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_access->set_isarray(false);
59160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_access->set_type(GLMessage::DataType::ENUM);
59170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_access->add_intvalue((int)access);
59180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
59190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
592005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
592105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
59220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    void* retValue = glContext->hooks->gl.glMapBufferOES(target, access);
592305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
592405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
59250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
59260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
59270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
59280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
59290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::INT);
59300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_intvalue((int)retValue);
59310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
59329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
59339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) retValue,
59349801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
59359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
593605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
593705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
59389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
593993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
59400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
59410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
59420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
59430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
59440469dd6d55fa331bfd7de9431da98b6340d82271Siva VelusamyGLboolean GLTrace_glUnmapBufferOES(GLenum target) {
59450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
59460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
59470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
59480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glUnmapBufferOES);
59490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
59500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
59510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
59520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
59530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
59540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
59550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
59560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
595705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
595805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
59590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLboolean retValue = glContext->hooks->gl.glUnmapBufferOES(target);
596005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
596105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
59620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
59630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
59640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
59650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
59660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::BOOL);
59670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_boolvalue(retValue);
59680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
59699801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
59709801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
59719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
597205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
597305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
59749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
597593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
59760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
59770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
59780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
59790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
59800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetBufferPointervOES(GLenum target, GLenum pname, GLvoid** params) {
59810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
59820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
59830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
59840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetBufferPointervOES);
59850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
59860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
59870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
59880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
59890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
59900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
59910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
59920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
59930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
59940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
59950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
59960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
59970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
59980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
59990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
60000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
60010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
60020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
60030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
60040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
600505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
600605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
60070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetBufferPointervOES(target, pname, params);
600805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
600905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
60100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
60119801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
60129801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
60139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
60149801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
601505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
601605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
60179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
601893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
60190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
60200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
60210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels) {
60220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
60230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
60240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
60250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexImage3DOES);
60260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
60270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
60280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
60290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
60300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
60310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
60320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
60330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument level
60340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_level = glmsg.add_args();
60350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_isarray(false);
60360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_type(GLMessage::DataType::INT);
60370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->add_intvalue(level);
60380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
60390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument internalformat
60400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_internalformat = glmsg.add_args();
60410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->set_isarray(false);
60420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->set_type(GLMessage::DataType::ENUM);
60430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->add_intvalue((int)internalformat);
60440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
60450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
60460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
60470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
60480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
60490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
60500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
60510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
60520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
60530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
60540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
60550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
60560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
60570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument depth
60580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_depth = glmsg.add_args();
60590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_isarray(false);
60600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_type(GLMessage::DataType::INT);
60610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->add_intvalue(depth);
60620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
60630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument border
60640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_border = glmsg.add_args();
60650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_border->set_isarray(false);
60660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_border->set_type(GLMessage::DataType::INT);
60670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_border->add_intvalue(border);
60680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
60690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument format
60700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_format = glmsg.add_args();
60710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->set_isarray(false);
60720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->set_type(GLMessage::DataType::ENUM);
60730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->add_intvalue((int)format);
60740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
60750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument type
60760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_type = glmsg.add_args();
60770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_isarray(false);
60780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_type(GLMessage::DataType::ENUM);
60790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->add_intvalue((int)type);
60800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
60810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pixels
60820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pixels = glmsg.add_args();
60830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pixels->set_isarray(false);
60840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pixels->set_type(GLMessage::DataType::INT);
60850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pixels->add_intvalue((int)pixels);
60860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
60870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
608805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
608905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
60900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexImage3DOES(target, level, internalformat, width, height, depth, border, format, type, pixels);
609105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
609205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
60930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
60949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
60959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) pixels,
60969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
60979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
609805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
609905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
61009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
610193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
61020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
61030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
61040469dd6d55fa331bfd7de9431da98b6340d82271Siva 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) {
61050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
61060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
61070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
61080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexSubImage3DOES);
61090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
61100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
61110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
61120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
61130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
61140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
61150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
61160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument level
61170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_level = glmsg.add_args();
61180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_isarray(false);
61190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_type(GLMessage::DataType::INT);
61200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->add_intvalue(level);
61210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
61220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument xoffset
61230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_xoffset = glmsg.add_args();
61240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->set_isarray(false);
61250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->set_type(GLMessage::DataType::INT);
61260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->add_intvalue(xoffset);
61270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
61280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument yoffset
61290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_yoffset = glmsg.add_args();
61300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->set_isarray(false);
61310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->set_type(GLMessage::DataType::INT);
61320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->add_intvalue(yoffset);
61330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
61340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zoffset
61350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zoffset = glmsg.add_args();
61360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zoffset->set_isarray(false);
61370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zoffset->set_type(GLMessage::DataType::INT);
61380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zoffset->add_intvalue(zoffset);
61390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
61400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
61410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
61420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
61430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
61440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
61450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
61460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
61470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
61480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
61490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
61500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
61510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
61520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument depth
61530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_depth = glmsg.add_args();
61540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_isarray(false);
61550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_type(GLMessage::DataType::INT);
61560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->add_intvalue(depth);
61570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
61580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument format
61590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_format = glmsg.add_args();
61600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->set_isarray(false);
61610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->set_type(GLMessage::DataType::ENUM);
61620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->add_intvalue((int)format);
61630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
61640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument type
61650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_type = glmsg.add_args();
61660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_isarray(false);
61670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_type(GLMessage::DataType::ENUM);
61680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->add_intvalue((int)type);
61690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
61700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pixels
61710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pixels = glmsg.add_args();
61720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pixels->set_isarray(false);
61730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pixels->set_type(GLMessage::DataType::INT);
61740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pixels->add_intvalue((int)pixels);
61750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
61760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
617705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
617805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
61790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexSubImage3DOES(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
618005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
618105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
61820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
61839801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
61849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) pixels,
61859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
61869801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
618705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
618805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
61899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
619093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
61910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
61920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
61930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glCopyTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) {
61940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
61950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
61960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
61970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glCopyTexSubImage3DOES);
61980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
61990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
62000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
62010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
62020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
62030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
62040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
62050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument level
62060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_level = glmsg.add_args();
62070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_isarray(false);
62080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_type(GLMessage::DataType::INT);
62090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->add_intvalue(level);
62100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
62110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument xoffset
62120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_xoffset = glmsg.add_args();
62130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->set_isarray(false);
62140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->set_type(GLMessage::DataType::INT);
62150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->add_intvalue(xoffset);
62160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
62170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument yoffset
62180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_yoffset = glmsg.add_args();
62190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->set_isarray(false);
62200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->set_type(GLMessage::DataType::INT);
62210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->add_intvalue(yoffset);
62220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
62230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zoffset
62240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zoffset = glmsg.add_args();
62250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zoffset->set_isarray(false);
62260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zoffset->set_type(GLMessage::DataType::INT);
62270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zoffset->add_intvalue(zoffset);
62280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
62290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
62300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
62310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
62320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::INT);
62330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_intvalue(x);
62340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
62350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
62360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
62370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
62380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::INT);
62390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_intvalue(y);
62400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
62410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
62420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
62430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
62440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
62450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
62460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
62470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
62480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
62490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
62500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
62510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
62520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
62530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
625405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
625505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
62560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glCopyTexSubImage3DOES(target, level, xoffset, yoffset, zoffset, x, y, width, height);
625705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
625805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
62590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
62609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
62619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
62629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
626305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
626405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
62659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
626693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
62670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
62680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
62690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glCompressedTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data) {
62700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
62710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
62720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
62730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glCompressedTexImage3DOES);
62740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
62750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
62760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
62770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
62780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
62790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
62800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
62810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument level
62820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_level = glmsg.add_args();
62830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_isarray(false);
62840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_type(GLMessage::DataType::INT);
62850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->add_intvalue(level);
62860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
62870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument internalformat
62880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_internalformat = glmsg.add_args();
62890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->set_isarray(false);
62900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->set_type(GLMessage::DataType::ENUM);
62910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->add_intvalue((int)internalformat);
62920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
62930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
62940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
62950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
62960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
62970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
62980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
62990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
63000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
63010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
63020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
63030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
63040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
63050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument depth
63060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_depth = glmsg.add_args();
63070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_isarray(false);
63080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_type(GLMessage::DataType::INT);
63090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->add_intvalue(depth);
63100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
63110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument border
63120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_border = glmsg.add_args();
63130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_border->set_isarray(false);
63140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_border->set_type(GLMessage::DataType::INT);
63150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_border->add_intvalue(border);
63160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
63170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument imageSize
63180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_imageSize = glmsg.add_args();
63190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_imageSize->set_isarray(false);
63200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_imageSize->set_type(GLMessage::DataType::INT);
63210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_imageSize->add_intvalue(imageSize);
63220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
63230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument data
63240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_data = glmsg.add_args();
63250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_data->set_isarray(false);
63260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_data->set_type(GLMessage::DataType::INT);
63270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_data->add_intvalue((int)data);
63280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
63290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
633005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
633105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
63320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glCompressedTexImage3DOES(target, level, internalformat, width, height, depth, border, imageSize, data);
633305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
633405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
63350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
63369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
63379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) data,
63389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
63399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
634005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
634105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
63429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
634393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
63440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
63450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
63460469dd6d55fa331bfd7de9431da98b6340d82271Siva 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) {
63470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
63480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
63490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
63500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glCompressedTexSubImage3DOES);
63510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
63520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
63530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
63540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
63550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
63560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
63570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
63580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument level
63590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_level = glmsg.add_args();
63600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_isarray(false);
63610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_type(GLMessage::DataType::INT);
63620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->add_intvalue(level);
63630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
63640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument xoffset
63650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_xoffset = glmsg.add_args();
63660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->set_isarray(false);
63670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->set_type(GLMessage::DataType::INT);
63680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->add_intvalue(xoffset);
63690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
63700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument yoffset
63710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_yoffset = glmsg.add_args();
63720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->set_isarray(false);
63730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->set_type(GLMessage::DataType::INT);
63740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->add_intvalue(yoffset);
63750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
63760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zoffset
63770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zoffset = glmsg.add_args();
63780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zoffset->set_isarray(false);
63790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zoffset->set_type(GLMessage::DataType::INT);
63800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zoffset->add_intvalue(zoffset);
63810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
63820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
63830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
63840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
63850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
63860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
63870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
63880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
63890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
63900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
63910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
63920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
63930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
63940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument depth
63950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_depth = glmsg.add_args();
63960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_isarray(false);
63970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_type(GLMessage::DataType::INT);
63980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->add_intvalue(depth);
63990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
64000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument format
64010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_format = glmsg.add_args();
64020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->set_isarray(false);
64030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->set_type(GLMessage::DataType::ENUM);
64040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->add_intvalue((int)format);
64050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
64060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument imageSize
64070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_imageSize = glmsg.add_args();
64080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_imageSize->set_isarray(false);
64090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_imageSize->set_type(GLMessage::DataType::INT);
64100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_imageSize->add_intvalue(imageSize);
64110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
64120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument data
64130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_data = glmsg.add_args();
64140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_data->set_isarray(false);
64150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_data->set_type(GLMessage::DataType::INT);
64160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_data->add_intvalue((int)data);
64170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
64180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
641905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
642005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
64210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glCompressedTexSubImage3DOES(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
642205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
642305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
64240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
64259801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
64269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) data,
64279801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
64289801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
642905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
643005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
64319801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
643293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
64330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
64340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
64350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFramebufferTexture3DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) {
64360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
64370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
64380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
64390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFramebufferTexture3DOES);
64400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
64410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
64420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
64430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
64440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
64450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
64460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
64470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument attachment
64480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_attachment = glmsg.add_args();
64490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->set_isarray(false);
64500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->set_type(GLMessage::DataType::ENUM);
64510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->add_intvalue((int)attachment);
64520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
64530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument textarget
64540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_textarget = glmsg.add_args();
64550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_textarget->set_isarray(false);
64560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_textarget->set_type(GLMessage::DataType::ENUM);
64570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_textarget->add_intvalue((int)textarget);
64580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
64590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument texture
64600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_texture = glmsg.add_args();
64610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->set_isarray(false);
64620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->set_type(GLMessage::DataType::INT);
64630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->add_intvalue(texture);
64640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
64650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument level
64660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_level = glmsg.add_args();
64670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_isarray(false);
64680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_type(GLMessage::DataType::INT);
64690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->add_intvalue(level);
64700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
64710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zoffset
64720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zoffset = glmsg.add_args();
64730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zoffset->set_isarray(false);
64740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zoffset->set_type(GLMessage::DataType::INT);
64750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zoffset->add_intvalue(zoffset);
64760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
64770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
647805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
647905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
64800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFramebufferTexture3DOES(target, attachment, textarget, texture, level, zoffset);
648105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
648205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
64830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
64849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
64859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
64869801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
648705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
648805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
64899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
649093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
64910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
64920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
64930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glBindVertexArrayOES(GLuint array) {
64940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
64950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
64960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
64970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glBindVertexArrayOES);
64980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
64990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument array
65000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_array = glmsg.add_args();
65010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_array->set_isarray(false);
65020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_array->set_type(GLMessage::DataType::INT);
65030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_array->add_intvalue(array);
65040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
65050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
650605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
650705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
65080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glBindVertexArrayOES(array);
650905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
651005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
65110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
65129801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
65139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
65149801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
651505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
651605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
65179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
651893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
65190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
65200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
65210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDeleteVertexArraysOES(GLsizei n, const GLuint *arrays) {
65220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
65230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
65240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
65250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDeleteVertexArraysOES);
65260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
65270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument n
65280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_n = glmsg.add_args();
65290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_isarray(false);
65300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_type(GLMessage::DataType::INT);
65310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->add_intvalue(n);
65320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
65330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument arrays
65340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_arrays = glmsg.add_args();
65350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_arrays->set_isarray(false);
65360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_arrays->set_type(GLMessage::DataType::INT);
65370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_arrays->add_intvalue((int)arrays);
65380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
65390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
654005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
654105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
65420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDeleteVertexArraysOES(n, arrays);
654305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
654405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
65450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
65469801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
65479801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) arrays,
65489801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
65499801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
655005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
655105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
65529801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
655393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
65540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
65550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
65560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGenVertexArraysOES(GLsizei n, GLuint *arrays) {
65570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
65580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
65590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
65600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGenVertexArraysOES);
65610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
65620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument n
65630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_n = glmsg.add_args();
65640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_isarray(false);
65650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_type(GLMessage::DataType::INT);
65660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->add_intvalue(n);
65670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
65680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument arrays
65690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_arrays = glmsg.add_args();
65700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_arrays->set_isarray(false);
65710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_arrays->set_type(GLMessage::DataType::INT);
65720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_arrays->add_intvalue((int)arrays);
65730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
65740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
657505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
657605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
65770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGenVertexArraysOES(n, arrays);
657805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
657905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
65800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
65819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
65829801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) arrays,
65839801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
65849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
658505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
658605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
65879801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
658893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
65890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
65900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
65910469dd6d55fa331bfd7de9431da98b6340d82271Siva VelusamyGLboolean GLTrace_glIsVertexArrayOES(GLuint array) {
65920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
65930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
65940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
65950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glIsVertexArrayOES);
65960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
65970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument array
65980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_array = glmsg.add_args();
65990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_array->set_isarray(false);
66000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_array->set_type(GLMessage::DataType::INT);
66010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_array->add_intvalue(array);
66020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
66030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
660405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
660505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
66060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLboolean retValue = glContext->hooks->gl.glIsVertexArrayOES(array);
660705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
660805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
66090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
66100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
66110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
66120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
66130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::BOOL);
66140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_boolvalue(retValue);
66150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
66169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
66179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
66189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
661905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
662005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
66219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
662293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
66230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
66240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
66250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
66260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
66270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetPerfMonitorGroupsAMD(GLint *numGroups, GLsizei groupsSize, GLuint *groups) {
66280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
66290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
66300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
66310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetPerfMonitorGroupsAMD);
66320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
66330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument numGroups
66340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_numGroups = glmsg.add_args();
66350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numGroups->set_isarray(false);
66360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numGroups->set_type(GLMessage::DataType::INT);
66370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numGroups->add_intvalue((int)numGroups);
66380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
66390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument groupsSize
66400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_groupsSize = glmsg.add_args();
66410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_groupsSize->set_isarray(false);
66420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_groupsSize->set_type(GLMessage::DataType::INT);
66430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_groupsSize->add_intvalue(groupsSize);
66440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
66450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument groups
66460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_groups = glmsg.add_args();
66470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_groups->set_isarray(false);
66480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_groups->set_type(GLMessage::DataType::INT);
66490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_groups->add_intvalue((int)groups);
66500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
66510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
665205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
665305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
66540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetPerfMonitorGroupsAMD(numGroups, groupsSize, groups);
665505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
665605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
66570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
66589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
66599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) numGroups,
66609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) groups,
66619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
66629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
666305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
666405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
66659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
666693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
66670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
66680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
66690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetPerfMonitorCountersAMD(GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters) {
66700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
66710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
66720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
66730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetPerfMonitorCountersAMD);
66740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
66750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument group
66760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_group = glmsg.add_args();
66770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_group->set_isarray(false);
66780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_group->set_type(GLMessage::DataType::INT);
66790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_group->add_intvalue(group);
66800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
66810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument numCounters
66820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_numCounters = glmsg.add_args();
66830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numCounters->set_isarray(false);
66840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numCounters->set_type(GLMessage::DataType::INT);
66850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numCounters->add_intvalue((int)numCounters);
66860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
66870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument maxActiveCounters
66880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_maxActiveCounters = glmsg.add_args();
66890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxActiveCounters->set_isarray(false);
66900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxActiveCounters->set_type(GLMessage::DataType::INT);
66910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxActiveCounters->add_intvalue((int)maxActiveCounters);
66920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
66930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument counterSize
66940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_counterSize = glmsg.add_args();
66950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_counterSize->set_isarray(false);
66960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_counterSize->set_type(GLMessage::DataType::INT);
66970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_counterSize->add_intvalue(counterSize);
66980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
66990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument counters
67000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_counters = glmsg.add_args();
67010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_counters->set_isarray(false);
67020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_counters->set_type(GLMessage::DataType::INT);
67030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_counters->add_intvalue((int)counters);
67040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
67050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
670605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
670705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
67080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetPerfMonitorCountersAMD(group, numCounters, maxActiveCounters, counterSize, counters);
670905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
671005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
67110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
67129801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
67139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) numCounters,
67149801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) maxActiveCounters,
67159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) counters,
67169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
67179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
671805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
671905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
67209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
672193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
67220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
67230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
67240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetPerfMonitorGroupStringAMD(GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString) {
67250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
67260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
67270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
67280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetPerfMonitorGroupStringAMD);
67290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
67300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument group
67310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_group = glmsg.add_args();
67320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_group->set_isarray(false);
67330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_group->set_type(GLMessage::DataType::INT);
67340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_group->add_intvalue(group);
67350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
67360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument bufSize
67370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_bufSize = glmsg.add_args();
67380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufSize->set_isarray(false);
67390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufSize->set_type(GLMessage::DataType::INT);
67400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufSize->add_intvalue(bufSize);
67410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
67420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument length
67430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_length = glmsg.add_args();
67440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_isarray(false);
67450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_type(GLMessage::DataType::INT);
67460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->add_intvalue((int)length);
67470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
67480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument groupString
67490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_groupString = glmsg.add_args();
67500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_groupString->set_isarray(false);
67510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_groupString->set_type(GLMessage::DataType::INT);
67520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_groupString->add_intvalue((int)groupString);
67530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
67540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
675505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
675605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
67570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetPerfMonitorGroupStringAMD(group, bufSize, length, groupString);
675805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
675905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
67600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
67619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
67629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) length,
67639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) groupString,
67649801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
67659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
676605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
676705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
67689801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
676993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
67700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
67710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
67720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetPerfMonitorCounterStringAMD(GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString) {
67730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
67740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
67750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
67760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetPerfMonitorCounterStringAMD);
67770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
67780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument group
67790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_group = glmsg.add_args();
67800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_group->set_isarray(false);
67810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_group->set_type(GLMessage::DataType::INT);
67820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_group->add_intvalue(group);
67830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
67840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument counter
67850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_counter = glmsg.add_args();
67860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_counter->set_isarray(false);
67870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_counter->set_type(GLMessage::DataType::INT);
67880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_counter->add_intvalue(counter);
67890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
67900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument bufSize
67910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_bufSize = glmsg.add_args();
67920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufSize->set_isarray(false);
67930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufSize->set_type(GLMessage::DataType::INT);
67940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufSize->add_intvalue(bufSize);
67950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
67960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument length
67970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_length = glmsg.add_args();
67980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_isarray(false);
67990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_type(GLMessage::DataType::INT);
68000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->add_intvalue((int)length);
68010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
68020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument counterString
68030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_counterString = glmsg.add_args();
68040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_counterString->set_isarray(false);
68050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_counterString->set_type(GLMessage::DataType::INT);
68060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_counterString->add_intvalue((int)counterString);
68070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
68080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
680905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
681005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
68110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetPerfMonitorCounterStringAMD(group, counter, bufSize, length, counterString);
681205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
681305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
68140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
68159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
68169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) length,
68179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) counterString,
68189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
68199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
682005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
682105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
68229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
682393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
68240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
68250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
68260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetPerfMonitorCounterInfoAMD(GLuint group, GLuint counter, GLenum pname, GLvoid *data) {
68270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
68280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
68290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
68300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetPerfMonitorCounterInfoAMD);
68310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
68320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument group
68330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_group = glmsg.add_args();
68340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_group->set_isarray(false);
68350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_group->set_type(GLMessage::DataType::INT);
68360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_group->add_intvalue(group);
68370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
68380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument counter
68390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_counter = glmsg.add_args();
68400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_counter->set_isarray(false);
68410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_counter->set_type(GLMessage::DataType::INT);
68420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_counter->add_intvalue(counter);
68430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
68440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
68450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
68460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
68470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
68480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
68490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
68500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument data
68510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_data = glmsg.add_args();
68520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_data->set_isarray(false);
68530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_data->set_type(GLMessage::DataType::INT);
68540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_data->add_intvalue((int)data);
68550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
68560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
685705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
685805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
68590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetPerfMonitorCounterInfoAMD(group, counter, pname, data);
686005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
686105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
68620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
68639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
68649801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) data,
68659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
68669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
686705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
686805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
68699801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
687093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
68710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
68720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
68730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGenPerfMonitorsAMD(GLsizei n, GLuint *monitors) {
68740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
68750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
68760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
68770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGenPerfMonitorsAMD);
68780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
68790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument n
68800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_n = glmsg.add_args();
68810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_isarray(false);
68820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_type(GLMessage::DataType::INT);
68830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->add_intvalue(n);
68840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
68850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument monitors
68860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_monitors = glmsg.add_args();
68870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitors->set_isarray(false);
68880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitors->set_type(GLMessage::DataType::INT);
68890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitors->add_intvalue((int)monitors);
68900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
68910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
689205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
689305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
68940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGenPerfMonitorsAMD(n, monitors);
689505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
689605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
68970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
68989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
68999801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) monitors,
69009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
69019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
690205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
690305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
69049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
690593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
69060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
69070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
69080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDeletePerfMonitorsAMD(GLsizei n, GLuint *monitors) {
69090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
69100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
69110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
69120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDeletePerfMonitorsAMD);
69130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
69140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument n
69150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_n = glmsg.add_args();
69160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_isarray(false);
69170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_type(GLMessage::DataType::INT);
69180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->add_intvalue(n);
69190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
69200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument monitors
69210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_monitors = glmsg.add_args();
69220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitors->set_isarray(false);
69230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitors->set_type(GLMessage::DataType::INT);
69240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitors->add_intvalue((int)monitors);
69250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
69260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
692705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
692805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
69290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDeletePerfMonitorsAMD(n, monitors);
693005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
693105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
69320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
69339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
69349801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) monitors,
69359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
69369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
693705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
693805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
69399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
694093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
69410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
69420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
69430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glSelectPerfMonitorCountersAMD(GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList) {
69440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
69450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
69460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
69470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glSelectPerfMonitorCountersAMD);
69480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
69490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument monitor
69500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_monitor = glmsg.add_args();
69510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitor->set_isarray(false);
69520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitor->set_type(GLMessage::DataType::INT);
69530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitor->add_intvalue(monitor);
69540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
69550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument enable
69560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_enable = glmsg.add_args();
69570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_enable->set_isarray(false);
69580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_enable->set_type(GLMessage::DataType::BOOL);
69590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_enable->add_boolvalue(enable);
69600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
69610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument group
69620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_group = glmsg.add_args();
69630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_group->set_isarray(false);
69640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_group->set_type(GLMessage::DataType::INT);
69650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_group->add_intvalue(group);
69660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
69670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument numCounters
69680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_numCounters = glmsg.add_args();
69690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numCounters->set_isarray(false);
69700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numCounters->set_type(GLMessage::DataType::INT);
69710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numCounters->add_intvalue(numCounters);
69720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
69730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument countersList
69740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_countersList = glmsg.add_args();
69750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_countersList->set_isarray(false);
69760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_countersList->set_type(GLMessage::DataType::INT);
69770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_countersList->add_intvalue((int)countersList);
69780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
69790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
698005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
698105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
69820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glSelectPerfMonitorCountersAMD(monitor, enable, group, numCounters, countersList);
698305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
698405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
69850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
69869801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
69879801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) countersList,
69889801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
69899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
699005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
699105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
69929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
699393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
69940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
69950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
69960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glBeginPerfMonitorAMD(GLuint monitor) {
69970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
69980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
69990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
70000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glBeginPerfMonitorAMD);
70010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
70020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument monitor
70030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_monitor = glmsg.add_args();
70040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitor->set_isarray(false);
70050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitor->set_type(GLMessage::DataType::INT);
70060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitor->add_intvalue(monitor);
70070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
70080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
700905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
701005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
70110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glBeginPerfMonitorAMD(monitor);
701205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
701305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
70140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
70159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
70169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
70179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
701805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
701905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
70209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
702193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
70220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
70230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
70240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glEndPerfMonitorAMD(GLuint monitor) {
70250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
70260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
70270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
70280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glEndPerfMonitorAMD);
70290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
70300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument monitor
70310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_monitor = glmsg.add_args();
70320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitor->set_isarray(false);
70330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitor->set_type(GLMessage::DataType::INT);
70340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitor->add_intvalue(monitor);
70350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
70360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
703705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
703805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
70390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glEndPerfMonitorAMD(monitor);
704005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
704105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
70420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
70439801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
70449801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
70459801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
704605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
704705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
70489801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
704993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
70500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
70510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
70520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetPerfMonitorCounterDataAMD(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten) {
70530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
70540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
70550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
70560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetPerfMonitorCounterDataAMD);
70570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
70580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument monitor
70590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_monitor = glmsg.add_args();
70600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitor->set_isarray(false);
70610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitor->set_type(GLMessage::DataType::INT);
70620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_monitor->add_intvalue(monitor);
70630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
70640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
70650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
70660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
70670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
70680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
70690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
70700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument dataSize
70710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_dataSize = glmsg.add_args();
70720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_dataSize->set_isarray(false);
70730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_dataSize->set_type(GLMessage::DataType::INT);
70740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_dataSize->add_intvalue(dataSize);
70750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
70760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument data
70770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_data = glmsg.add_args();
70780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_data->set_isarray(false);
70790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_data->set_type(GLMessage::DataType::INT);
70800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_data->add_intvalue((int)data);
70810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
70820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument bytesWritten
70830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_bytesWritten = glmsg.add_args();
70840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bytesWritten->set_isarray(false);
70850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bytesWritten->set_type(GLMessage::DataType::INT);
70860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bytesWritten->add_intvalue((int)bytesWritten);
70870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
70880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
708905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
709005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
70910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetPerfMonitorCounterDataAMD(monitor, pname, dataSize, data, bytesWritten);
709205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
709305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
70940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
70959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
70969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) data,
70979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) bytesWritten,
70989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
70999801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
710005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
710105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
71029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
710393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
71040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
71050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
710631272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glBlitFramebufferANGLE(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) {
710731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
710831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
710931272606149d83437a097800074b21e9e6a205adMathias Agopian
711031272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glBlitFramebufferANGLE);
711131272606149d83437a097800074b21e9e6a205adMathias Agopian
711231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument srcX0
711331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_srcX0 = glmsg.add_args();
711431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_srcX0->set_isarray(false);
711531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_srcX0->set_type(GLMessage::DataType::INT);
711631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_srcX0->add_intvalue(srcX0);
711731272606149d83437a097800074b21e9e6a205adMathias Agopian
711831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument srcY0
711931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_srcY0 = glmsg.add_args();
712031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_srcY0->set_isarray(false);
712131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_srcY0->set_type(GLMessage::DataType::INT);
712231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_srcY0->add_intvalue(srcY0);
712331272606149d83437a097800074b21e9e6a205adMathias Agopian
712431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument srcX1
712531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_srcX1 = glmsg.add_args();
712631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_srcX1->set_isarray(false);
712731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_srcX1->set_type(GLMessage::DataType::INT);
712831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_srcX1->add_intvalue(srcX1);
712931272606149d83437a097800074b21e9e6a205adMathias Agopian
713031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument srcY1
713131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_srcY1 = glmsg.add_args();
713231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_srcY1->set_isarray(false);
713331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_srcY1->set_type(GLMessage::DataType::INT);
713431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_srcY1->add_intvalue(srcY1);
713531272606149d83437a097800074b21e9e6a205adMathias Agopian
713631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument dstX0
713731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_dstX0 = glmsg.add_args();
713831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_dstX0->set_isarray(false);
713931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_dstX0->set_type(GLMessage::DataType::INT);
714031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_dstX0->add_intvalue(dstX0);
714131272606149d83437a097800074b21e9e6a205adMathias Agopian
714231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument dstY0
714331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_dstY0 = glmsg.add_args();
714431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_dstY0->set_isarray(false);
714531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_dstY0->set_type(GLMessage::DataType::INT);
714631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_dstY0->add_intvalue(dstY0);
714731272606149d83437a097800074b21e9e6a205adMathias Agopian
714831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument dstX1
714931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_dstX1 = glmsg.add_args();
715031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_dstX1->set_isarray(false);
715131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_dstX1->set_type(GLMessage::DataType::INT);
715231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_dstX1->add_intvalue(dstX1);
715331272606149d83437a097800074b21e9e6a205adMathias Agopian
715431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument dstY1
715531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_dstY1 = glmsg.add_args();
715631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_dstY1->set_isarray(false);
715731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_dstY1->set_type(GLMessage::DataType::INT);
715831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_dstY1->add_intvalue(dstY1);
715931272606149d83437a097800074b21e9e6a205adMathias Agopian
716031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument mask
716131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_mask = glmsg.add_args();
716231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_mask->set_isarray(false);
716331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_mask->set_type(GLMessage::DataType::INT);
716431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_mask->add_intvalue(mask);
716531272606149d83437a097800074b21e9e6a205adMathias Agopian
716631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument filter
716731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_filter = glmsg.add_args();
716831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_filter->set_isarray(false);
716931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_filter->set_type(GLMessage::DataType::ENUM);
717031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_filter->add_intvalue((int)filter);
717131272606149d83437a097800074b21e9e6a205adMathias Agopian
717231272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
717305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
717405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
717531272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glBlitFramebufferANGLE(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
717605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
717705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
717831272606149d83437a097800074b21e9e6a205adMathias Agopian
71799801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
71809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
71819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
718205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
718305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
71849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
718531272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
718631272606149d83437a097800074b21e9e6a205adMathias Agopian}
718731272606149d83437a097800074b21e9e6a205adMathias Agopian
718831272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glRenderbufferStorageMultisampleANGLE(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
718931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
719031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
719131272606149d83437a097800074b21e9e6a205adMathias Agopian
719231272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glRenderbufferStorageMultisampleANGLE);
719331272606149d83437a097800074b21e9e6a205adMathias Agopian
719431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument target
719531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_target = glmsg.add_args();
719631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_isarray(false);
719731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_type(GLMessage::DataType::ENUM);
719831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->add_intvalue((int)target);
719931272606149d83437a097800074b21e9e6a205adMathias Agopian
720031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument samples
720131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_samples = glmsg.add_args();
720231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_samples->set_isarray(false);
720331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_samples->set_type(GLMessage::DataType::INT);
720431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_samples->add_intvalue(samples);
720531272606149d83437a097800074b21e9e6a205adMathias Agopian
720631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument internalformat
720731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_internalformat = glmsg.add_args();
720831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_isarray(false);
720931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_type(GLMessage::DataType::ENUM);
721031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->add_intvalue((int)internalformat);
721131272606149d83437a097800074b21e9e6a205adMathias Agopian
721231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument width
721331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_width = glmsg.add_args();
721431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_isarray(false);
721531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_type(GLMessage::DataType::INT);
721631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->add_intvalue(width);
721731272606149d83437a097800074b21e9e6a205adMathias Agopian
721831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument height
721931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_height = glmsg.add_args();
722031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_isarray(false);
722131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_type(GLMessage::DataType::INT);
722231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->add_intvalue(height);
722331272606149d83437a097800074b21e9e6a205adMathias Agopian
722431272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
722505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
722605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
722731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glRenderbufferStorageMultisampleANGLE(target, samples, internalformat, width, height);
722805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
722905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
723031272606149d83437a097800074b21e9e6a205adMathias Agopian
72319801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
72329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
72339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
723405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
723505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
72369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
723731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
723831272606149d83437a097800074b21e9e6a205adMathias Agopian}
723931272606149d83437a097800074b21e9e6a205adMathias Agopian
724031272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glRenderbufferStorageMultisampleAPPLE(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
724131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
724231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
724331272606149d83437a097800074b21e9e6a205adMathias Agopian
724431272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glRenderbufferStorageMultisampleAPPLE);
724531272606149d83437a097800074b21e9e6a205adMathias Agopian
724631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument target
724731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_target = glmsg.add_args();
724831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_isarray(false);
724931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_type(GLMessage::DataType::ENUM);
725031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->add_intvalue((int)target);
725131272606149d83437a097800074b21e9e6a205adMathias Agopian
725231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument samples
725331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_samples = glmsg.add_args();
725431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_samples->set_isarray(false);
725531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_samples->set_type(GLMessage::DataType::INT);
725631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_samples->add_intvalue(samples);
725731272606149d83437a097800074b21e9e6a205adMathias Agopian
725831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument internalformat
725931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_internalformat = glmsg.add_args();
726031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_isarray(false);
726131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_type(GLMessage::DataType::ENUM);
726231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->add_intvalue((int)internalformat);
726331272606149d83437a097800074b21e9e6a205adMathias Agopian
726431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument width
726531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_width = glmsg.add_args();
726631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_isarray(false);
726731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_type(GLMessage::DataType::INT);
726831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->add_intvalue(width);
726931272606149d83437a097800074b21e9e6a205adMathias Agopian
727031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument height
727131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_height = glmsg.add_args();
727231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_isarray(false);
727331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_type(GLMessage::DataType::INT);
727431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->add_intvalue(height);
727531272606149d83437a097800074b21e9e6a205adMathias Agopian
727631272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
727705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
727805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
727931272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glRenderbufferStorageMultisampleAPPLE(target, samples, internalformat, width, height);
728005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
728105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
728231272606149d83437a097800074b21e9e6a205adMathias Agopian
72839801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
72849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
72859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
728605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
728705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
72889801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
728931272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
729031272606149d83437a097800074b21e9e6a205adMathias Agopian}
729131272606149d83437a097800074b21e9e6a205adMathias Agopian
729231272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glResolveMultisampleFramebufferAPPLE(void) {
729331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
729431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
729531272606149d83437a097800074b21e9e6a205adMathias Agopian
729631272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glResolveMultisampleFramebufferAPPLE);
729731272606149d83437a097800074b21e9e6a205adMathias Agopian
729831272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
729905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
730005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
730131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glResolveMultisampleFramebufferAPPLE();
730205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
730305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
730431272606149d83437a097800074b21e9e6a205adMathias Agopian
73059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
73069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
73079801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
730805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
730905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
73109801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
731131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
731231272606149d83437a097800074b21e9e6a205adMathias Agopian}
731331272606149d83437a097800074b21e9e6a205adMathias Agopian
731431272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glLabelObjectEXT(GLenum type, GLuint object, GLsizei length, const GLchar *label) {
731531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
731631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
731731272606149d83437a097800074b21e9e6a205adMathias Agopian
731831272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glLabelObjectEXT);
731931272606149d83437a097800074b21e9e6a205adMathias Agopian
732031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument type
732131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_type = glmsg.add_args();
732231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_type->set_isarray(false);
732331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_type->set_type(GLMessage::DataType::ENUM);
732431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_type->add_intvalue((int)type);
732531272606149d83437a097800074b21e9e6a205adMathias Agopian
732631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument object
732731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_object = glmsg.add_args();
732831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_object->set_isarray(false);
732931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_object->set_type(GLMessage::DataType::INT);
733031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_object->add_intvalue(object);
733131272606149d83437a097800074b21e9e6a205adMathias Agopian
733231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument length
733331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_length = glmsg.add_args();
733431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_length->set_isarray(false);
733531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_length->set_type(GLMessage::DataType::INT);
733631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_length->add_intvalue(length);
733731272606149d83437a097800074b21e9e6a205adMathias Agopian
733831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument label
733931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_label = glmsg.add_args();
734031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_label->set_isarray(false);
734131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_label->set_type(GLMessage::DataType::INT);
734231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_label->add_intvalue((int)label);
734331272606149d83437a097800074b21e9e6a205adMathias Agopian
734431272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
734505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
734605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
734731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glLabelObjectEXT(type, object, length, label);
734805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
734905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
735031272606149d83437a097800074b21e9e6a205adMathias Agopian
73519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
73529801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) label,
73539801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
73549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
735505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
735605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
73579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
735831272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
735931272606149d83437a097800074b21e9e6a205adMathias Agopian}
736031272606149d83437a097800074b21e9e6a205adMathias Agopian
736131272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glGetObjectLabelEXT(GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label) {
736231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
736331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
736431272606149d83437a097800074b21e9e6a205adMathias Agopian
736531272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glGetObjectLabelEXT);
736631272606149d83437a097800074b21e9e6a205adMathias Agopian
736731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument type
736831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_type = glmsg.add_args();
736931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_type->set_isarray(false);
737031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_type->set_type(GLMessage::DataType::ENUM);
737131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_type->add_intvalue((int)type);
737231272606149d83437a097800074b21e9e6a205adMathias Agopian
737331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument object
737431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_object = glmsg.add_args();
737531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_object->set_isarray(false);
737631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_object->set_type(GLMessage::DataType::INT);
737731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_object->add_intvalue(object);
737831272606149d83437a097800074b21e9e6a205adMathias Agopian
737931272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument bufSize
738031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_bufSize = glmsg.add_args();
738131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufSize->set_isarray(false);
738231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufSize->set_type(GLMessage::DataType::INT);
738331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufSize->add_intvalue(bufSize);
738431272606149d83437a097800074b21e9e6a205adMathias Agopian
738531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument length
738631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_length = glmsg.add_args();
738731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_length->set_isarray(false);
738831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_length->set_type(GLMessage::DataType::INT);
738931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_length->add_intvalue((int)length);
739031272606149d83437a097800074b21e9e6a205adMathias Agopian
739131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument label
739231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_label = glmsg.add_args();
739331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_label->set_isarray(false);
739431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_label->set_type(GLMessage::DataType::INT);
739531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_label->add_intvalue((int)label);
739631272606149d83437a097800074b21e9e6a205adMathias Agopian
739731272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
739805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
739905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
740031272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glGetObjectLabelEXT(type, object, bufSize, length, label);
740105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
740205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
740331272606149d83437a097800074b21e9e6a205adMathias Agopian
74049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
74059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) length,
74069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) label,
74079801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
74089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
740905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
741005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
74119801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
741231272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
741331272606149d83437a097800074b21e9e6a205adMathias Agopian}
741431272606149d83437a097800074b21e9e6a205adMathias Agopian
741531272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glInsertEventMarkerEXT(GLsizei length, const GLchar *marker) {
741631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
741731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
741831272606149d83437a097800074b21e9e6a205adMathias Agopian
741931272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glInsertEventMarkerEXT);
742031272606149d83437a097800074b21e9e6a205adMathias Agopian
742131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument length
742231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_length = glmsg.add_args();
742331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_length->set_isarray(false);
742431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_length->set_type(GLMessage::DataType::INT);
742531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_length->add_intvalue(length);
742631272606149d83437a097800074b21e9e6a205adMathias Agopian
742731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument marker
742831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_marker = glmsg.add_args();
742931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_marker->set_isarray(false);
743031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_marker->set_type(GLMessage::DataType::INT);
743131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_marker->add_intvalue((int)marker);
743231272606149d83437a097800074b21e9e6a205adMathias Agopian
743331272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
743405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
743505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
743631272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glInsertEventMarkerEXT(length, marker);
743705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
743805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
743931272606149d83437a097800074b21e9e6a205adMathias Agopian
74409801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
74419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) marker,
74429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
74439801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
744405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
744505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
74469801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
744731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
744831272606149d83437a097800074b21e9e6a205adMathias Agopian}
744931272606149d83437a097800074b21e9e6a205adMathias Agopian
745031272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glPushGroupMarkerEXT(GLsizei length, const GLchar *marker) {
745131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
745231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
745331272606149d83437a097800074b21e9e6a205adMathias Agopian
745431272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glPushGroupMarkerEXT);
745531272606149d83437a097800074b21e9e6a205adMathias Agopian
745631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument length
745731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_length = glmsg.add_args();
745831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_length->set_isarray(false);
745931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_length->set_type(GLMessage::DataType::INT);
746031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_length->add_intvalue(length);
746131272606149d83437a097800074b21e9e6a205adMathias Agopian
746231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument marker
746331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_marker = glmsg.add_args();
746431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_marker->set_isarray(false);
746531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_marker->set_type(GLMessage::DataType::INT);
746631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_marker->add_intvalue((int)marker);
746731272606149d83437a097800074b21e9e6a205adMathias Agopian
746831272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
746905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
747005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
747131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glPushGroupMarkerEXT(length, marker);
747205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
747305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
747431272606149d83437a097800074b21e9e6a205adMathias Agopian
74759801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
74769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) marker,
74779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
74789801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
747905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
748005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
74819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
748231272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
748331272606149d83437a097800074b21e9e6a205adMathias Agopian}
748431272606149d83437a097800074b21e9e6a205adMathias Agopian
748531272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glPopGroupMarkerEXT(void) {
748631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
748731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
748831272606149d83437a097800074b21e9e6a205adMathias Agopian
748931272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glPopGroupMarkerEXT);
749031272606149d83437a097800074b21e9e6a205adMathias Agopian
749131272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
749205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
749305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
749431272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glPopGroupMarkerEXT();
749505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
749605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
749731272606149d83437a097800074b21e9e6a205adMathias Agopian
74989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
74999801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
75009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
750105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
750205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
75039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
750431272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
750531272606149d83437a097800074b21e9e6a205adMathias Agopian}
750631272606149d83437a097800074b21e9e6a205adMathias Agopian
75070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDiscardFramebufferEXT(GLenum target, GLsizei numAttachments, const GLenum *attachments) {
75080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
75090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
75100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
751131272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glDiscardFramebufferEXT);
751231272606149d83437a097800074b21e9e6a205adMathias Agopian
751331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument target
751431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_target = glmsg.add_args();
751531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_isarray(false);
751631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_type(GLMessage::DataType::ENUM);
751731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->add_intvalue((int)target);
751831272606149d83437a097800074b21e9e6a205adMathias Agopian
751931272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument numAttachments
752031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_numAttachments = glmsg.add_args();
752131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_numAttachments->set_isarray(false);
752231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_numAttachments->set_type(GLMessage::DataType::INT);
752331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_numAttachments->add_intvalue(numAttachments);
752431272606149d83437a097800074b21e9e6a205adMathias Agopian
752531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument attachments
752631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_attachments = glmsg.add_args();
752731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_attachments->set_isarray(false);
752831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_attachments->set_type(GLMessage::DataType::INT);
752931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_attachments->add_intvalue((int)attachments);
753031272606149d83437a097800074b21e9e6a205adMathias Agopian
753131272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
753205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
753305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
753431272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glDiscardFramebufferEXT(target, numAttachments, attachments);
753505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
753605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
753731272606149d83437a097800074b21e9e6a205adMathias Agopian
75389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
75399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) attachments,
75409801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
75419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
754205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
754305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
75449801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
754531272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
754631272606149d83437a097800074b21e9e6a205adMathias Agopian}
754731272606149d83437a097800074b21e9e6a205adMathias Agopian
754831272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glRenderbufferStorageMultisampleEXT(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
754931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
755031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
755131272606149d83437a097800074b21e9e6a205adMathias Agopian
755231272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glRenderbufferStorageMultisampleEXT);
755331272606149d83437a097800074b21e9e6a205adMathias Agopian
755431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument target
755531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_target = glmsg.add_args();
755631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_isarray(false);
755731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_type(GLMessage::DataType::ENUM);
755831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->add_intvalue((int)target);
755931272606149d83437a097800074b21e9e6a205adMathias Agopian
756031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument samples
756131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_samples = glmsg.add_args();
756231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_samples->set_isarray(false);
756331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_samples->set_type(GLMessage::DataType::INT);
756431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_samples->add_intvalue(samples);
756531272606149d83437a097800074b21e9e6a205adMathias Agopian
756631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument internalformat
756731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_internalformat = glmsg.add_args();
756831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_isarray(false);
756931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_type(GLMessage::DataType::ENUM);
757031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->add_intvalue((int)internalformat);
757131272606149d83437a097800074b21e9e6a205adMathias Agopian
757231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument width
757331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_width = glmsg.add_args();
757431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_isarray(false);
757531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_type(GLMessage::DataType::INT);
757631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->add_intvalue(width);
757731272606149d83437a097800074b21e9e6a205adMathias Agopian
757831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument height
757931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_height = glmsg.add_args();
758031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_isarray(false);
758131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_type(GLMessage::DataType::INT);
758231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->add_intvalue(height);
758331272606149d83437a097800074b21e9e6a205adMathias Agopian
758431272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
758505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
758605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
758731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glRenderbufferStorageMultisampleEXT(target, samples, internalformat, width, height);
758805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
758905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
759031272606149d83437a097800074b21e9e6a205adMathias Agopian
75919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
75929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
75939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
759405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
759505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
75969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
759731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
759831272606149d83437a097800074b21e9e6a205adMathias Agopian}
759931272606149d83437a097800074b21e9e6a205adMathias Agopian
760031272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glFramebufferTexture2DMultisampleEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples) {
760131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
760231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
760331272606149d83437a097800074b21e9e6a205adMathias Agopian
760431272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glFramebufferTexture2DMultisampleEXT);
760531272606149d83437a097800074b21e9e6a205adMathias Agopian
760631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument target
760731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_target = glmsg.add_args();
760831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_isarray(false);
760931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_type(GLMessage::DataType::ENUM);
761031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->add_intvalue((int)target);
761131272606149d83437a097800074b21e9e6a205adMathias Agopian
761231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument attachment
761331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_attachment = glmsg.add_args();
761431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_attachment->set_isarray(false);
761531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_attachment->set_type(GLMessage::DataType::ENUM);
761631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_attachment->add_intvalue((int)attachment);
761731272606149d83437a097800074b21e9e6a205adMathias Agopian
761831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument textarget
761931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_textarget = glmsg.add_args();
762031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_textarget->set_isarray(false);
762131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_textarget->set_type(GLMessage::DataType::ENUM);
762231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_textarget->add_intvalue((int)textarget);
762331272606149d83437a097800074b21e9e6a205adMathias Agopian
762431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument texture
762531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_texture = glmsg.add_args();
762631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_texture->set_isarray(false);
762731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_texture->set_type(GLMessage::DataType::INT);
762831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_texture->add_intvalue(texture);
762931272606149d83437a097800074b21e9e6a205adMathias Agopian
763031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument level
763131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_level = glmsg.add_args();
763231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_level->set_isarray(false);
763331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_level->set_type(GLMessage::DataType::INT);
763431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_level->add_intvalue(level);
763531272606149d83437a097800074b21e9e6a205adMathias Agopian
763631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument samples
763731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_samples = glmsg.add_args();
763831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_samples->set_isarray(false);
763931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_samples->set_type(GLMessage::DataType::INT);
764031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_samples->add_intvalue(samples);
764131272606149d83437a097800074b21e9e6a205adMathias Agopian
764231272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
764305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
764405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
764531272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glFramebufferTexture2DMultisampleEXT(target, attachment, textarget, texture, level, samples);
764605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
764705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
764831272606149d83437a097800074b21e9e6a205adMathias Agopian
76499801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
76509801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
76519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
765205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
765305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
76549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
765531272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
765631272606149d83437a097800074b21e9e6a205adMathias Agopian}
765731272606149d83437a097800074b21e9e6a205adMathias Agopian
765831272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glMultiDrawArraysEXT(GLenum mode, GLint *first, GLsizei *count, GLsizei primcount) {
765931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
766031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
766131272606149d83437a097800074b21e9e6a205adMathias Agopian
766231272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glMultiDrawArraysEXT);
766331272606149d83437a097800074b21e9e6a205adMathias Agopian
766431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument mode
766531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_mode = glmsg.add_args();
766631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_mode->set_isarray(false);
766731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_mode->set_type(GLMessage::DataType::ENUM);
766831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_mode->add_intvalue((int)mode);
766931272606149d83437a097800074b21e9e6a205adMathias Agopian
767031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument first
767131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_first = glmsg.add_args();
767231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_first->set_isarray(false);
767331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_first->set_type(GLMessage::DataType::INT);
767431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_first->add_intvalue((int)first);
767531272606149d83437a097800074b21e9e6a205adMathias Agopian
767631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument count
767731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_count = glmsg.add_args();
767831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_isarray(false);
767931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_type(GLMessage::DataType::INT);
768031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->add_intvalue((int)count);
768131272606149d83437a097800074b21e9e6a205adMathias Agopian
768231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument primcount
768331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_primcount = glmsg.add_args();
768431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_primcount->set_isarray(false);
768531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_primcount->set_type(GLMessage::DataType::INT);
768631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_primcount->add_intvalue(primcount);
768731272606149d83437a097800074b21e9e6a205adMathias Agopian
768831272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
768905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
769005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
769131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glMultiDrawArraysEXT(mode, first, count, primcount);
769205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
769305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
769431272606149d83437a097800074b21e9e6a205adMathias Agopian
76959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
76969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) first,
76979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) count,
76989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
76999801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
770005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
770105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
77029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
770331272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
770431272606149d83437a097800074b21e9e6a205adMathias Agopian}
770531272606149d83437a097800074b21e9e6a205adMathias Agopian
770631272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glMultiDrawElementsEXT(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount) {
770731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
770831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
770931272606149d83437a097800074b21e9e6a205adMathias Agopian
771031272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glMultiDrawElementsEXT);
771131272606149d83437a097800074b21e9e6a205adMathias Agopian
771231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument mode
771331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_mode = glmsg.add_args();
771431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_mode->set_isarray(false);
771531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_mode->set_type(GLMessage::DataType::ENUM);
771631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_mode->add_intvalue((int)mode);
771731272606149d83437a097800074b21e9e6a205adMathias Agopian
771831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument count
771931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_count = glmsg.add_args();
772031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_isarray(false);
772131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_type(GLMessage::DataType::INT);
772231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->add_intvalue((int)count);
772331272606149d83437a097800074b21e9e6a205adMathias Agopian
772431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument type
772531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_type = glmsg.add_args();
772631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_type->set_isarray(false);
772731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_type->set_type(GLMessage::DataType::ENUM);
772831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_type->add_intvalue((int)type);
772931272606149d83437a097800074b21e9e6a205adMathias Agopian
773031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument indices
773131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_indices = glmsg.add_args();
773231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_indices->set_isarray(false);
773331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_indices->set_type(GLMessage::DataType::INT);
773431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_indices->add_intvalue((int)indices);
773531272606149d83437a097800074b21e9e6a205adMathias Agopian
773631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument primcount
773731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_primcount = glmsg.add_args();
773831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_primcount->set_isarray(false);
773931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_primcount->set_type(GLMessage::DataType::INT);
774031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_primcount->add_intvalue(primcount);
774131272606149d83437a097800074b21e9e6a205adMathias Agopian
774231272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
774305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
774405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
774531272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glMultiDrawElementsEXT(mode, count, type, indices, primcount);
774605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
774705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
774831272606149d83437a097800074b21e9e6a205adMathias Agopian
77499801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
77509801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) count,
77519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) indices,
77529801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
77539801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
775405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
775505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
77569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
775731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
775831272606149d83437a097800074b21e9e6a205adMathias Agopian}
775931272606149d83437a097800074b21e9e6a205adMathias Agopian
776031272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glGenQueriesEXT(GLsizei n, GLuint *ids) {
776131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
776231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
776331272606149d83437a097800074b21e9e6a205adMathias Agopian
776431272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glGenQueriesEXT);
776531272606149d83437a097800074b21e9e6a205adMathias Agopian
776631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument n
776731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_n = glmsg.add_args();
776831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_n->set_isarray(false);
776931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_n->set_type(GLMessage::DataType::INT);
777031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_n->add_intvalue(n);
777131272606149d83437a097800074b21e9e6a205adMathias Agopian
777231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument ids
777331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_ids = glmsg.add_args();
777431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_ids->set_isarray(false);
777531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_ids->set_type(GLMessage::DataType::INT);
777631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_ids->add_intvalue((int)ids);
777731272606149d83437a097800074b21e9e6a205adMathias Agopian
777831272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
777905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
778005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
778131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glGenQueriesEXT(n, ids);
778205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
778305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
778431272606149d83437a097800074b21e9e6a205adMathias Agopian
77859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
77869801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) ids,
77879801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
77889801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
778905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
779005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
77919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
779231272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
779331272606149d83437a097800074b21e9e6a205adMathias Agopian}
779431272606149d83437a097800074b21e9e6a205adMathias Agopian
779531272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glDeleteQueriesEXT(GLsizei n, const GLuint *ids) {
779631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
779731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
779831272606149d83437a097800074b21e9e6a205adMathias Agopian
779931272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glDeleteQueriesEXT);
780031272606149d83437a097800074b21e9e6a205adMathias Agopian
780131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument n
780231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_n = glmsg.add_args();
780331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_n->set_isarray(false);
780431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_n->set_type(GLMessage::DataType::INT);
780531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_n->add_intvalue(n);
780631272606149d83437a097800074b21e9e6a205adMathias Agopian
780731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument ids
780831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_ids = glmsg.add_args();
780931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_ids->set_isarray(false);
781031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_ids->set_type(GLMessage::DataType::INT);
781131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_ids->add_intvalue((int)ids);
781231272606149d83437a097800074b21e9e6a205adMathias Agopian
781331272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
781405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
781505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
781631272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glDeleteQueriesEXT(n, ids);
781705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
781805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
781931272606149d83437a097800074b21e9e6a205adMathias Agopian
78209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
78219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) ids,
78229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
78239801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
782405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
782505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
78269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
782731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
782831272606149d83437a097800074b21e9e6a205adMathias Agopian}
782931272606149d83437a097800074b21e9e6a205adMathias Agopian
783031272606149d83437a097800074b21e9e6a205adMathias AgopianGLboolean GLTrace_glIsQueryEXT(GLuint id) {
783131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
783231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
783331272606149d83437a097800074b21e9e6a205adMathias Agopian
783431272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glIsQueryEXT);
783531272606149d83437a097800074b21e9e6a205adMathias Agopian
783631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument id
783731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_id = glmsg.add_args();
783831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_id->set_isarray(false);
783931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_id->set_type(GLMessage::DataType::INT);
784031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_id->add_intvalue(id);
784131272606149d83437a097800074b21e9e6a205adMathias Agopian
784231272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
784305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
784405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
784531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLboolean retValue = glContext->hooks->gl.glIsQueryEXT(id);
784605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
784705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
784831272606149d83437a097800074b21e9e6a205adMathias Agopian
784931272606149d83437a097800074b21e9e6a205adMathias Agopian    // set return value
785031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
785131272606149d83437a097800074b21e9e6a205adMathias Agopian    rt->set_isarray(false);
785231272606149d83437a097800074b21e9e6a205adMathias Agopian    rt->set_type(GLMessage::DataType::BOOL);
785331272606149d83437a097800074b21e9e6a205adMathias Agopian    rt->add_boolvalue(retValue);
785431272606149d83437a097800074b21e9e6a205adMathias Agopian
78559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
78569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
78579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
785805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
785905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
78609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
786131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
786231272606149d83437a097800074b21e9e6a205adMathias Agopian
786331272606149d83437a097800074b21e9e6a205adMathias Agopian    return retValue;
786431272606149d83437a097800074b21e9e6a205adMathias Agopian}
786531272606149d83437a097800074b21e9e6a205adMathias Agopian
786631272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glBeginQueryEXT(GLenum target, GLuint id) {
786731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
786831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
786931272606149d83437a097800074b21e9e6a205adMathias Agopian
787031272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glBeginQueryEXT);
787131272606149d83437a097800074b21e9e6a205adMathias Agopian
787231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument target
787331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_target = glmsg.add_args();
787431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_isarray(false);
787531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_type(GLMessage::DataType::ENUM);
787631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->add_intvalue((int)target);
787731272606149d83437a097800074b21e9e6a205adMathias Agopian
787831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument id
787931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_id = glmsg.add_args();
788031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_id->set_isarray(false);
788131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_id->set_type(GLMessage::DataType::INT);
788231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_id->add_intvalue(id);
788331272606149d83437a097800074b21e9e6a205adMathias Agopian
788431272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
788505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
788605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
788731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glBeginQueryEXT(target, id);
788805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
788905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
789031272606149d83437a097800074b21e9e6a205adMathias Agopian
78919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
78929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
78939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
789405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
789505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
78969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
789731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
789831272606149d83437a097800074b21e9e6a205adMathias Agopian}
789931272606149d83437a097800074b21e9e6a205adMathias Agopian
790031272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glEndQueryEXT(GLenum target) {
790131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
790231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
790331272606149d83437a097800074b21e9e6a205adMathias Agopian
790431272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glEndQueryEXT);
790531272606149d83437a097800074b21e9e6a205adMathias Agopian
790631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument target
790731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_target = glmsg.add_args();
790831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_isarray(false);
790931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_type(GLMessage::DataType::ENUM);
791031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->add_intvalue((int)target);
791131272606149d83437a097800074b21e9e6a205adMathias Agopian
791231272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
791305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
791405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
791531272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glEndQueryEXT(target);
791605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
791705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
791831272606149d83437a097800074b21e9e6a205adMathias Agopian
79199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
79209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
79219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
792205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
792305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
79249801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
792531272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
792631272606149d83437a097800074b21e9e6a205adMathias Agopian}
792731272606149d83437a097800074b21e9e6a205adMathias Agopian
792831272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glGetQueryivEXT(GLenum target, GLenum pname, GLint *params) {
792931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
793031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
793131272606149d83437a097800074b21e9e6a205adMathias Agopian
793231272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glGetQueryivEXT);
793331272606149d83437a097800074b21e9e6a205adMathias Agopian
793431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument target
793531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_target = glmsg.add_args();
793631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_isarray(false);
793731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_type(GLMessage::DataType::ENUM);
793831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->add_intvalue((int)target);
793931272606149d83437a097800074b21e9e6a205adMathias Agopian
794031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument pname
794131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_pname = glmsg.add_args();
794231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pname->set_isarray(false);
794331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pname->set_type(GLMessage::DataType::ENUM);
794431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pname->add_intvalue((int)pname);
794531272606149d83437a097800074b21e9e6a205adMathias Agopian
794631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument params
794731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_params = glmsg.add_args();
794831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_params->set_isarray(false);
794931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_params->set_type(GLMessage::DataType::INT);
795031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_params->add_intvalue((int)params);
795131272606149d83437a097800074b21e9e6a205adMathias Agopian
795231272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
795305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
795405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
795531272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glGetQueryivEXT(target, pname, params);
795605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
795705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
795831272606149d83437a097800074b21e9e6a205adMathias Agopian
79599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
79609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
79619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
79629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
796305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
796405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
79659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
796631272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
796731272606149d83437a097800074b21e9e6a205adMathias Agopian}
796831272606149d83437a097800074b21e9e6a205adMathias Agopian
796931272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glGetQueryObjectuivEXT(GLuint id, GLenum pname, GLuint *params) {
797031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
797131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
797231272606149d83437a097800074b21e9e6a205adMathias Agopian
797331272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glGetQueryObjectuivEXT);
797431272606149d83437a097800074b21e9e6a205adMathias Agopian
797531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument id
797631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_id = glmsg.add_args();
797731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_id->set_isarray(false);
797831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_id->set_type(GLMessage::DataType::INT);
797931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_id->add_intvalue(id);
798031272606149d83437a097800074b21e9e6a205adMathias Agopian
798131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument pname
798231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_pname = glmsg.add_args();
798331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pname->set_isarray(false);
798431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pname->set_type(GLMessage::DataType::ENUM);
798531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pname->add_intvalue((int)pname);
798631272606149d83437a097800074b21e9e6a205adMathias Agopian
798731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument params
798831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_params = glmsg.add_args();
798931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_params->set_isarray(false);
799031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_params->set_type(GLMessage::DataType::INT);
799131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_params->add_intvalue((int)params);
799231272606149d83437a097800074b21e9e6a205adMathias Agopian
799331272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
799405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
799505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
799631272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glGetQueryObjectuivEXT(id, pname, params);
799705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
799805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
799931272606149d83437a097800074b21e9e6a205adMathias Agopian
80009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
80019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
80029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
80039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
800405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
800505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
80069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
800731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
800831272606149d83437a097800074b21e9e6a205adMathias Agopian}
800931272606149d83437a097800074b21e9e6a205adMathias Agopian
801031272606149d83437a097800074b21e9e6a205adMathias AgopianGLenum GLTrace_glGetGraphicsResetStatusEXT(void) {
801131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
801231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
801331272606149d83437a097800074b21e9e6a205adMathias Agopian
801431272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glGetGraphicsResetStatusEXT);
801531272606149d83437a097800074b21e9e6a205adMathias Agopian
801631272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
801705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
801805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
801931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLenum retValue = glContext->hooks->gl.glGetGraphicsResetStatusEXT();
802005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
802105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
802231272606149d83437a097800074b21e9e6a205adMathias Agopian
802331272606149d83437a097800074b21e9e6a205adMathias Agopian    // set return value
802431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
802531272606149d83437a097800074b21e9e6a205adMathias Agopian    rt->set_isarray(false);
802631272606149d83437a097800074b21e9e6a205adMathias Agopian    rt->set_type(GLMessage::DataType::ENUM);
802731272606149d83437a097800074b21e9e6a205adMathias Agopian    rt->add_intvalue((int)retValue);
802831272606149d83437a097800074b21e9e6a205adMathias Agopian
80299801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
80309801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
80319801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
803205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
803305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
80349801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
803531272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
803631272606149d83437a097800074b21e9e6a205adMathias Agopian
803731272606149d83437a097800074b21e9e6a205adMathias Agopian    return retValue;
803831272606149d83437a097800074b21e9e6a205adMathias Agopian}
803931272606149d83437a097800074b21e9e6a205adMathias Agopian
804031272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glReadnPixelsEXT(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data) {
804131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
804231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
804331272606149d83437a097800074b21e9e6a205adMathias Agopian
804431272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glReadnPixelsEXT);
804531272606149d83437a097800074b21e9e6a205adMathias Agopian
804631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument x
804731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_x = glmsg.add_args();
804831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_isarray(false);
804931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_type(GLMessage::DataType::INT);
805031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->add_intvalue(x);
805131272606149d83437a097800074b21e9e6a205adMathias Agopian
805231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument y
805331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_y = glmsg.add_args();
805431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->set_isarray(false);
805531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->set_type(GLMessage::DataType::INT);
805631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->add_intvalue(y);
805731272606149d83437a097800074b21e9e6a205adMathias Agopian
805831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument width
805931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_width = glmsg.add_args();
806031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_isarray(false);
806131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_type(GLMessage::DataType::INT);
806231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->add_intvalue(width);
806331272606149d83437a097800074b21e9e6a205adMathias Agopian
806431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument height
806531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_height = glmsg.add_args();
806631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_isarray(false);
806731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_type(GLMessage::DataType::INT);
806831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->add_intvalue(height);
806931272606149d83437a097800074b21e9e6a205adMathias Agopian
807031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument format
807131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_format = glmsg.add_args();
807231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_format->set_isarray(false);
807331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_format->set_type(GLMessage::DataType::ENUM);
807431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_format->add_intvalue((int)format);
807531272606149d83437a097800074b21e9e6a205adMathias Agopian
807631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument type
807731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_type = glmsg.add_args();
807831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_type->set_isarray(false);
807931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_type->set_type(GLMessage::DataType::ENUM);
808031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_type->add_intvalue((int)type);
808131272606149d83437a097800074b21e9e6a205adMathias Agopian
808231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument bufSize
808331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_bufSize = glmsg.add_args();
808431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufSize->set_isarray(false);
808531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufSize->set_type(GLMessage::DataType::INT);
808631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufSize->add_intvalue(bufSize);
808731272606149d83437a097800074b21e9e6a205adMathias Agopian
808831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument data
808931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_data = glmsg.add_args();
809031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_data->set_isarray(false);
809131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_data->set_type(GLMessage::DataType::INT);
809231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_data->add_intvalue((int)data);
809331272606149d83437a097800074b21e9e6a205adMathias Agopian
809431272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
809505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
809605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
809731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glReadnPixelsEXT(x, y, width, height, format, type, bufSize, data);
809805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
809905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
810031272606149d83437a097800074b21e9e6a205adMathias Agopian
81019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
81029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) data,
81039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
81049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
810505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
810605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
81079801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
810831272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
810931272606149d83437a097800074b21e9e6a205adMathias Agopian}
811031272606149d83437a097800074b21e9e6a205adMathias Agopian
811131272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glGetnUniformfvEXT(GLuint program, GLint location, GLsizei bufSize, float *params) {
811231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
811331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
811431272606149d83437a097800074b21e9e6a205adMathias Agopian
811531272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glGetnUniformfvEXT);
811631272606149d83437a097800074b21e9e6a205adMathias Agopian
811731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
811831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
811931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
812031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
812131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
812231272606149d83437a097800074b21e9e6a205adMathias Agopian
812331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
812431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
812531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
812631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
812731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
812831272606149d83437a097800074b21e9e6a205adMathias Agopian
812931272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument bufSize
813031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_bufSize = glmsg.add_args();
813131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufSize->set_isarray(false);
813231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufSize->set_type(GLMessage::DataType::INT);
813331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufSize->add_intvalue(bufSize);
813431272606149d83437a097800074b21e9e6a205adMathias Agopian
813531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument params
813631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_params = glmsg.add_args();
813731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_params->set_isarray(false);
813831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_params->set_type(GLMessage::DataType::INT);
813931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_params->add_intvalue((int)params);
814031272606149d83437a097800074b21e9e6a205adMathias Agopian
814131272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
814205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
814305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
814431272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glGetnUniformfvEXT(program, location, bufSize, params);
814505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
814605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
814731272606149d83437a097800074b21e9e6a205adMathias Agopian
81489801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
81499801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
81509801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
81519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
815205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
815305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
81549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
815531272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
815631272606149d83437a097800074b21e9e6a205adMathias Agopian}
815731272606149d83437a097800074b21e9e6a205adMathias Agopian
815831272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glGetnUniformivEXT(GLuint program, GLint location, GLsizei bufSize, GLint *params) {
815931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
816031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
816131272606149d83437a097800074b21e9e6a205adMathias Agopian
816231272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glGetnUniformivEXT);
816331272606149d83437a097800074b21e9e6a205adMathias Agopian
816431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
816531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
816631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
816731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
816831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
816931272606149d83437a097800074b21e9e6a205adMathias Agopian
817031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
817131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
817231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
817331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
817431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
817531272606149d83437a097800074b21e9e6a205adMathias Agopian
817631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument bufSize
817731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_bufSize = glmsg.add_args();
817831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufSize->set_isarray(false);
817931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufSize->set_type(GLMessage::DataType::INT);
818031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufSize->add_intvalue(bufSize);
818131272606149d83437a097800074b21e9e6a205adMathias Agopian
818231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument params
818331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_params = glmsg.add_args();
818431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_params->set_isarray(false);
818531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_params->set_type(GLMessage::DataType::INT);
818631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_params->add_intvalue((int)params);
818731272606149d83437a097800074b21e9e6a205adMathias Agopian
818831272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
818905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
819005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
819131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glGetnUniformivEXT(program, location, bufSize, params);
819205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
819305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
819431272606149d83437a097800074b21e9e6a205adMathias Agopian
81959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
81969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
81979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
81989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
819905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
820005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
82019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
820231272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
820331272606149d83437a097800074b21e9e6a205adMathias Agopian}
820431272606149d83437a097800074b21e9e6a205adMathias Agopian
820531272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glUseProgramStagesEXT(GLuint pipeline, GLbitfield stages, GLuint program) {
820631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
820731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
820831272606149d83437a097800074b21e9e6a205adMathias Agopian
820931272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glUseProgramStagesEXT);
821031272606149d83437a097800074b21e9e6a205adMathias Agopian
821131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument pipeline
821231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_pipeline = glmsg.add_args();
821331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->set_isarray(false);
821431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->set_type(GLMessage::DataType::INT);
821531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->add_intvalue(pipeline);
821631272606149d83437a097800074b21e9e6a205adMathias Agopian
821731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument stages
821831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_stages = glmsg.add_args();
821931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_stages->set_isarray(false);
822031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_stages->set_type(GLMessage::DataType::INT);
822131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_stages->add_intvalue(stages);
822231272606149d83437a097800074b21e9e6a205adMathias Agopian
822331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
822431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
822531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
822631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
822731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
822831272606149d83437a097800074b21e9e6a205adMathias Agopian
822931272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
823005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
823105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
823231272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glUseProgramStagesEXT(pipeline, stages, program);
823305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
823405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
823531272606149d83437a097800074b21e9e6a205adMathias Agopian
82369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
82379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
82389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
823905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
824005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
82419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
824231272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
824331272606149d83437a097800074b21e9e6a205adMathias Agopian}
824431272606149d83437a097800074b21e9e6a205adMathias Agopian
824531272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glActiveShaderProgramEXT(GLuint pipeline, GLuint program) {
824631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
824731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
824831272606149d83437a097800074b21e9e6a205adMathias Agopian
824931272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glActiveShaderProgramEXT);
825031272606149d83437a097800074b21e9e6a205adMathias Agopian
825131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument pipeline
825231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_pipeline = glmsg.add_args();
825331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->set_isarray(false);
825431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->set_type(GLMessage::DataType::INT);
825531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->add_intvalue(pipeline);
825631272606149d83437a097800074b21e9e6a205adMathias Agopian
825731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
825831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
825931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
826031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
826131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
826231272606149d83437a097800074b21e9e6a205adMathias Agopian
826331272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
826405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
826505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
826631272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glActiveShaderProgramEXT(pipeline, program);
826705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
826805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
826931272606149d83437a097800074b21e9e6a205adMathias Agopian
82709801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
82719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
82729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
827305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
827405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
82759801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
827631272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
827731272606149d83437a097800074b21e9e6a205adMathias Agopian}
827831272606149d83437a097800074b21e9e6a205adMathias Agopian
827931272606149d83437a097800074b21e9e6a205adMathias AgopianGLuint GLTrace_glCreateShaderProgramvEXT(GLenum type, GLsizei count, const GLchar **strings) {
828031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
828131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
828231272606149d83437a097800074b21e9e6a205adMathias Agopian
828331272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glCreateShaderProgramvEXT);
828431272606149d83437a097800074b21e9e6a205adMathias Agopian
828531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument type
828631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_type = glmsg.add_args();
828731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_type->set_isarray(false);
828831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_type->set_type(GLMessage::DataType::ENUM);
828931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_type->add_intvalue((int)type);
829031272606149d83437a097800074b21e9e6a205adMathias Agopian
829131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument count
829231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_count = glmsg.add_args();
829331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_isarray(false);
829431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_type(GLMessage::DataType::INT);
829531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->add_intvalue(count);
829631272606149d83437a097800074b21e9e6a205adMathias Agopian
829731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument strings
829831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_strings = glmsg.add_args();
829931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_strings->set_isarray(false);
830031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_strings->set_type(GLMessage::DataType::INT);
830131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_strings->add_intvalue((int)strings);
830231272606149d83437a097800074b21e9e6a205adMathias Agopian
830331272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
830405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
830505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
830631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLuint retValue = glContext->hooks->gl.glCreateShaderProgramvEXT(type, count, strings);
830705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
830805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
830931272606149d83437a097800074b21e9e6a205adMathias Agopian
831031272606149d83437a097800074b21e9e6a205adMathias Agopian    // set return value
831131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
831231272606149d83437a097800074b21e9e6a205adMathias Agopian    rt->set_isarray(false);
831331272606149d83437a097800074b21e9e6a205adMathias Agopian    rt->set_type(GLMessage::DataType::INT);
831431272606149d83437a097800074b21e9e6a205adMathias Agopian    rt->add_intvalue(retValue);
831531272606149d83437a097800074b21e9e6a205adMathias Agopian
83169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
83179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) strings,
83189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
83199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
832005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
832105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
83229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
832331272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
832431272606149d83437a097800074b21e9e6a205adMathias Agopian
832531272606149d83437a097800074b21e9e6a205adMathias Agopian    return retValue;
832631272606149d83437a097800074b21e9e6a205adMathias Agopian}
832731272606149d83437a097800074b21e9e6a205adMathias Agopian
832831272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glBindProgramPipelineEXT(GLuint pipeline) {
832931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
833031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
833131272606149d83437a097800074b21e9e6a205adMathias Agopian
833231272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glBindProgramPipelineEXT);
833331272606149d83437a097800074b21e9e6a205adMathias Agopian
833431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument pipeline
833531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_pipeline = glmsg.add_args();
833631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->set_isarray(false);
833731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->set_type(GLMessage::DataType::INT);
833831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->add_intvalue(pipeline);
833931272606149d83437a097800074b21e9e6a205adMathias Agopian
834031272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
834105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
834205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
834331272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glBindProgramPipelineEXT(pipeline);
834405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
834505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
834631272606149d83437a097800074b21e9e6a205adMathias Agopian
83479801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
83489801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
83499801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
835005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
835105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
83529801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
835331272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
835431272606149d83437a097800074b21e9e6a205adMathias Agopian}
835531272606149d83437a097800074b21e9e6a205adMathias Agopian
835631272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glDeleteProgramPipelinesEXT(GLsizei n, const GLuint *pipelines) {
835731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
835831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
835931272606149d83437a097800074b21e9e6a205adMathias Agopian
836031272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glDeleteProgramPipelinesEXT);
836131272606149d83437a097800074b21e9e6a205adMathias Agopian
836231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument n
836331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_n = glmsg.add_args();
836431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_n->set_isarray(false);
836531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_n->set_type(GLMessage::DataType::INT);
836631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_n->add_intvalue(n);
836731272606149d83437a097800074b21e9e6a205adMathias Agopian
836831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument pipelines
836931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_pipelines = glmsg.add_args();
837031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipelines->set_isarray(false);
837131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipelines->set_type(GLMessage::DataType::INT);
837231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipelines->add_intvalue((int)pipelines);
837331272606149d83437a097800074b21e9e6a205adMathias Agopian
837431272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
837505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
837605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
837731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glDeleteProgramPipelinesEXT(n, pipelines);
837805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
837905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
838031272606149d83437a097800074b21e9e6a205adMathias Agopian
83819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
83829801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) pipelines,
83839801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
83849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
838505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
838605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
83879801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
838831272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
838931272606149d83437a097800074b21e9e6a205adMathias Agopian}
839031272606149d83437a097800074b21e9e6a205adMathias Agopian
839131272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glGenProgramPipelinesEXT(GLsizei n, GLuint *pipelines) {
839231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
839331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
839431272606149d83437a097800074b21e9e6a205adMathias Agopian
839531272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glGenProgramPipelinesEXT);
839631272606149d83437a097800074b21e9e6a205adMathias Agopian
839731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument n
839831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_n = glmsg.add_args();
839931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_n->set_isarray(false);
840031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_n->set_type(GLMessage::DataType::INT);
840131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_n->add_intvalue(n);
840231272606149d83437a097800074b21e9e6a205adMathias Agopian
840331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument pipelines
840431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_pipelines = glmsg.add_args();
840531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipelines->set_isarray(false);
840631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipelines->set_type(GLMessage::DataType::INT);
840731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipelines->add_intvalue((int)pipelines);
840831272606149d83437a097800074b21e9e6a205adMathias Agopian
840931272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
841005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
841105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
841231272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glGenProgramPipelinesEXT(n, pipelines);
841305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
841405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
841531272606149d83437a097800074b21e9e6a205adMathias Agopian
84169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
84179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) pipelines,
84189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
84199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
842005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
842105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
84229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
842331272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
842431272606149d83437a097800074b21e9e6a205adMathias Agopian}
842531272606149d83437a097800074b21e9e6a205adMathias Agopian
842631272606149d83437a097800074b21e9e6a205adMathias AgopianGLboolean GLTrace_glIsProgramPipelineEXT(GLuint pipeline) {
842731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
842831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
842931272606149d83437a097800074b21e9e6a205adMathias Agopian
843031272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glIsProgramPipelineEXT);
843131272606149d83437a097800074b21e9e6a205adMathias Agopian
843231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument pipeline
843331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_pipeline = glmsg.add_args();
843431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->set_isarray(false);
843531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->set_type(GLMessage::DataType::INT);
843631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->add_intvalue(pipeline);
843731272606149d83437a097800074b21e9e6a205adMathias Agopian
843831272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
843905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
844005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
844131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLboolean retValue = glContext->hooks->gl.glIsProgramPipelineEXT(pipeline);
844205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
844305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
844431272606149d83437a097800074b21e9e6a205adMathias Agopian
844531272606149d83437a097800074b21e9e6a205adMathias Agopian    // set return value
844631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
844731272606149d83437a097800074b21e9e6a205adMathias Agopian    rt->set_isarray(false);
844831272606149d83437a097800074b21e9e6a205adMathias Agopian    rt->set_type(GLMessage::DataType::BOOL);
844931272606149d83437a097800074b21e9e6a205adMathias Agopian    rt->add_boolvalue(retValue);
845031272606149d83437a097800074b21e9e6a205adMathias Agopian
84519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
84529801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
84539801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
845405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
845505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
84569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
845731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
845831272606149d83437a097800074b21e9e6a205adMathias Agopian
845931272606149d83437a097800074b21e9e6a205adMathias Agopian    return retValue;
846031272606149d83437a097800074b21e9e6a205adMathias Agopian}
846131272606149d83437a097800074b21e9e6a205adMathias Agopian
846231272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramParameteriEXT(GLuint program, GLenum pname, GLint value) {
846331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
846431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
846531272606149d83437a097800074b21e9e6a205adMathias Agopian
846631272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramParameteriEXT);
846731272606149d83437a097800074b21e9e6a205adMathias Agopian
846831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
846931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
847031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
847131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
847231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
847331272606149d83437a097800074b21e9e6a205adMathias Agopian
847431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument pname
847531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_pname = glmsg.add_args();
847631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pname->set_isarray(false);
847731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pname->set_type(GLMessage::DataType::ENUM);
847831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pname->add_intvalue((int)pname);
847931272606149d83437a097800074b21e9e6a205adMathias Agopian
848031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument value
848131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_value = glmsg.add_args();
848231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_isarray(false);
848331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_type(GLMessage::DataType::INT);
848431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->add_intvalue(value);
848531272606149d83437a097800074b21e9e6a205adMathias Agopian
848631272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
848705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
848805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
848931272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramParameteriEXT(program, pname, value);
849005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
849105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
849231272606149d83437a097800074b21e9e6a205adMathias Agopian
84939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
84949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
84959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
849605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
849705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
84989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
849931272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
850031272606149d83437a097800074b21e9e6a205adMathias Agopian}
850131272606149d83437a097800074b21e9e6a205adMathias Agopian
850231272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glGetProgramPipelineivEXT(GLuint pipeline, GLenum pname, GLint *params) {
850331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
850431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
850531272606149d83437a097800074b21e9e6a205adMathias Agopian
850631272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glGetProgramPipelineivEXT);
850731272606149d83437a097800074b21e9e6a205adMathias Agopian
850831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument pipeline
850931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_pipeline = glmsg.add_args();
851031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->set_isarray(false);
851131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->set_type(GLMessage::DataType::INT);
851231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->add_intvalue(pipeline);
851331272606149d83437a097800074b21e9e6a205adMathias Agopian
851431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument pname
851531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_pname = glmsg.add_args();
851631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pname->set_isarray(false);
851731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pname->set_type(GLMessage::DataType::ENUM);
851831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pname->add_intvalue((int)pname);
851931272606149d83437a097800074b21e9e6a205adMathias Agopian
852031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument params
852131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_params = glmsg.add_args();
852231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_params->set_isarray(false);
852331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_params->set_type(GLMessage::DataType::INT);
852431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_params->add_intvalue((int)params);
852531272606149d83437a097800074b21e9e6a205adMathias Agopian
852631272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
852705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
852805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
852931272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glGetProgramPipelineivEXT(pipeline, pname, params);
853005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
853105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
853231272606149d83437a097800074b21e9e6a205adMathias Agopian
85339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
85349801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
85359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
85369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
853705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
853805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
85399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
854031272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
854131272606149d83437a097800074b21e9e6a205adMathias Agopian}
854231272606149d83437a097800074b21e9e6a205adMathias Agopian
854331272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform1iEXT(GLuint program, GLint location, GLint x) {
854431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
854531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
854631272606149d83437a097800074b21e9e6a205adMathias Agopian
854731272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform1iEXT);
854831272606149d83437a097800074b21e9e6a205adMathias Agopian
854931272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
855031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
855131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
855231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
855331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
855431272606149d83437a097800074b21e9e6a205adMathias Agopian
855531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
855631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
855731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
855831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
855931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
856031272606149d83437a097800074b21e9e6a205adMathias Agopian
856131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument x
856231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_x = glmsg.add_args();
856331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_isarray(false);
856431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_type(GLMessage::DataType::INT);
856531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->add_intvalue(x);
856631272606149d83437a097800074b21e9e6a205adMathias Agopian
856731272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
856805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
856905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
857031272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform1iEXT(program, location, x);
857105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
857205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
857331272606149d83437a097800074b21e9e6a205adMathias Agopian
85749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
85759801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
85769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
857705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
857805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
85799801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
858031272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
858131272606149d83437a097800074b21e9e6a205adMathias Agopian}
858231272606149d83437a097800074b21e9e6a205adMathias Agopian
858331272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform2iEXT(GLuint program, GLint location, GLint x, GLint y) {
858431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
858531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
858631272606149d83437a097800074b21e9e6a205adMathias Agopian
858731272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform2iEXT);
858831272606149d83437a097800074b21e9e6a205adMathias Agopian
858931272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
859031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
859131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
859231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
859331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
859431272606149d83437a097800074b21e9e6a205adMathias Agopian
859531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
859631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
859731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
859831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
859931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
860031272606149d83437a097800074b21e9e6a205adMathias Agopian
860131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument x
860231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_x = glmsg.add_args();
860331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_isarray(false);
860431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_type(GLMessage::DataType::INT);
860531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->add_intvalue(x);
860631272606149d83437a097800074b21e9e6a205adMathias Agopian
860731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument y
860831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_y = glmsg.add_args();
860931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->set_isarray(false);
861031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->set_type(GLMessage::DataType::INT);
861131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->add_intvalue(y);
861231272606149d83437a097800074b21e9e6a205adMathias Agopian
861331272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
861405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
861505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
861631272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform2iEXT(program, location, x, y);
861705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
861805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
861931272606149d83437a097800074b21e9e6a205adMathias Agopian
86209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
86219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
86229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
862305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
862405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
86259801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
862631272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
862731272606149d83437a097800074b21e9e6a205adMathias Agopian}
862831272606149d83437a097800074b21e9e6a205adMathias Agopian
862931272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform3iEXT(GLuint program, GLint location, GLint x, GLint y, GLint z) {
863031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
863131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
863231272606149d83437a097800074b21e9e6a205adMathias Agopian
863331272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform3iEXT);
863431272606149d83437a097800074b21e9e6a205adMathias Agopian
863531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
863631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
863731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
863831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
863931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
864031272606149d83437a097800074b21e9e6a205adMathias Agopian
864131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
864231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
864331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
864431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
864531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
864631272606149d83437a097800074b21e9e6a205adMathias Agopian
864731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument x
864831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_x = glmsg.add_args();
864931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_isarray(false);
865031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_type(GLMessage::DataType::INT);
865131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->add_intvalue(x);
865231272606149d83437a097800074b21e9e6a205adMathias Agopian
865331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument y
865431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_y = glmsg.add_args();
865531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->set_isarray(false);
865631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->set_type(GLMessage::DataType::INT);
865731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->add_intvalue(y);
865831272606149d83437a097800074b21e9e6a205adMathias Agopian
865931272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument z
866031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_z = glmsg.add_args();
866131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_z->set_isarray(false);
866231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_z->set_type(GLMessage::DataType::INT);
866331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_z->add_intvalue(z);
866431272606149d83437a097800074b21e9e6a205adMathias Agopian
866531272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
866605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
866705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
866831272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform3iEXT(program, location, x, y, z);
866905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
867005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
867131272606149d83437a097800074b21e9e6a205adMathias Agopian
86729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
86739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
86749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
867505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
867605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
86779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
867831272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
867931272606149d83437a097800074b21e9e6a205adMathias Agopian}
868031272606149d83437a097800074b21e9e6a205adMathias Agopian
868131272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform4iEXT(GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w) {
868231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
868331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
868431272606149d83437a097800074b21e9e6a205adMathias Agopian
868531272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform4iEXT);
868631272606149d83437a097800074b21e9e6a205adMathias Agopian
868731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
868831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
868931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
869031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
869131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
869231272606149d83437a097800074b21e9e6a205adMathias Agopian
869331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
869431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
869531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
869631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
869731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
869831272606149d83437a097800074b21e9e6a205adMathias Agopian
869931272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument x
870031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_x = glmsg.add_args();
870131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_isarray(false);
870231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_type(GLMessage::DataType::INT);
870331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->add_intvalue(x);
870431272606149d83437a097800074b21e9e6a205adMathias Agopian
870531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument y
870631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_y = glmsg.add_args();
870731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->set_isarray(false);
870831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->set_type(GLMessage::DataType::INT);
870931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->add_intvalue(y);
871031272606149d83437a097800074b21e9e6a205adMathias Agopian
871131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument z
871231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_z = glmsg.add_args();
871331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_z->set_isarray(false);
871431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_z->set_type(GLMessage::DataType::INT);
871531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_z->add_intvalue(z);
871631272606149d83437a097800074b21e9e6a205adMathias Agopian
871731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument w
871831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_w = glmsg.add_args();
871931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_w->set_isarray(false);
872031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_w->set_type(GLMessage::DataType::INT);
872131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_w->add_intvalue(w);
872231272606149d83437a097800074b21e9e6a205adMathias Agopian
872331272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
872405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
872505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
872631272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform4iEXT(program, location, x, y, z, w);
872705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
872805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
872931272606149d83437a097800074b21e9e6a205adMathias Agopian
87309801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
87319801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
87329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
873305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
873405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
87359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
873631272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
873731272606149d83437a097800074b21e9e6a205adMathias Agopian}
873831272606149d83437a097800074b21e9e6a205adMathias Agopian
873931272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform1fEXT(GLuint program, GLint location, GLfloat x) {
874031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
874131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
874231272606149d83437a097800074b21e9e6a205adMathias Agopian
874331272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform1fEXT);
874431272606149d83437a097800074b21e9e6a205adMathias Agopian
874531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
874631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
874731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
874831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
874931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
875031272606149d83437a097800074b21e9e6a205adMathias Agopian
875131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
875231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
875331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
875431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
875531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
875631272606149d83437a097800074b21e9e6a205adMathias Agopian
875731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument x
875831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_x = glmsg.add_args();
875931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_isarray(false);
876031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_type(GLMessage::DataType::FLOAT);
876131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->add_floatvalue(x);
876231272606149d83437a097800074b21e9e6a205adMathias Agopian
876331272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
876405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
876505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
876631272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform1fEXT(program, location, x);
876705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
876805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
876931272606149d83437a097800074b21e9e6a205adMathias Agopian
87709801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
87719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
87729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
877305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
877405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
87759801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
877631272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
877731272606149d83437a097800074b21e9e6a205adMathias Agopian}
877831272606149d83437a097800074b21e9e6a205adMathias Agopian
877931272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform2fEXT(GLuint program, GLint location, GLfloat x, GLfloat y) {
878031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
878131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
878231272606149d83437a097800074b21e9e6a205adMathias Agopian
878331272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform2fEXT);
878431272606149d83437a097800074b21e9e6a205adMathias Agopian
878531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
878631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
878731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
878831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
878931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
879031272606149d83437a097800074b21e9e6a205adMathias Agopian
879131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
879231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
879331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
879431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
879531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
879631272606149d83437a097800074b21e9e6a205adMathias Agopian
879731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument x
879831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_x = glmsg.add_args();
879931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_isarray(false);
880031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_type(GLMessage::DataType::FLOAT);
880131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->add_floatvalue(x);
880231272606149d83437a097800074b21e9e6a205adMathias Agopian
880331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument y
880431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_y = glmsg.add_args();
880531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->set_isarray(false);
880631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->set_type(GLMessage::DataType::FLOAT);
880731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->add_floatvalue(y);
880831272606149d83437a097800074b21e9e6a205adMathias Agopian
880931272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
881005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
881105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
881231272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform2fEXT(program, location, x, y);
881305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
881405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
881531272606149d83437a097800074b21e9e6a205adMathias Agopian
88169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
88179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
88189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
881905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
882005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
88219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
882231272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
882331272606149d83437a097800074b21e9e6a205adMathias Agopian}
882431272606149d83437a097800074b21e9e6a205adMathias Agopian
882531272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform3fEXT(GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z) {
882631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
882731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
882831272606149d83437a097800074b21e9e6a205adMathias Agopian
882931272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform3fEXT);
883031272606149d83437a097800074b21e9e6a205adMathias Agopian
883131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
883231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
883331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
883431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
883531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
883631272606149d83437a097800074b21e9e6a205adMathias Agopian
883731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
883831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
883931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
884031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
884131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
884231272606149d83437a097800074b21e9e6a205adMathias Agopian
884331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument x
884431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_x = glmsg.add_args();
884531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_isarray(false);
884631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_type(GLMessage::DataType::FLOAT);
884731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->add_floatvalue(x);
884831272606149d83437a097800074b21e9e6a205adMathias Agopian
884931272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument y
885031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_y = glmsg.add_args();
885131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->set_isarray(false);
885231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->set_type(GLMessage::DataType::FLOAT);
885331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->add_floatvalue(y);
885431272606149d83437a097800074b21e9e6a205adMathias Agopian
885531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument z
885631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_z = glmsg.add_args();
885731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_z->set_isarray(false);
885831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_z->set_type(GLMessage::DataType::FLOAT);
885931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_z->add_floatvalue(z);
886031272606149d83437a097800074b21e9e6a205adMathias Agopian
886131272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
886205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
886305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
886431272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform3fEXT(program, location, x, y, z);
886505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
886605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
886731272606149d83437a097800074b21e9e6a205adMathias Agopian
88689801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
88699801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
88709801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
887105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
887205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
88739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
887431272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
887531272606149d83437a097800074b21e9e6a205adMathias Agopian}
887631272606149d83437a097800074b21e9e6a205adMathias Agopian
887731272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform4fEXT(GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w) {
887831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
887931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
888031272606149d83437a097800074b21e9e6a205adMathias Agopian
888131272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform4fEXT);
888231272606149d83437a097800074b21e9e6a205adMathias Agopian
888331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
888431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
888531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
888631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
888731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
888831272606149d83437a097800074b21e9e6a205adMathias Agopian
888931272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
889031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
889131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
889231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
889331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
889431272606149d83437a097800074b21e9e6a205adMathias Agopian
889531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument x
889631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_x = glmsg.add_args();
889731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_isarray(false);
889831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->set_type(GLMessage::DataType::FLOAT);
889931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_x->add_floatvalue(x);
890031272606149d83437a097800074b21e9e6a205adMathias Agopian
890131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument y
890231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_y = glmsg.add_args();
890331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->set_isarray(false);
890431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->set_type(GLMessage::DataType::FLOAT);
890531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_y->add_floatvalue(y);
890631272606149d83437a097800074b21e9e6a205adMathias Agopian
890731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument z
890831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_z = glmsg.add_args();
890931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_z->set_isarray(false);
891031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_z->set_type(GLMessage::DataType::FLOAT);
891131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_z->add_floatvalue(z);
891231272606149d83437a097800074b21e9e6a205adMathias Agopian
891331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument w
891431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_w = glmsg.add_args();
891531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_w->set_isarray(false);
891631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_w->set_type(GLMessage::DataType::FLOAT);
891731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_w->add_floatvalue(w);
891831272606149d83437a097800074b21e9e6a205adMathias Agopian
891931272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
892005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
892105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
892231272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform4fEXT(program, location, x, y, z, w);
892305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
892405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
892531272606149d83437a097800074b21e9e6a205adMathias Agopian
89269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
89279801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
89289801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
892905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
893005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
89319801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
893231272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
893331272606149d83437a097800074b21e9e6a205adMathias Agopian}
893431272606149d83437a097800074b21e9e6a205adMathias Agopian
893531272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform1ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) {
893631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
893731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
893831272606149d83437a097800074b21e9e6a205adMathias Agopian
893931272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform1ivEXT);
894031272606149d83437a097800074b21e9e6a205adMathias Agopian
894131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
894231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
894331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
894431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
894531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
894631272606149d83437a097800074b21e9e6a205adMathias Agopian
894731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
894831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
894931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
895031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
895131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
895231272606149d83437a097800074b21e9e6a205adMathias Agopian
895331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument count
895431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_count = glmsg.add_args();
895531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_isarray(false);
895631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_type(GLMessage::DataType::INT);
895731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->add_intvalue(count);
895831272606149d83437a097800074b21e9e6a205adMathias Agopian
895931272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument value
896031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_value = glmsg.add_args();
896131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_isarray(false);
896231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_type(GLMessage::DataType::INT);
896331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->add_intvalue((int)value);
896431272606149d83437a097800074b21e9e6a205adMathias Agopian
896531272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
896605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
896705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
896831272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform1ivEXT(program, location, count, value);
896905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
897005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
897131272606149d83437a097800074b21e9e6a205adMathias Agopian
89729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
89739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) value,
89749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
89759801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
897605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
897705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
89789801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
897931272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
898031272606149d83437a097800074b21e9e6a205adMathias Agopian}
898131272606149d83437a097800074b21e9e6a205adMathias Agopian
898231272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform2ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) {
898331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
898431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
898531272606149d83437a097800074b21e9e6a205adMathias Agopian
898631272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform2ivEXT);
898731272606149d83437a097800074b21e9e6a205adMathias Agopian
898831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
898931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
899031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
899131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
899231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
899331272606149d83437a097800074b21e9e6a205adMathias Agopian
899431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
899531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
899631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
899731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
899831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
899931272606149d83437a097800074b21e9e6a205adMathias Agopian
900031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument count
900131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_count = glmsg.add_args();
900231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_isarray(false);
900331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_type(GLMessage::DataType::INT);
900431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->add_intvalue(count);
900531272606149d83437a097800074b21e9e6a205adMathias Agopian
900631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument value
900731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_value = glmsg.add_args();
900831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_isarray(false);
900931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_type(GLMessage::DataType::INT);
901031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->add_intvalue((int)value);
901131272606149d83437a097800074b21e9e6a205adMathias Agopian
901231272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
901305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
901405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
901531272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform2ivEXT(program, location, count, value);
901605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
901705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
901831272606149d83437a097800074b21e9e6a205adMathias Agopian
90199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
90209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) value,
90219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
90229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
902305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
902405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
90259801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
902631272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
902731272606149d83437a097800074b21e9e6a205adMathias Agopian}
902831272606149d83437a097800074b21e9e6a205adMathias Agopian
902931272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform3ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) {
903031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
903131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
903231272606149d83437a097800074b21e9e6a205adMathias Agopian
903331272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform3ivEXT);
903431272606149d83437a097800074b21e9e6a205adMathias Agopian
903531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
903631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
903731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
903831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
903931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
904031272606149d83437a097800074b21e9e6a205adMathias Agopian
904131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
904231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
904331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
904431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
904531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
904631272606149d83437a097800074b21e9e6a205adMathias Agopian
904731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument count
904831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_count = glmsg.add_args();
904931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_isarray(false);
905031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_type(GLMessage::DataType::INT);
905131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->add_intvalue(count);
905231272606149d83437a097800074b21e9e6a205adMathias Agopian
905331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument value
905431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_value = glmsg.add_args();
905531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_isarray(false);
905631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_type(GLMessage::DataType::INT);
905731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->add_intvalue((int)value);
905831272606149d83437a097800074b21e9e6a205adMathias Agopian
905931272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
906005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
906105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
906231272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform3ivEXT(program, location, count, value);
906305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
906405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
906531272606149d83437a097800074b21e9e6a205adMathias Agopian
90669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
90679801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) value,
90689801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
90699801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
907005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
907105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
90729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
907331272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
907431272606149d83437a097800074b21e9e6a205adMathias Agopian}
907531272606149d83437a097800074b21e9e6a205adMathias Agopian
907631272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform4ivEXT(GLuint program, GLint location, GLsizei count, const GLint *value) {
907731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
907831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
907931272606149d83437a097800074b21e9e6a205adMathias Agopian
908031272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform4ivEXT);
908131272606149d83437a097800074b21e9e6a205adMathias Agopian
908231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
908331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
908431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
908531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
908631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
908731272606149d83437a097800074b21e9e6a205adMathias Agopian
908831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
908931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
909031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
909131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
909231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
909331272606149d83437a097800074b21e9e6a205adMathias Agopian
909431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument count
909531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_count = glmsg.add_args();
909631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_isarray(false);
909731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_type(GLMessage::DataType::INT);
909831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->add_intvalue(count);
909931272606149d83437a097800074b21e9e6a205adMathias Agopian
910031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument value
910131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_value = glmsg.add_args();
910231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_isarray(false);
910331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_type(GLMessage::DataType::INT);
910431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->add_intvalue((int)value);
910531272606149d83437a097800074b21e9e6a205adMathias Agopian
910631272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
910705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
910805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
910931272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform4ivEXT(program, location, count, value);
911005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
911105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
911231272606149d83437a097800074b21e9e6a205adMathias Agopian
91139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
91149801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) value,
91159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
91169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
911705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
911805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
91199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
912031272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
912131272606149d83437a097800074b21e9e6a205adMathias Agopian}
912231272606149d83437a097800074b21e9e6a205adMathias Agopian
912331272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform1fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) {
912431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
912531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
912631272606149d83437a097800074b21e9e6a205adMathias Agopian
912731272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform1fvEXT);
912831272606149d83437a097800074b21e9e6a205adMathias Agopian
912931272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
913031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
913131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
913231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
913331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
913431272606149d83437a097800074b21e9e6a205adMathias Agopian
913531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
913631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
913731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
913831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
913931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
914031272606149d83437a097800074b21e9e6a205adMathias Agopian
914131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument count
914231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_count = glmsg.add_args();
914331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_isarray(false);
914431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_type(GLMessage::DataType::INT);
914531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->add_intvalue(count);
914631272606149d83437a097800074b21e9e6a205adMathias Agopian
914731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument value
914831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_value = glmsg.add_args();
914931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_isarray(false);
915031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_type(GLMessage::DataType::INT);
915131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->add_intvalue((int)value);
915231272606149d83437a097800074b21e9e6a205adMathias Agopian
915331272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
915405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
915505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
915631272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform1fvEXT(program, location, count, value);
915705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
915805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
915931272606149d83437a097800074b21e9e6a205adMathias Agopian
91609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
91619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) value,
91629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
91639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
916405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
916505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
91669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
916731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
916831272606149d83437a097800074b21e9e6a205adMathias Agopian}
916931272606149d83437a097800074b21e9e6a205adMathias Agopian
917031272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform2fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) {
917131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
917231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
917331272606149d83437a097800074b21e9e6a205adMathias Agopian
917431272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform2fvEXT);
917531272606149d83437a097800074b21e9e6a205adMathias Agopian
917631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
917731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
917831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
917931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
918031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
918131272606149d83437a097800074b21e9e6a205adMathias Agopian
918231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
918331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
918431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
918531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
918631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
918731272606149d83437a097800074b21e9e6a205adMathias Agopian
918831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument count
918931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_count = glmsg.add_args();
919031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_isarray(false);
919131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_type(GLMessage::DataType::INT);
919231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->add_intvalue(count);
919331272606149d83437a097800074b21e9e6a205adMathias Agopian
919431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument value
919531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_value = glmsg.add_args();
919631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_isarray(false);
919731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_type(GLMessage::DataType::INT);
919831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->add_intvalue((int)value);
919931272606149d83437a097800074b21e9e6a205adMathias Agopian
920031272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
920105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
920205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
920331272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform2fvEXT(program, location, count, value);
920405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
920505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
920631272606149d83437a097800074b21e9e6a205adMathias Agopian
92079801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
92089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) value,
92099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
92109801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
921105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
921205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
92139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
921431272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
921531272606149d83437a097800074b21e9e6a205adMathias Agopian}
921631272606149d83437a097800074b21e9e6a205adMathias Agopian
921731272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform3fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) {
921831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
921931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
922031272606149d83437a097800074b21e9e6a205adMathias Agopian
922131272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform3fvEXT);
922231272606149d83437a097800074b21e9e6a205adMathias Agopian
922331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
922431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
922531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
922631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
922731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
922831272606149d83437a097800074b21e9e6a205adMathias Agopian
922931272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
923031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
923131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
923231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
923331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
923431272606149d83437a097800074b21e9e6a205adMathias Agopian
923531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument count
923631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_count = glmsg.add_args();
923731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_isarray(false);
923831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_type(GLMessage::DataType::INT);
923931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->add_intvalue(count);
924031272606149d83437a097800074b21e9e6a205adMathias Agopian
924131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument value
924231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_value = glmsg.add_args();
924331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_isarray(false);
924431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_type(GLMessage::DataType::INT);
924531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->add_intvalue((int)value);
924631272606149d83437a097800074b21e9e6a205adMathias Agopian
924731272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
924805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
924905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
925031272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform3fvEXT(program, location, count, value);
925105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
925205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
925331272606149d83437a097800074b21e9e6a205adMathias Agopian
92549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
92559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) value,
92569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
92579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
925805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
925905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
92609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
926131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
926231272606149d83437a097800074b21e9e6a205adMathias Agopian}
926331272606149d83437a097800074b21e9e6a205adMathias Agopian
926431272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniform4fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat *value) {
926531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
926631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
926731272606149d83437a097800074b21e9e6a205adMathias Agopian
926831272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniform4fvEXT);
926931272606149d83437a097800074b21e9e6a205adMathias Agopian
927031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
927131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
927231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
927331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
927431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
927531272606149d83437a097800074b21e9e6a205adMathias Agopian
927631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
927731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
927831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
927931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
928031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
928131272606149d83437a097800074b21e9e6a205adMathias Agopian
928231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument count
928331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_count = glmsg.add_args();
928431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_isarray(false);
928531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_type(GLMessage::DataType::INT);
928631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->add_intvalue(count);
928731272606149d83437a097800074b21e9e6a205adMathias Agopian
928831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument value
928931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_value = glmsg.add_args();
929031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_isarray(false);
929131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_type(GLMessage::DataType::INT);
929231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->add_intvalue((int)value);
929331272606149d83437a097800074b21e9e6a205adMathias Agopian
929431272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
929505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
929605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
929731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniform4fvEXT(program, location, count, value);
929805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
929905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
930031272606149d83437a097800074b21e9e6a205adMathias Agopian
93019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
93029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) value,
93039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
93049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
930505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
930605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
93079801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
930831272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
930931272606149d83437a097800074b21e9e6a205adMathias Agopian}
931031272606149d83437a097800074b21e9e6a205adMathias Agopian
931131272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniformMatrix2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) {
931231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
931331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
931431272606149d83437a097800074b21e9e6a205adMathias Agopian
931531272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniformMatrix2fvEXT);
931631272606149d83437a097800074b21e9e6a205adMathias Agopian
931731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
931831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
931931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
932031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
932131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
932231272606149d83437a097800074b21e9e6a205adMathias Agopian
932331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
932431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
932531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
932631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
932731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
932831272606149d83437a097800074b21e9e6a205adMathias Agopian
932931272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument count
933031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_count = glmsg.add_args();
933131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_isarray(false);
933231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_type(GLMessage::DataType::INT);
933331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->add_intvalue(count);
933431272606149d83437a097800074b21e9e6a205adMathias Agopian
933531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument transpose
933631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_transpose = glmsg.add_args();
933731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_transpose->set_isarray(false);
933831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_transpose->set_type(GLMessage::DataType::BOOL);
933931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_transpose->add_boolvalue(transpose);
934031272606149d83437a097800074b21e9e6a205adMathias Agopian
934131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument value
934231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_value = glmsg.add_args();
934331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_isarray(false);
934431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_type(GLMessage::DataType::INT);
934531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->add_intvalue((int)value);
934631272606149d83437a097800074b21e9e6a205adMathias Agopian
934731272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
934805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
934905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
935031272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniformMatrix2fvEXT(program, location, count, transpose, value);
935105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
935205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
935331272606149d83437a097800074b21e9e6a205adMathias Agopian
93549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
93559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) value,
93569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
93579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
935805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
935905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
93609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
936131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
936231272606149d83437a097800074b21e9e6a205adMathias Agopian}
936331272606149d83437a097800074b21e9e6a205adMathias Agopian
936431272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniformMatrix3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) {
936531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
936631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
936731272606149d83437a097800074b21e9e6a205adMathias Agopian
936831272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniformMatrix3fvEXT);
936931272606149d83437a097800074b21e9e6a205adMathias Agopian
937031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
937131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
937231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
937331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
937431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
937531272606149d83437a097800074b21e9e6a205adMathias Agopian
937631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
937731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
937831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
937931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
938031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
938131272606149d83437a097800074b21e9e6a205adMathias Agopian
938231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument count
938331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_count = glmsg.add_args();
938431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_isarray(false);
938531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_type(GLMessage::DataType::INT);
938631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->add_intvalue(count);
938731272606149d83437a097800074b21e9e6a205adMathias Agopian
938831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument transpose
938931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_transpose = glmsg.add_args();
939031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_transpose->set_isarray(false);
939131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_transpose->set_type(GLMessage::DataType::BOOL);
939231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_transpose->add_boolvalue(transpose);
939331272606149d83437a097800074b21e9e6a205adMathias Agopian
939431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument value
939531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_value = glmsg.add_args();
939631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_isarray(false);
939731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_type(GLMessage::DataType::INT);
939831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->add_intvalue((int)value);
939931272606149d83437a097800074b21e9e6a205adMathias Agopian
940031272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
940105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
940205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
940331272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniformMatrix3fvEXT(program, location, count, transpose, value);
940405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
940505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
940631272606149d83437a097800074b21e9e6a205adMathias Agopian
94079801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
94089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) value,
94099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
94109801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
941105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
941205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
94139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
941431272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
941531272606149d83437a097800074b21e9e6a205adMathias Agopian}
941631272606149d83437a097800074b21e9e6a205adMathias Agopian
941731272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glProgramUniformMatrix4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) {
941831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
941931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
942031272606149d83437a097800074b21e9e6a205adMathias Agopian
942131272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glProgramUniformMatrix4fvEXT);
942231272606149d83437a097800074b21e9e6a205adMathias Agopian
942331272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument program
942431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_program = glmsg.add_args();
942531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_isarray(false);
942631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->set_type(GLMessage::DataType::INT);
942731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_program->add_intvalue(program);
942831272606149d83437a097800074b21e9e6a205adMathias Agopian
942931272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument location
943031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_location = glmsg.add_args();
943131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_isarray(false);
943231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->set_type(GLMessage::DataType::INT);
943331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_location->add_intvalue(location);
943431272606149d83437a097800074b21e9e6a205adMathias Agopian
943531272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument count
943631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_count = glmsg.add_args();
943731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_isarray(false);
943831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->set_type(GLMessage::DataType::INT);
943931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_count->add_intvalue(count);
944031272606149d83437a097800074b21e9e6a205adMathias Agopian
944131272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument transpose
944231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_transpose = glmsg.add_args();
944331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_transpose->set_isarray(false);
944431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_transpose->set_type(GLMessage::DataType::BOOL);
944531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_transpose->add_boolvalue(transpose);
944631272606149d83437a097800074b21e9e6a205adMathias Agopian
944731272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument value
944831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_value = glmsg.add_args();
944931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_isarray(false);
945031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->set_type(GLMessage::DataType::INT);
945131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_value->add_intvalue((int)value);
945231272606149d83437a097800074b21e9e6a205adMathias Agopian
945331272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
945405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
945505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
945631272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glProgramUniformMatrix4fvEXT(program, location, count, transpose, value);
945705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
945805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
945931272606149d83437a097800074b21e9e6a205adMathias Agopian
94609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
94619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) value,
94629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
94639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
946405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
946505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
94669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
946731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
946831272606149d83437a097800074b21e9e6a205adMathias Agopian}
946931272606149d83437a097800074b21e9e6a205adMathias Agopian
947031272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glValidateProgramPipelineEXT(GLuint pipeline) {
947131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
947231272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
947331272606149d83437a097800074b21e9e6a205adMathias Agopian
947431272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glValidateProgramPipelineEXT);
947531272606149d83437a097800074b21e9e6a205adMathias Agopian
947631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument pipeline
947731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_pipeline = glmsg.add_args();
947831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->set_isarray(false);
947931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->set_type(GLMessage::DataType::INT);
948031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->add_intvalue(pipeline);
948131272606149d83437a097800074b21e9e6a205adMathias Agopian
948231272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
948305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
948405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
948531272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glValidateProgramPipelineEXT(pipeline);
948605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
948705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
948831272606149d83437a097800074b21e9e6a205adMathias Agopian
94899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
94909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
94919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
949205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
949305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
94949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
949531272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
949631272606149d83437a097800074b21e9e6a205adMathias Agopian}
949731272606149d83437a097800074b21e9e6a205adMathias Agopian
949831272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glGetProgramPipelineInfoLogEXT(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog) {
949931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
950031272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
950131272606149d83437a097800074b21e9e6a205adMathias Agopian
950231272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glGetProgramPipelineInfoLogEXT);
950331272606149d83437a097800074b21e9e6a205adMathias Agopian
950431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument pipeline
950531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_pipeline = glmsg.add_args();
950631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->set_isarray(false);
950731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->set_type(GLMessage::DataType::INT);
950831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_pipeline->add_intvalue(pipeline);
950931272606149d83437a097800074b21e9e6a205adMathias Agopian
951031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument bufSize
951131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_bufSize = glmsg.add_args();
951231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufSize->set_isarray(false);
951331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufSize->set_type(GLMessage::DataType::INT);
951431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufSize->add_intvalue(bufSize);
951531272606149d83437a097800074b21e9e6a205adMathias Agopian
951631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument length
951731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_length = glmsg.add_args();
951831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_length->set_isarray(false);
951931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_length->set_type(GLMessage::DataType::INT);
952031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_length->add_intvalue((int)length);
952131272606149d83437a097800074b21e9e6a205adMathias Agopian
952231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument infoLog
952331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_infoLog = glmsg.add_args();
952431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_infoLog->set_isarray(false);
952531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_infoLog->set_type(GLMessage::DataType::INT);
952631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_infoLog->add_intvalue((int)infoLog);
952731272606149d83437a097800074b21e9e6a205adMathias Agopian
952831272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
952905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
953005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
953131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glGetProgramPipelineInfoLogEXT(pipeline, bufSize, length, infoLog);
953205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
953305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
953431272606149d83437a097800074b21e9e6a205adMathias Agopian
95359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
95369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) length,
95379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) infoLog,
95389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
95399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
954005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
954105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
95429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
954331272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
954431272606149d83437a097800074b21e9e6a205adMathias Agopian}
954531272606149d83437a097800074b21e9e6a205adMathias Agopian
954631272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glTexStorage1DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) {
954731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
954831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
954931272606149d83437a097800074b21e9e6a205adMathias Agopian
955031272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glTexStorage1DEXT);
955131272606149d83437a097800074b21e9e6a205adMathias Agopian
955231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument target
955331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_target = glmsg.add_args();
955431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_isarray(false);
955531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_type(GLMessage::DataType::ENUM);
955631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->add_intvalue((int)target);
955731272606149d83437a097800074b21e9e6a205adMathias Agopian
955831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument levels
955931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_levels = glmsg.add_args();
956031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->set_isarray(false);
956131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->set_type(GLMessage::DataType::INT);
956231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->add_intvalue(levels);
956331272606149d83437a097800074b21e9e6a205adMathias Agopian
956431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument internalformat
956531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_internalformat = glmsg.add_args();
956631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_isarray(false);
956731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_type(GLMessage::DataType::ENUM);
956831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->add_intvalue((int)internalformat);
956931272606149d83437a097800074b21e9e6a205adMathias Agopian
957031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument width
957131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_width = glmsg.add_args();
957231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_isarray(false);
957331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_type(GLMessage::DataType::INT);
957431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->add_intvalue(width);
957531272606149d83437a097800074b21e9e6a205adMathias Agopian
957631272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
957705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
957805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
957931272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glTexStorage1DEXT(target, levels, internalformat, width);
958005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
958105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
958231272606149d83437a097800074b21e9e6a205adMathias Agopian
95839801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
95849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
95859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
958605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
958705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
95889801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
958931272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
959031272606149d83437a097800074b21e9e6a205adMathias Agopian}
959131272606149d83437a097800074b21e9e6a205adMathias Agopian
959231272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glTexStorage2DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) {
959331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
959431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
959531272606149d83437a097800074b21e9e6a205adMathias Agopian
959631272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glTexStorage2DEXT);
959731272606149d83437a097800074b21e9e6a205adMathias Agopian
959831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument target
959931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_target = glmsg.add_args();
960031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_isarray(false);
960131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_type(GLMessage::DataType::ENUM);
960231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->add_intvalue((int)target);
960331272606149d83437a097800074b21e9e6a205adMathias Agopian
960431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument levels
960531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_levels = glmsg.add_args();
960631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->set_isarray(false);
960731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->set_type(GLMessage::DataType::INT);
960831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->add_intvalue(levels);
960931272606149d83437a097800074b21e9e6a205adMathias Agopian
961031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument internalformat
961131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_internalformat = glmsg.add_args();
961231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_isarray(false);
961331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_type(GLMessage::DataType::ENUM);
961431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->add_intvalue((int)internalformat);
961531272606149d83437a097800074b21e9e6a205adMathias Agopian
961631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument width
961731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_width = glmsg.add_args();
961831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_isarray(false);
961931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_type(GLMessage::DataType::INT);
962031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->add_intvalue(width);
962131272606149d83437a097800074b21e9e6a205adMathias Agopian
962231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument height
962331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_height = glmsg.add_args();
962431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_isarray(false);
962531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_type(GLMessage::DataType::INT);
962631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->add_intvalue(height);
962731272606149d83437a097800074b21e9e6a205adMathias Agopian
962831272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
962905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
963005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
963131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glTexStorage2DEXT(target, levels, internalformat, width, height);
963205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
963305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
963431272606149d83437a097800074b21e9e6a205adMathias Agopian
96359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
96369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
96379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
963805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
963905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
96409801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
964131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
964231272606149d83437a097800074b21e9e6a205adMathias Agopian}
964331272606149d83437a097800074b21e9e6a205adMathias Agopian
964431272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glTexStorage3DEXT(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) {
964531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
964631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
964731272606149d83437a097800074b21e9e6a205adMathias Agopian
964831272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glTexStorage3DEXT);
964931272606149d83437a097800074b21e9e6a205adMathias Agopian
965031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument target
965131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_target = glmsg.add_args();
965231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_isarray(false);
965331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_type(GLMessage::DataType::ENUM);
965431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->add_intvalue((int)target);
965531272606149d83437a097800074b21e9e6a205adMathias Agopian
965631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument levels
965731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_levels = glmsg.add_args();
965831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->set_isarray(false);
965931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->set_type(GLMessage::DataType::INT);
966031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->add_intvalue(levels);
966131272606149d83437a097800074b21e9e6a205adMathias Agopian
966231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument internalformat
966331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_internalformat = glmsg.add_args();
966431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_isarray(false);
966531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_type(GLMessage::DataType::ENUM);
966631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->add_intvalue((int)internalformat);
966731272606149d83437a097800074b21e9e6a205adMathias Agopian
966831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument width
966931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_width = glmsg.add_args();
967031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_isarray(false);
967131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_type(GLMessage::DataType::INT);
967231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->add_intvalue(width);
967331272606149d83437a097800074b21e9e6a205adMathias Agopian
967431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument height
967531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_height = glmsg.add_args();
967631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_isarray(false);
967731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_type(GLMessage::DataType::INT);
967831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->add_intvalue(height);
967931272606149d83437a097800074b21e9e6a205adMathias Agopian
968031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument depth
968131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_depth = glmsg.add_args();
968231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_depth->set_isarray(false);
968331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_depth->set_type(GLMessage::DataType::INT);
968431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_depth->add_intvalue(depth);
968531272606149d83437a097800074b21e9e6a205adMathias Agopian
968631272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
968705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
968805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
968931272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glTexStorage3DEXT(target, levels, internalformat, width, height, depth);
969005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
969105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
969231272606149d83437a097800074b21e9e6a205adMathias Agopian
96939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
96949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
96959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
969605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
969705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
96989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
969931272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
970031272606149d83437a097800074b21e9e6a205adMathias Agopian}
970131272606149d83437a097800074b21e9e6a205adMathias Agopian
970231272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glTextureStorage1DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) {
970331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
970431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
970531272606149d83437a097800074b21e9e6a205adMathias Agopian
970631272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glTextureStorage1DEXT);
970731272606149d83437a097800074b21e9e6a205adMathias Agopian
970831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument texture
970931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_texture = glmsg.add_args();
971031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_texture->set_isarray(false);
971131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_texture->set_type(GLMessage::DataType::INT);
971231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_texture->add_intvalue(texture);
97130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
97140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
97150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
97160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
97170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
97180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
97190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
972031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument levels
972131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_levels = glmsg.add_args();
972231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->set_isarray(false);
972331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->set_type(GLMessage::DataType::INT);
972431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->add_intvalue(levels);
97250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
972631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument internalformat
972731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_internalformat = glmsg.add_args();
972831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_isarray(false);
972931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_type(GLMessage::DataType::ENUM);
973031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->add_intvalue((int)internalformat);
973131272606149d83437a097800074b21e9e6a205adMathias Agopian
973231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument width
973331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_width = glmsg.add_args();
973431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_isarray(false);
973531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_type(GLMessage::DataType::INT);
973631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->add_intvalue(width);
97370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
97380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
973905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
974005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
974131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glTextureStorage1DEXT(texture, target, levels, internalformat, width);
974205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
974305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
97440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
97459801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
97469801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
97479801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
974805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
974905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
97509801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
975193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
97520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
97530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
975431272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glTextureStorage2DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) {
97550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
97560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
97570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
975831272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glTextureStorage2DEXT);
97590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
976031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument texture
976131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_texture = glmsg.add_args();
976231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_texture->set_isarray(false);
976331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_texture->set_type(GLMessage::DataType::INT);
976431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_texture->add_intvalue(texture);
97650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
976631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument target
976731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_target = glmsg.add_args();
976831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_isarray(false);
976931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_type(GLMessage::DataType::ENUM);
977031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->add_intvalue((int)target);
97710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
977231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument levels
977331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_levels = glmsg.add_args();
977431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->set_isarray(false);
977531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->set_type(GLMessage::DataType::INT);
977631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->add_intvalue(levels);
97770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
977831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument internalformat
977931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_internalformat = glmsg.add_args();
978031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_isarray(false);
978131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_type(GLMessage::DataType::ENUM);
978231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->add_intvalue((int)internalformat);
978331272606149d83437a097800074b21e9e6a205adMathias Agopian
978431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument width
978531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_width = glmsg.add_args();
978631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_isarray(false);
978731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_type(GLMessage::DataType::INT);
978831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->add_intvalue(width);
978931272606149d83437a097800074b21e9e6a205adMathias Agopian
979031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument height
979131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_height = glmsg.add_args();
979231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_isarray(false);
979331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_type(GLMessage::DataType::INT);
979431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->add_intvalue(height);
97950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
97960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
979705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
979805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
979931272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glTextureStorage2DEXT(texture, target, levels, internalformat, width, height);
980005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
980105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
98020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
98039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
98049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
98059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
980605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
980705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
98089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
980993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
98100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
98110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
981231272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glTextureStorage3DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) {
98130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
98140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
98150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
981631272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glTextureStorage3DEXT);
98170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
981831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument texture
981931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_texture = glmsg.add_args();
982031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_texture->set_isarray(false);
982131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_texture->set_type(GLMessage::DataType::INT);
982231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_texture->add_intvalue(texture);
98230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
982431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument target
982531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_target = glmsg.add_args();
982631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_isarray(false);
982731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->set_type(GLMessage::DataType::ENUM);
982831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_target->add_intvalue((int)target);
98290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
983031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument levels
983131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_levels = glmsg.add_args();
983231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->set_isarray(false);
983331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->set_type(GLMessage::DataType::INT);
983431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_levels->add_intvalue(levels);
98350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
983631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument internalformat
983731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_internalformat = glmsg.add_args();
983831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_isarray(false);
983931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->set_type(GLMessage::DataType::ENUM);
984031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_internalformat->add_intvalue((int)internalformat);
98410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
984231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument width
984331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_width = glmsg.add_args();
984431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_isarray(false);
984531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->set_type(GLMessage::DataType::INT);
984631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_width->add_intvalue(width);
984731272606149d83437a097800074b21e9e6a205adMathias Agopian
984831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument height
984931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_height = glmsg.add_args();
985031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_isarray(false);
985131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->set_type(GLMessage::DataType::INT);
985231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_height->add_intvalue(height);
985331272606149d83437a097800074b21e9e6a205adMathias Agopian
985431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument depth
985531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_depth = glmsg.add_args();
985631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_depth->set_isarray(false);
985731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_depth->set_type(GLMessage::DataType::INT);
985831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_depth->add_intvalue(depth);
98590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
98600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
986105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
986205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
986331272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glTextureStorage3DEXT(texture, target, levels, internalformat, width, height, depth);
986405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
986505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
98660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
98679801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
98689801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
98699801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
987005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
987105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
98729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
987393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
98740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
98750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
98760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glRenderbufferStorageMultisampleIMG(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {
98770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
98780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
98790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
98800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glRenderbufferStorageMultisampleIMG);
98810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
98820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
98830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
98840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
98850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
98860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
98870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
98880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument samples
98890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_samples = glmsg.add_args();
98900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_samples->set_isarray(false);
98910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_samples->set_type(GLMessage::DataType::INT);
98920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_samples->add_intvalue(samples);
98930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
98940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument internalformat
98950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_internalformat = glmsg.add_args();
98960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->set_isarray(false);
98970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->set_type(GLMessage::DataType::ENUM);
98980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->add_intvalue((int)internalformat);
98990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
99000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
99010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
99020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
99030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
99040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
99050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
99060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
99070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
99080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
99090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
99100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
99110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
99120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
991305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
991405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
99150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glRenderbufferStorageMultisampleIMG(target, samples, internalformat, width, height);
991605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
991705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
99180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
99199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
99209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
99219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
992205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
992305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
99249801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
992593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
99260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
99270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
99280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFramebufferTexture2DMultisampleIMG(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples) {
99290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
99300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
99310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
99320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFramebufferTexture2DMultisampleIMG);
99330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
99340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
99350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
99360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
99370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
99380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
99390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
99400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument attachment
99410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_attachment = glmsg.add_args();
99420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->set_isarray(false);
99430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->set_type(GLMessage::DataType::ENUM);
99440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->add_intvalue((int)attachment);
99450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
99460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument textarget
99470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_textarget = glmsg.add_args();
99480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_textarget->set_isarray(false);
99490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_textarget->set_type(GLMessage::DataType::ENUM);
99500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_textarget->add_intvalue((int)textarget);
99510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
99520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument texture
99530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_texture = glmsg.add_args();
99540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->set_isarray(false);
99550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->set_type(GLMessage::DataType::INT);
99560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->add_intvalue(texture);
99570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
99580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument level
99590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_level = glmsg.add_args();
99600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_isarray(false);
99610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_type(GLMessage::DataType::INT);
99620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->add_intvalue(level);
99630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
99640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument samples
99650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_samples = glmsg.add_args();
99660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_samples->set_isarray(false);
99670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_samples->set_type(GLMessage::DataType::INT);
99680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_samples->add_intvalue(samples);
99690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
99700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
997105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
997205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
99730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFramebufferTexture2DMultisampleIMG(target, attachment, textarget, texture, level, samples);
997405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
997505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
99760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
99779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
99789801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
99799801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
998005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
998105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
99829801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
998393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
99840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
99850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
998631272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glCoverageMaskNV(GLboolean mask) {
998731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
998831272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
998931272606149d83437a097800074b21e9e6a205adMathias Agopian
999031272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glCoverageMaskNV);
999131272606149d83437a097800074b21e9e6a205adMathias Agopian
999231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument mask
999331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_mask = glmsg.add_args();
999431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_mask->set_isarray(false);
999531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_mask->set_type(GLMessage::DataType::BOOL);
999631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_mask->add_boolvalue(mask);
999731272606149d83437a097800074b21e9e6a205adMathias Agopian
999831272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
999905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1000005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1000131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glCoverageMaskNV(mask);
1000205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1000305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1000431272606149d83437a097800074b21e9e6a205adMathias Agopian
100059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
100069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
100079801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1000805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1000905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
100109801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1001131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1001231272606149d83437a097800074b21e9e6a205adMathias Agopian}
1001331272606149d83437a097800074b21e9e6a205adMathias Agopian
1001431272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glCoverageOperationNV(GLenum operation) {
1001531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1001631272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1001731272606149d83437a097800074b21e9e6a205adMathias Agopian
1001831272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glCoverageOperationNV);
1001931272606149d83437a097800074b21e9e6a205adMathias Agopian
1002031272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument operation
1002131272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_operation = glmsg.add_args();
1002231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_operation->set_isarray(false);
1002331272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_operation->set_type(GLMessage::DataType::ENUM);
1002431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_operation->add_intvalue((int)operation);
1002531272606149d83437a097800074b21e9e6a205adMathias Agopian
1002631272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1002705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1002805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1002931272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glCoverageOperationNV(operation);
1003005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1003105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1003231272606149d83437a097800074b21e9e6a205adMathias Agopian
100339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
100349801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
100359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1003605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1003705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
100389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1003931272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1004031272606149d83437a097800074b21e9e6a205adMathias Agopian}
1004131272606149d83437a097800074b21e9e6a205adMathias Agopian
1004231272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glDrawBuffersNV(GLsizei n, const GLenum *bufs) {
1004331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage glmsg;
1004431272606149d83437a097800074b21e9e6a205adMathias Agopian    GLTraceContext *glContext = getGLTraceContext();
1004531272606149d83437a097800074b21e9e6a205adMathias Agopian
1004631272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glDrawBuffersNV);
1004731272606149d83437a097800074b21e9e6a205adMathias Agopian
1004831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument n
1004931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_n = glmsg.add_args();
1005031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_n->set_isarray(false);
1005131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_n->set_type(GLMessage::DataType::INT);
1005231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_n->add_intvalue(n);
1005331272606149d83437a097800074b21e9e6a205adMathias Agopian
1005431272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument bufs
1005531272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_bufs = glmsg.add_args();
1005631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufs->set_isarray(false);
1005731272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufs->set_type(GLMessage::DataType::INT);
1005831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_bufs->add_intvalue((int)bufs);
1005931272606149d83437a097800074b21e9e6a205adMathias Agopian
1006031272606149d83437a097800074b21e9e6a205adMathias Agopian    // call function
1006105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1006205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1006331272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glDrawBuffersNV(n, bufs);
1006405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1006505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
1006631272606149d83437a097800074b21e9e6a205adMathias Agopian
100679801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
100689801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) bufs,
100699801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
100709801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1007105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1007205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
100739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1007431272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->traceGLMessage(&glmsg);
1007531272606149d83437a097800074b21e9e6a205adMathias Agopian}
1007631272606149d83437a097800074b21e9e6a205adMathias Agopian
100770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDeleteFencesNV(GLsizei n, const GLuint *fences) {
100780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
100790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
100800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
100810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDeleteFencesNV);
100820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
100830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument n
100840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_n = glmsg.add_args();
100850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_isarray(false);
100860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_type(GLMessage::DataType::INT);
100870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->add_intvalue(n);
100880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
100890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument fences
100900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_fences = glmsg.add_args();
100910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fences->set_isarray(false);
100920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fences->set_type(GLMessage::DataType::INT);
100930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fences->add_intvalue((int)fences);
100940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
100950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1009605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1009705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
100980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDeleteFencesNV(n, fences);
1009905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1010005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
101010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
101029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
101039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) fences,
101049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
101059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1010605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1010705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
101089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1010993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
101100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
101110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
101120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGenFencesNV(GLsizei n, GLuint *fences) {
101130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
101140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
101150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
101160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGenFencesNV);
101170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
101180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument n
101190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_n = glmsg.add_args();
101200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_isarray(false);
101210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_type(GLMessage::DataType::INT);
101220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->add_intvalue(n);
101230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
101240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument fences
101250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_fences = glmsg.add_args();
101260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fences->set_isarray(false);
101270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fences->set_type(GLMessage::DataType::INT);
101280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fences->add_intvalue((int)fences);
101290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
101300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1013105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1013205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
101330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGenFencesNV(n, fences);
1013405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1013505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
101360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
101379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
101389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) fences,
101399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
101409801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1014105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1014205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
101439801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1014493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
101450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
101460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
101470469dd6d55fa331bfd7de9431da98b6340d82271Siva VelusamyGLboolean GLTrace_glIsFenceNV(GLuint fence) {
101480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
101490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
101500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
101510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glIsFenceNV);
101520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
101530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument fence
101540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_fence = glmsg.add_args();
101550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fence->set_isarray(false);
101560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fence->set_type(GLMessage::DataType::INT);
101570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fence->add_intvalue(fence);
101580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
101590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1016005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1016105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
101620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLboolean retValue = glContext->hooks->gl.glIsFenceNV(fence);
1016305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1016405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
101650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
101660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
101670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
101680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
101690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::BOOL);
101700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_boolvalue(retValue);
101710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
101729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
101739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
101749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1017505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1017605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
101779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1017893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
101790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
101800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
101810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
101820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
101830469dd6d55fa331bfd7de9431da98b6340d82271Siva VelusamyGLboolean GLTrace_glTestFenceNV(GLuint fence) {
101840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
101850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
101860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
101870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTestFenceNV);
101880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
101890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument fence
101900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_fence = glmsg.add_args();
101910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fence->set_isarray(false);
101920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fence->set_type(GLMessage::DataType::INT);
101930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fence->add_intvalue(fence);
101940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
101950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1019605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1019705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
101980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLboolean retValue = glContext->hooks->gl.glTestFenceNV(fence);
1019905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1020005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
102010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
102020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
102030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
102040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
102050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::BOOL);
102060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_boolvalue(retValue);
102070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
102089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
102099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
102109801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1021105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1021205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
102139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1021493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
102150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
102160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
102170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
102180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
102190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetFenceivNV(GLuint fence, GLenum pname, GLint *params) {
102200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
102210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
102220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
102230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetFenceivNV);
102240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
102250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument fence
102260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_fence = glmsg.add_args();
102270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fence->set_isarray(false);
102280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fence->set_type(GLMessage::DataType::INT);
102290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fence->add_intvalue(fence);
102300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
102310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
102320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
102330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
102340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
102350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
102360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
102370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
102380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
102390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
102400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
102410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
102420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
102430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1024405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1024505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
102460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetFenceivNV(fence, pname, params);
1024705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1024805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
102490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
102509801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
102519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
102529801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
102539801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1025405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1025505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
102569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1025793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
102580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
102590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
102600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFinishFenceNV(GLuint fence) {
102610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
102620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
102630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
102640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFinishFenceNV);
102650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
102660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument fence
102670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_fence = glmsg.add_args();
102680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fence->set_isarray(false);
102690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fence->set_type(GLMessage::DataType::INT);
102700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fence->add_intvalue(fence);
102710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
102720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1027305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1027405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
102750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFinishFenceNV(fence);
1027605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1027705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
102780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
102799801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
102809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
102819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1028205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1028305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
102849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1028593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
102860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
102870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
102880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glSetFenceNV(GLuint fence, GLenum condition) {
102890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
102900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
102910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
102920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glSetFenceNV);
102930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
102940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument fence
102950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_fence = glmsg.add_args();
102960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fence->set_isarray(false);
102970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fence->set_type(GLMessage::DataType::INT);
102980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_fence->add_intvalue(fence);
102990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
103000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument condition
103010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_condition = glmsg.add_args();
103020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_condition->set_isarray(false);
103030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_condition->set_type(GLMessage::DataType::ENUM);
103040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_condition->add_intvalue((int)condition);
103050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
103060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1030705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1030805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
103090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glSetFenceNV(fence, condition);
1031005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1031105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
103120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
103139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
103149801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
103159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1031605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1031705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
103189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1031993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
103200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
103210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1032231272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glReadBufferNV(GLenum mode) {
103230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
103240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
103250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1032631272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glReadBufferNV);
103270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1032831272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument mode
1032931272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_mode = glmsg.add_args();
1033031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_mode->set_isarray(false);
1033131272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_mode->set_type(GLMessage::DataType::ENUM);
1033231272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_mode->add_intvalue((int)mode);
103330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
103340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1033505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1033605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1033731272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glReadBufferNV(mode);
1033805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1033905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
103400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
103419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
103429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
103439801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1034405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1034505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
103469801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1034793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
103480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
103490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1035031272606149d83437a097800074b21e9e6a205adMathias Agopianvoid GLTrace_glAlphaFuncQCOM(GLenum func, GLclampf ref) {
103510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
103520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
103530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1035431272606149d83437a097800074b21e9e6a205adMathias Agopian    glmsg.set_function(GLMessage::glAlphaFuncQCOM);
103550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
1035631272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument func
1035731272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_func = glmsg.add_args();
1035831272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_func->set_isarray(false);
1035931272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_func->set_type(GLMessage::DataType::ENUM);
1036031272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_func->add_intvalue((int)func);
1036131272606149d83437a097800074b21e9e6a205adMathias Agopian
1036231272606149d83437a097800074b21e9e6a205adMathias Agopian    // copy argument ref
1036331272606149d83437a097800074b21e9e6a205adMathias Agopian    GLMessage_DataType *arg_ref = glmsg.add_args();
1036431272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_ref->set_isarray(false);
1036531272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_ref->set_type(GLMessage::DataType::FLOAT);
1036631272606149d83437a097800074b21e9e6a205adMathias Agopian    arg_ref->add_floatvalue(ref);
103670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
103680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1036905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1037005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
1037131272606149d83437a097800074b21e9e6a205adMathias Agopian    glContext->hooks->gl.glAlphaFuncQCOM(func, ref);
1037205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1037305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
103740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
103759801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
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_glGetDriverControlsQCOM(GLint *num, GLsizei size, GLuint *driverControls) {
103850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
103860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
103870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
103880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetDriverControlsQCOM);
103890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
103900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument num
103910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_num = glmsg.add_args();
103920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_num->set_isarray(false);
103930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_num->set_type(GLMessage::DataType::INT);
103940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_num->add_intvalue((int)num);
103950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
103960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument size
103970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_size = glmsg.add_args();
103980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_isarray(false);
103990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_type(GLMessage::DataType::INT);
104000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->add_intvalue(size);
104010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument driverControls
104030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_driverControls = glmsg.add_args();
104040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_driverControls->set_isarray(false);
104050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_driverControls->set_type(GLMessage::DataType::INT);
104060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_driverControls->add_intvalue((int)driverControls);
104070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1040905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1041005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
104110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetDriverControlsQCOM(num, size, driverControls);
1041205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1041305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
104140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
104169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) num,
104179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) driverControls,
104189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
104199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1042005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1042105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
104229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1042393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
104240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
104250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetDriverControlStringQCOM(GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString) {
104270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
104280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
104290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetDriverControlStringQCOM);
104310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument driverControl
104330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_driverControl = glmsg.add_args();
104340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_driverControl->set_isarray(false);
104350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_driverControl->set_type(GLMessage::DataType::INT);
104360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_driverControl->add_intvalue(driverControl);
104370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument bufSize
104390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_bufSize = glmsg.add_args();
104400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufSize->set_isarray(false);
104410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufSize->set_type(GLMessage::DataType::INT);
104420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bufSize->add_intvalue(bufSize);
104430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument length
104450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_length = glmsg.add_args();
104460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_isarray(false);
104470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_type(GLMessage::DataType::INT);
104480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->add_intvalue((int)length);
104490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument driverControlString
104510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_driverControlString = glmsg.add_args();
104520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_driverControlString->set_isarray(false);
104530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_driverControlString->set_type(GLMessage::DataType::INT);
104540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_driverControlString->add_intvalue((int)driverControlString);
104550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1045705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1045805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
104590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetDriverControlStringQCOM(driverControl, bufSize, length, driverControlString);
1046005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1046105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
104620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
104649801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) length,
104659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) driverControlString,
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_glEnableDriverControlQCOM(GLuint driverControl) {
104750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
104760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
104770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glEnableDriverControlQCOM);
104790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument driverControl
104810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_driverControl = glmsg.add_args();
104820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_driverControl->set_isarray(false);
104830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_driverControl->set_type(GLMessage::DataType::INT);
104840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_driverControl->add_intvalue(driverControl);
104850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1048705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1048805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
104890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glEnableDriverControlQCOM(driverControl);
1049005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1049105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
104920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
104939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
104949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
104959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1049605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1049705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
104989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1049993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
105000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
105010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDisableDriverControlQCOM(GLuint driverControl) {
105030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
105040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
105050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDisableDriverControlQCOM);
105070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument driverControl
105090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_driverControl = glmsg.add_args();
105100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_driverControl->set_isarray(false);
105110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_driverControl->set_type(GLMessage::DataType::INT);
105120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_driverControl->add_intvalue(driverControl);
105130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1051505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1051605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
105170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDisableDriverControlQCOM(driverControl);
1051805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1051905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
105200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
105229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
105239801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1052405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1052505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
105269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1052793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
105280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
105290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glExtGetTexturesQCOM(GLuint *textures, GLint maxTextures, GLint *numTextures) {
105310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
105320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
105330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glExtGetTexturesQCOM);
105350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument textures
105370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_textures = glmsg.add_args();
105380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_textures->set_isarray(false);
105390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_textures->set_type(GLMessage::DataType::INT);
105400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_textures->add_intvalue((int)textures);
105410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument maxTextures
105430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_maxTextures = glmsg.add_args();
105440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxTextures->set_isarray(false);
105450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxTextures->set_type(GLMessage::DataType::INT);
105460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxTextures->add_intvalue(maxTextures);
105470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument numTextures
105490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_numTextures = glmsg.add_args();
105500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numTextures->set_isarray(false);
105510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numTextures->set_type(GLMessage::DataType::INT);
105520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numTextures->add_intvalue((int)numTextures);
105530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1055505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1055605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
105570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glExtGetTexturesQCOM(textures, maxTextures, numTextures);
1055805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1055905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
105600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
105629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) textures,
105639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) numTextures,
105649801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
105659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1056605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1056705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
105689801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1056993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
105700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
105710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glExtGetBuffersQCOM(GLuint *buffers, GLint maxBuffers, GLint *numBuffers) {
105730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
105740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
105750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glExtGetBuffersQCOM);
105770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument buffers
105790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_buffers = glmsg.add_args();
105800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_buffers->set_isarray(false);
105810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_buffers->set_type(GLMessage::DataType::INT);
105820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_buffers->add_intvalue((int)buffers);
105830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument maxBuffers
105850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_maxBuffers = glmsg.add_args();
105860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxBuffers->set_isarray(false);
105870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxBuffers->set_type(GLMessage::DataType::INT);
105880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxBuffers->add_intvalue(maxBuffers);
105890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument numBuffers
105910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_numBuffers = glmsg.add_args();
105920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numBuffers->set_isarray(false);
105930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numBuffers->set_type(GLMessage::DataType::INT);
105940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numBuffers->add_intvalue((int)numBuffers);
105950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
105960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1059705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1059805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
105990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glExtGetBuffersQCOM(buffers, maxBuffers, numBuffers);
1060005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1060105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
106020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
106049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) buffers,
106059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) numBuffers,
106069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
106079801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1060805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1060905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
106109801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1061193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
106120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
106130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glExtGetRenderbuffersQCOM(GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers) {
106150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
106160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
106170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glExtGetRenderbuffersQCOM);
106190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument renderbuffers
106210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_renderbuffers = glmsg.add_args();
106220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffers->set_isarray(false);
106230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffers->set_type(GLMessage::DataType::INT);
106240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffers->add_intvalue((int)renderbuffers);
106250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument maxRenderbuffers
106270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_maxRenderbuffers = glmsg.add_args();
106280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxRenderbuffers->set_isarray(false);
106290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxRenderbuffers->set_type(GLMessage::DataType::INT);
106300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxRenderbuffers->add_intvalue(maxRenderbuffers);
106310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument numRenderbuffers
106330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_numRenderbuffers = glmsg.add_args();
106340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numRenderbuffers->set_isarray(false);
106350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numRenderbuffers->set_type(GLMessage::DataType::INT);
106360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numRenderbuffers->add_intvalue((int)numRenderbuffers);
106370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1063905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1064005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
106410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glExtGetRenderbuffersQCOM(renderbuffers, maxRenderbuffers, numRenderbuffers);
1064205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1064305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
106440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106459801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
106469801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) renderbuffers,
106479801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) numRenderbuffers,
106489801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
106499801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1065005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1065105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
106529801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1065393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
106540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
106550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glExtGetFramebuffersQCOM(GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers) {
106570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
106580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
106590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glExtGetFramebuffersQCOM);
106610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument framebuffers
106630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_framebuffers = glmsg.add_args();
106640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffers->set_isarray(false);
106650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffers->set_type(GLMessage::DataType::INT);
106660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffers->add_intvalue((int)framebuffers);
106670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument maxFramebuffers
106690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_maxFramebuffers = glmsg.add_args();
106700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxFramebuffers->set_isarray(false);
106710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxFramebuffers->set_type(GLMessage::DataType::INT);
106720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxFramebuffers->add_intvalue(maxFramebuffers);
106730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument numFramebuffers
106750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_numFramebuffers = glmsg.add_args();
106760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numFramebuffers->set_isarray(false);
106770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numFramebuffers->set_type(GLMessage::DataType::INT);
106780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numFramebuffers->add_intvalue((int)numFramebuffers);
106790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1068105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1068205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
106830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glExtGetFramebuffersQCOM(framebuffers, maxFramebuffers, numFramebuffers);
1068405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1068505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
106860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106879801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
106889801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) framebuffers,
106899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) numFramebuffers,
106909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
106919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1069205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1069305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
106949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1069593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
106960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
106970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
106980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glExtGetTexLevelParameterivQCOM(GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params) {
106990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
107000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
107010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glExtGetTexLevelParameterivQCOM);
107030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument texture
107050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_texture = glmsg.add_args();
107060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->set_isarray(false);
107070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->set_type(GLMessage::DataType::INT);
107080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->add_intvalue(texture);
107090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument face
107110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_face = glmsg.add_args();
107120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_isarray(false);
107130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_type(GLMessage::DataType::ENUM);
107140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->add_intvalue((int)face);
107150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument level
107170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_level = glmsg.add_args();
107180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_isarray(false);
107190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_type(GLMessage::DataType::INT);
107200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->add_intvalue(level);
107210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
107230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
107240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
107250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
107260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
107270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
107290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
107300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
107310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
107320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
107330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1073505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1073605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
107370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glExtGetTexLevelParameterivQCOM(texture, face, level, pname, params);
1073805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1073905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
107400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
107429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
107439801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
107449801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1074505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1074605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
107479801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1074893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
107490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
107500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glExtTexObjectStateOverrideiQCOM(GLenum target, GLenum pname, GLint param) {
107520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
107530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
107540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glExtTexObjectStateOverrideiQCOM);
107560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
107580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
107590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
107600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
107610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
107620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
107640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
107650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
107660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
107670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
107680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
107700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
107710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
107720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
107730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
107740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1077605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1077705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
107780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glExtTexObjectStateOverrideiQCOM(target, pname, param);
1077905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1078005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
107810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107829801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
107839801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
107849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1078505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1078605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
107879801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1078893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
107890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
107900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107910469dd6d55fa331bfd7de9431da98b6340d82271Siva 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) {
107920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
107930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
107940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glExtGetTexSubImageQCOM);
107960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
107970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
107980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
107990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
108000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
108010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
108020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument level
108040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_level = glmsg.add_args();
108050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_isarray(false);
108060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_type(GLMessage::DataType::INT);
108070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->add_intvalue(level);
108080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument xoffset
108100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_xoffset = glmsg.add_args();
108110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->set_isarray(false);
108120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->set_type(GLMessage::DataType::INT);
108130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_xoffset->add_intvalue(xoffset);
108140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument yoffset
108160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_yoffset = glmsg.add_args();
108170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->set_isarray(false);
108180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->set_type(GLMessage::DataType::INT);
108190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_yoffset->add_intvalue(yoffset);
108200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zoffset
108220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zoffset = glmsg.add_args();
108230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zoffset->set_isarray(false);
108240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zoffset->set_type(GLMessage::DataType::INT);
108250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zoffset->add_intvalue(zoffset);
108260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
108280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
108290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
108300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
108310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
108320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
108340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
108350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
108360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
108370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
108380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument depth
108400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_depth = glmsg.add_args();
108410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_isarray(false);
108420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_type(GLMessage::DataType::INT);
108430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->add_intvalue(depth);
108440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument format
108460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_format = glmsg.add_args();
108470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->set_isarray(false);
108480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->set_type(GLMessage::DataType::ENUM);
108490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_format->add_intvalue((int)format);
108500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument type
108520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_type = glmsg.add_args();
108530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_isarray(false);
108540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_type(GLMessage::DataType::ENUM);
108550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->add_intvalue((int)type);
108560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument texels
108580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_texels = glmsg.add_args();
108590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texels->set_isarray(false);
108600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texels->set_type(GLMessage::DataType::INT);
108610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texels->add_intvalue((int)texels);
108620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1086405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1086505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
108660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glExtGetTexSubImageQCOM(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, texels);
1086705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1086805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
108690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108709801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
108719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) texels,
108729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
108739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1087405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1087505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
108769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1087793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
108780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
108790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glExtGetBufferPointervQCOM(GLenum target, GLvoid **params) {
108810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
108820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
108830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glExtGetBufferPointervQCOM);
108850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
108870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
108880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
108890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
108900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
108910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
108930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
108940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
108950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
108960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
108970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
108980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1089905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1090005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
109010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glExtGetBufferPointervQCOM(target, params);
1090205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1090305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
109040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
109069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
109079801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
109089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1090905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1091005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
109119801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1091293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
109130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
109140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glExtGetShadersQCOM(GLuint *shaders, GLint maxShaders, GLint *numShaders) {
109160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
109170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
109180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glExtGetShadersQCOM);
109200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument shaders
109220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_shaders = glmsg.add_args();
109230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shaders->set_isarray(false);
109240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shaders->set_type(GLMessage::DataType::INT);
109250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shaders->add_intvalue((int)shaders);
109260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument maxShaders
109280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_maxShaders = glmsg.add_args();
109290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxShaders->set_isarray(false);
109300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxShaders->set_type(GLMessage::DataType::INT);
109310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxShaders->add_intvalue(maxShaders);
109320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument numShaders
109340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_numShaders = glmsg.add_args();
109350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numShaders->set_isarray(false);
109360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numShaders->set_type(GLMessage::DataType::INT);
109370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numShaders->add_intvalue((int)numShaders);
109380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1094005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1094105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
109420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glExtGetShadersQCOM(shaders, maxShaders, numShaders);
1094305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1094405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
109450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109469801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
109479801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) shaders,
109489801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) numShaders,
109499801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
109509801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1095105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1095205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
109539801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1095493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
109550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
109560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glExtGetProgramsQCOM(GLuint *programs, GLint maxPrograms, GLint *numPrograms) {
109580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
109590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
109600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glExtGetProgramsQCOM);
109620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument programs
109640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_programs = glmsg.add_args();
109650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_programs->set_isarray(false);
109660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_programs->set_type(GLMessage::DataType::INT);
109670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_programs->add_intvalue((int)programs);
109680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument maxPrograms
109700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_maxPrograms = glmsg.add_args();
109710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxPrograms->set_isarray(false);
109720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxPrograms->set_type(GLMessage::DataType::INT);
109730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_maxPrograms->add_intvalue(maxPrograms);
109740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument numPrograms
109760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_numPrograms = glmsg.add_args();
109770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numPrograms->set_isarray(false);
109780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numPrograms->set_type(GLMessage::DataType::INT);
109790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_numPrograms->add_intvalue((int)numPrograms);
109800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1098205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1098305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
109840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glExtGetProgramsQCOM(programs, maxPrograms, numPrograms);
1098505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1098605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
109870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109889801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
109899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) programs,
109909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) numPrograms,
109919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
109929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1099305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1099405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
109959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1099693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
109970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
109980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
109990469dd6d55fa331bfd7de9431da98b6340d82271Siva VelusamyGLboolean GLTrace_glExtIsProgramBinaryQCOM(GLuint program) {
110000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
110010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
110020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glExtIsProgramBinaryQCOM);
110040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument program
110060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_program = glmsg.add_args();
110070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_isarray(false);
110080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_type(GLMessage::DataType::INT);
110090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->add_intvalue(program);
110100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1101205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1101305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
110140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLboolean retValue = glContext->hooks->gl.glExtIsProgramBinaryQCOM(program);
1101505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1101605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
110170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
110190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
110200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
110210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::BOOL);
110220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_boolvalue(retValue);
110230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110249801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
110259801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
110269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1102705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1102805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
110299801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1103093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
110310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
110330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
110340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glExtGetProgramBinarySourceQCOM(GLuint program, GLenum shadertype, GLchar *source, GLint *length) {
110360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
110370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
110380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glExtGetProgramBinarySourceQCOM);
110400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument program
110420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_program = glmsg.add_args();
110430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_isarray(false);
110440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->set_type(GLMessage::DataType::INT);
110450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_program->add_intvalue(program);
110460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument shadertype
110480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_shadertype = glmsg.add_args();
110490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shadertype->set_isarray(false);
110500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shadertype->set_type(GLMessage::DataType::ENUM);
110510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_shadertype->add_intvalue((int)shadertype);
110520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument source
110540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_source = glmsg.add_args();
110550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_source->set_isarray(false);
110560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_source->set_type(GLMessage::DataType::INT);
110570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_source->add_intvalue((int)source);
110580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument length
110600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_length = glmsg.add_args();
110610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_isarray(false);
110620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->set_type(GLMessage::DataType::INT);
110630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_length->add_intvalue((int)length);
110640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1106605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1106705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
110680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glExtGetProgramBinarySourceQCOM(program, shadertype, source, length);
1106905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1107005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
110710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
110739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) source,
110749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) length,
110759801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
110769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1107705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1107805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
110799801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1108093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
110810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
110820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glStartTilingQCOM(GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask) {
110840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
110850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
110860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glStartTilingQCOM);
110880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
110900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
110910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
110920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::INT);
110930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_intvalue(x);
110940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
110950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
110960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
110970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
110980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::INT);
110990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_intvalue(y);
111000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
111020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
111030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
111040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
111050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
111060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
111080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
111090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
111100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
111110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
111120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument preserveMask
111140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_preserveMask = glmsg.add_args();
111150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_preserveMask->set_isarray(false);
111160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_preserveMask->set_type(GLMessage::DataType::INT);
111170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_preserveMask->add_intvalue(preserveMask);
111180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1112005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1112105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
111220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glStartTilingQCOM(x, y, width, height, preserveMask);
1112305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1112405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
111250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
111279801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
111289801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1112905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1113005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
111319801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1113293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
111330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
111340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glEndTilingQCOM(GLbitfield preserveMask) {
111360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
111370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
111380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glEndTilingQCOM);
111400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument preserveMask
111420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_preserveMask = glmsg.add_args();
111430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_preserveMask->set_isarray(false);
111440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_preserveMask->set_type(GLMessage::DataType::INT);
111450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_preserveMask->add_intvalue(preserveMask);
111460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1114805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1114905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
111500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glEndTilingQCOM(preserveMask);
1115105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1115205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
111530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
111559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
111569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1115705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1115805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
111599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1116093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
111610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
111620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy// Definitions for GL1 APIs
111650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glAlphaFunc(GLenum func, GLclampf ref) {
111670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
111680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
111690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glAlphaFunc);
111710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument func
111730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_func = glmsg.add_args();
111740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_func->set_isarray(false);
111750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_func->set_type(GLMessage::DataType::ENUM);
111760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_func->add_intvalue((int)func);
111770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument ref
111790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_ref = glmsg.add_args();
111800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ref->set_isarray(false);
111810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ref->set_type(GLMessage::DataType::FLOAT);
111820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ref->add_floatvalue(ref);
111830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1118505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1118605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
111870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glAlphaFunc(func, ref);
1118805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1118905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
111900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
111919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
111929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
111939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1119405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1119505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
111969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1119793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
111980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
111990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glClipPlanef(GLenum plane, const GLfloat *equation) {
112010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
112020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
112030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glClipPlanef);
112050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument plane
112070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_plane = glmsg.add_args();
112080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_plane->set_isarray(false);
112090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_plane->set_type(GLMessage::DataType::ENUM);
112100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_plane->add_intvalue((int)plane);
112110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument equation
112130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_equation = glmsg.add_args();
112140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_equation->set_isarray(false);
112150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_equation->set_type(GLMessage::DataType::INT);
112160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_equation->add_intvalue((int)equation);
112170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1121905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1122005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
112210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glClipPlanef(plane, equation);
1122205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1122305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
112240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112259801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
112269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) equation,
112279801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
112289801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1122905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1123005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
112319801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1123293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
112330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
112340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) {
112360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
112370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
112380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glColor4f);
112400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument red
112420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_red = glmsg.add_args();
112430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->set_isarray(false);
112440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->set_type(GLMessage::DataType::FLOAT);
112450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->add_floatvalue(red);
112460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument green
112480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_green = glmsg.add_args();
112490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->set_isarray(false);
112500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->set_type(GLMessage::DataType::FLOAT);
112510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->add_floatvalue(green);
112520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument blue
112540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_blue = glmsg.add_args();
112550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->set_isarray(false);
112560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->set_type(GLMessage::DataType::FLOAT);
112570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->add_floatvalue(blue);
112580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument alpha
112600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_alpha = glmsg.add_args();
112610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->set_isarray(false);
112620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->set_type(GLMessage::DataType::FLOAT);
112630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->add_floatvalue(alpha);
112640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1126605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1126705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
112680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glColor4f(red, green, blue, alpha);
1126905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1127005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
112710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
112739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
112749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1127505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1127605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
112779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1127893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
112790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
112800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFogf(GLenum pname, GLfloat param) {
112820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
112830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
112840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFogf);
112860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
112880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
112890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
112900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
112910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
112920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
112940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
112950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
112960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::FLOAT);
112970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_floatvalue(param);
112980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
112990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1130005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1130105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
113020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFogf(pname, param);
1130305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1130405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
113050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
113079801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
113089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1130905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1131005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
113119801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1131293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
113130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
113140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFogfv(GLenum pname, const GLfloat *params) {
113160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
113170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
113180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFogfv);
113200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
113220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
113230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
113240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
113250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
113260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
113280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
113290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
113300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
113310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
113320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1133405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1133505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
113360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFogfv(pname, params);
1133705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1133805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
113390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113409801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
113419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
113429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
113439801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1134405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1134505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
113469801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1134793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
113480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
113490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFrustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) {
113510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
113520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
113530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFrustumf);
113550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument left
113570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_left = glmsg.add_args();
113580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_isarray(false);
113590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_type(GLMessage::DataType::FLOAT);
113600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->add_floatvalue(left);
113610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument right
113630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_right = glmsg.add_args();
113640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_isarray(false);
113650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_type(GLMessage::DataType::FLOAT);
113660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->add_floatvalue(right);
113670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument bottom
113690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_bottom = glmsg.add_args();
113700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_isarray(false);
113710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_type(GLMessage::DataType::FLOAT);
113720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->add_floatvalue(bottom);
113730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument top
113750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_top = glmsg.add_args();
113760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_isarray(false);
113770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_type(GLMessage::DataType::FLOAT);
113780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->add_floatvalue(top);
113790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zNear
113810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zNear = glmsg.add_args();
113820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_isarray(false);
113830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_type(GLMessage::DataType::FLOAT);
113840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->add_floatvalue(zNear);
113850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zFar
113870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zFar = glmsg.add_args();
113880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_isarray(false);
113890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_type(GLMessage::DataType::FLOAT);
113900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->add_floatvalue(zFar);
113910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1139305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1139405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
113950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFrustumf(left, right, bottom, top, zNear, zFar);
1139605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1139705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
113980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
113999801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
114009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
114019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1140205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1140305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
114049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1140593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
114060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
114070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetClipPlanef(GLenum pname, GLfloat eqn[4]) {
114090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
114100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
114110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetClipPlanef);
114130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
114150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
114160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
114170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
114180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
114190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument eqn
114210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_eqn = glmsg.add_args();
114220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_eqn->set_isarray(false);
114230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_eqn->set_type(GLMessage::DataType::INT);
114240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_eqn->add_intvalue((int)eqn);
114250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1142705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1142805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
114290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetClipPlanef(pname, eqn);
1143005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1143105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
114320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
114349801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) eqn,
114359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
114369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1143705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1143805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
114399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1144093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
114410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
114420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetLightfv(GLenum light, GLenum pname, GLfloat *params) {
114440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
114450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
114460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetLightfv);
114480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument light
114500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_light = glmsg.add_args();
114510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_isarray(false);
114520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_type(GLMessage::DataType::ENUM);
114530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->add_intvalue((int)light);
114540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
114560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
114570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
114580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
114590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
114600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
114620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
114630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
114640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
114650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
114660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1146805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1146905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
114700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetLightfv(light, pname, params);
1147105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1147205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
114730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
114759801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
114769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
114779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1147805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1147905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
114809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1148193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
114820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
114830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params) {
114850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
114860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
114870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetMaterialfv);
114890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument face
114910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_face = glmsg.add_args();
114920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_isarray(false);
114930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_type(GLMessage::DataType::ENUM);
114940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->add_intvalue((int)face);
114950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
114960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
114970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
114980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
114990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
115000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
115010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
115030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
115040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
115050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
115060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
115070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1150905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1151005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
115110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetMaterialfv(face, pname, params);
1151205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1151305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
115140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
115169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
115179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
115189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1151905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1152005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
115219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1152293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
115230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
115240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetTexEnvfv(GLenum env, GLenum pname, GLfloat *params) {
115260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
115270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
115280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetTexEnvfv);
115300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument env
115320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_env = glmsg.add_args();
115330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_env->set_isarray(false);
115340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_env->set_type(GLMessage::DataType::ENUM);
115350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_env->add_intvalue((int)env);
115360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
115380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
115390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
115400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
115410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
115420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
115440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
115450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
115460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
115470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
115480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1155005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1155105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
115520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetTexEnvfv(env, pname, params);
1155305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1155405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
115550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
115579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
115589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
115599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1156005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1156105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
115629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1156393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
115640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
115650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLightModelf(GLenum pname, GLfloat param) {
115670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
115680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
115690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLightModelf);
115710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
115730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
115740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
115750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
115760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
115770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
115790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
115800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
115810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::FLOAT);
115820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_floatvalue(param);
115830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1158505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1158605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
115870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLightModelf(pname, param);
1158805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1158905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
115900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
115919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
115929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
115939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1159405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1159505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
115969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1159793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
115980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
115990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLightModelfv(GLenum pname, const GLfloat *params) {
116010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
116020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
116030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLightModelfv);
116050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
116070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
116080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
116090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
116100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
116110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
116130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
116140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
116150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
116160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
116170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1161905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1162005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
116210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLightModelfv(pname, params);
1162205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1162305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
116240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116259801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
116269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
116279801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
116289801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1162905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1163005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
116319801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1163293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
116330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
116340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLightf(GLenum light, GLenum pname, GLfloat param) {
116360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
116370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
116380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLightf);
116400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument light
116420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_light = glmsg.add_args();
116430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_isarray(false);
116440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_type(GLMessage::DataType::ENUM);
116450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->add_intvalue((int)light);
116460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
116480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
116490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
116500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
116510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
116520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
116540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
116550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
116560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::FLOAT);
116570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_floatvalue(param);
116580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1166005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1166105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
116620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLightf(light, pname, param);
1166305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1166405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
116650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
116679801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
116689801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1166905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1167005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
116719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1167293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
116730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
116740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLightfv(GLenum light, GLenum pname, const GLfloat *params) {
116760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
116770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
116780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLightfv);
116800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument light
116820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_light = glmsg.add_args();
116830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_isarray(false);
116840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_type(GLMessage::DataType::ENUM);
116850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->add_intvalue((int)light);
116860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
116880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
116890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
116900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
116910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
116920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
116940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
116950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
116960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
116970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
116980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
116990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1170005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1170105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
117020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLightfv(light, pname, params);
1170305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1170405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
117050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
117069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
117079801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
117089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
117099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1171005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1171105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
117129801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1171393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
117140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
117150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
117160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLoadMatrixf(const GLfloat *m) {
117170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
117180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
117190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
117200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLoadMatrixf);
117210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
117220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument m
117230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_m = glmsg.add_args();
117240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_m->set_isarray(false);
117250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_m->set_type(GLMessage::DataType::INT);
117260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_m->add_intvalue((int)m);
117270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
117280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1172905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1173005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
117310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLoadMatrixf(m);
1173205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1173305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
117340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
117359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
117369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) m,
117379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
117389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1173905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1174005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
117419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1174293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
117430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
117440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
117450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glMaterialf(GLenum face, GLenum pname, GLfloat param) {
117460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
117470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
117480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
117490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glMaterialf);
117500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
117510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument face
117520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_face = glmsg.add_args();
117530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_isarray(false);
117540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_type(GLMessage::DataType::ENUM);
117550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->add_intvalue((int)face);
117560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
117570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
117580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
117590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
117600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
117610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
117620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
117630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
117640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
117650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
117660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::FLOAT);
117670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_floatvalue(param);
117680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
117690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1177005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1177105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
117720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glMaterialf(face, pname, param);
1177305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1177405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
117750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
117769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
117779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
117789801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1177905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1178005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
117819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1178293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
117830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
117840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
117850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glMaterialfv(GLenum face, GLenum pname, const GLfloat *params) {
117860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
117870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
117880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
117890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glMaterialfv);
117900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
117910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument face
117920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_face = glmsg.add_args();
117930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_isarray(false);
117940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_type(GLMessage::DataType::ENUM);
117950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->add_intvalue((int)face);
117960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
117970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
117980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
117990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
118000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
118010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
118020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
118030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
118040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
118050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
118060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
118070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
118080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
118090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1181005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1181105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
118120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glMaterialfv(face, pname, params);
1181305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1181405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
118150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
118169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
118179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
118189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
118199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1182005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1182105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
118229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1182393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
118240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
118250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
118260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glMultMatrixf(const GLfloat *m) {
118270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
118280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
118290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
118300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glMultMatrixf);
118310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
118320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument m
118330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_m = glmsg.add_args();
118340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_m->set_isarray(false);
118350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_m->set_type(GLMessage::DataType::INT);
118360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_m->add_intvalue((int)m);
118370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
118380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1183905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1184005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
118410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glMultMatrixf(m);
1184205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1184305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
118440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
118459801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
118469801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) m,
118479801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
118489801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1184905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1185005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
118519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1185293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
118530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
118540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
118550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) {
118560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
118570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
118580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
118590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glMultiTexCoord4f);
118600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
118610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
118620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
118630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
118640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
118650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
118660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
118670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument s
118680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_s = glmsg.add_args();
118690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_s->set_isarray(false);
118700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_s->set_type(GLMessage::DataType::FLOAT);
118710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_s->add_floatvalue(s);
118720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
118730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument t
118740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_t = glmsg.add_args();
118750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_t->set_isarray(false);
118760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_t->set_type(GLMessage::DataType::FLOAT);
118770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_t->add_floatvalue(t);
118780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
118790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument r
118800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_r = glmsg.add_args();
118810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_r->set_isarray(false);
118820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_r->set_type(GLMessage::DataType::FLOAT);
118830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_r->add_floatvalue(r);
118840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
118850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument q
118860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_q = glmsg.add_args();
118870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_q->set_isarray(false);
118880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_q->set_type(GLMessage::DataType::FLOAT);
118890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_q->add_floatvalue(q);
118900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
118910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1189205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1189305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
118940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glMultiTexCoord4f(target, s, t, r, q);
1189505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1189605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
118970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
118989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
118999801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
119009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1190105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1190205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
119039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1190493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
119050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
119060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
119070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz) {
119080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
119090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
119100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
119110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glNormal3f);
119120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
119130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument nx
119140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_nx = glmsg.add_args();
119150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nx->set_isarray(false);
119160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nx->set_type(GLMessage::DataType::FLOAT);
119170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nx->add_floatvalue(nx);
119180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
119190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument ny
119200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_ny = glmsg.add_args();
119210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ny->set_isarray(false);
119220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ny->set_type(GLMessage::DataType::FLOAT);
119230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ny->add_floatvalue(ny);
119240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
119250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument nz
119260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_nz = glmsg.add_args();
119270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nz->set_isarray(false);
119280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nz->set_type(GLMessage::DataType::FLOAT);
119290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nz->add_floatvalue(nz);
119300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
119310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1193205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1193305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
119340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glNormal3f(nx, ny, nz);
1193505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1193605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
119370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
119389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
119399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
119409801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1194105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1194205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
119439801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1194493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
119450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
119460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
119470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glOrthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) {
119480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
119490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
119500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
119510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glOrthof);
119520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
119530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument left
119540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_left = glmsg.add_args();
119550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_isarray(false);
119560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_type(GLMessage::DataType::FLOAT);
119570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->add_floatvalue(left);
119580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
119590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument right
119600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_right = glmsg.add_args();
119610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_isarray(false);
119620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_type(GLMessage::DataType::FLOAT);
119630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->add_floatvalue(right);
119640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
119650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument bottom
119660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_bottom = glmsg.add_args();
119670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_isarray(false);
119680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_type(GLMessage::DataType::FLOAT);
119690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->add_floatvalue(bottom);
119700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
119710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument top
119720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_top = glmsg.add_args();
119730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_isarray(false);
119740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_type(GLMessage::DataType::FLOAT);
119750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->add_floatvalue(top);
119760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
119770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zNear
119780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zNear = glmsg.add_args();
119790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_isarray(false);
119800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_type(GLMessage::DataType::FLOAT);
119810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->add_floatvalue(zNear);
119820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
119830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zFar
119840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zFar = glmsg.add_args();
119850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_isarray(false);
119860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_type(GLMessage::DataType::FLOAT);
119870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->add_floatvalue(zFar);
119880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
119890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1199005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1199105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
119920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glOrthof(left, right, bottom, top, zNear, zFar);
1199305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1199405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
119950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
119969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
119979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
119989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1199905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1200005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
120019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1200293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
120030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
120040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
120050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glPointParameterf(GLenum pname, GLfloat param) {
120060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
120070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
120080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
120090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glPointParameterf);
120100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
120110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
120120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
120130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
120140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
120150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
120160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
120170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
120180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
120190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
120200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::FLOAT);
120210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_floatvalue(param);
120220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
120230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1202405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1202505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
120260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glPointParameterf(pname, param);
1202705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1202805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
120290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
120309801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
120319801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
120329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1203305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1203405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
120359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1203693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
120370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
120380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
120390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glPointParameterfv(GLenum pname, const GLfloat *params) {
120400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
120410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
120420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
120430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glPointParameterfv);
120440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
120450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
120460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
120470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
120480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
120490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
120500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
120510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
120520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
120530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
120540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
120550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
120560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
120570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1205805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1205905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
120600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glPointParameterfv(pname, params);
1206105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1206205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
120630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
120649801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
120659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
120669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
120679801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1206805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1206905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
120709801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1207193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
120720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
120730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
120740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glPointSize(GLfloat size) {
120750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
120760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
120770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
120780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glPointSize);
120790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
120800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument size
120810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_size = glmsg.add_args();
120820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_isarray(false);
120830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_type(GLMessage::DataType::FLOAT);
120840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->add_floatvalue(size);
120850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
120860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1208705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1208805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
120890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glPointSize(size);
1209005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1209105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
120920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
120939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
120949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
120959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1209605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1209705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
120989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1209993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
121000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
121010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
121020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) {
121030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
121040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
121050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
121060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glRotatef);
121070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
121080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument angle
121090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_angle = glmsg.add_args();
121100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_angle->set_isarray(false);
121110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_angle->set_type(GLMessage::DataType::FLOAT);
121120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_angle->add_floatvalue(angle);
121130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
121140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
121150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
121160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
121170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::FLOAT);
121180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_floatvalue(x);
121190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
121200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
121210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
121220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
121230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::FLOAT);
121240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_floatvalue(y);
121250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
121260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
121270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
121280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
121290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::FLOAT);
121300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_floatvalue(z);
121310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
121320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1213305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1213405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
121350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glRotatef(angle, x, y, z);
1213605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1213705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
121380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
121399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
121409801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
121419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1214205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1214305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
121449801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1214593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
121460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
121470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
121480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glScalef(GLfloat x, GLfloat y, GLfloat z) {
121490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
121500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
121510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
121520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glScalef);
121530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
121540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
121550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
121560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
121570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::FLOAT);
121580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_floatvalue(x);
121590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
121600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
121610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
121620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
121630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::FLOAT);
121640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_floatvalue(y);
121650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
121660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
121670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
121680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
121690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::FLOAT);
121700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_floatvalue(z);
121710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
121720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1217305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1217405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
121750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glScalef(x, y, z);
1217605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1217705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
121780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
121799801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
121809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
121819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1218205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1218305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
121849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1218593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
121860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
121870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
121880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexEnvf(GLenum target, GLenum pname, GLfloat param) {
121890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
121900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
121910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
121920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexEnvf);
121930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
121940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
121950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
121960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
121970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
121980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
121990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
122000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
122010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
122020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
122030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
122040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
122050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
122060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
122070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
122080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
122090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::FLOAT);
122100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_floatvalue(param);
122110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
122120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1221305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1221405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
122150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexEnvf(target, pname, param);
1221605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1221705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
122180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
122199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
122209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
122219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1222205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1222305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
122249801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1222593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
122260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
122270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
122280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params) {
122290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
122300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
122310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
122320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexEnvfv);
122330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
122340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
122350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
122360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
122370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
122380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
122390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
122400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
122410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
122420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
122430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
122440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
122450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
122460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
122470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
122480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
122490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
122500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
122510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
122520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1225305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1225405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
122550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexEnvfv(target, pname, params);
1225605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1225705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
122580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
122599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
122609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
122619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
122629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1226305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1226405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
122659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1226693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
122670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
122680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
122690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTranslatef(GLfloat x, GLfloat y, GLfloat z) {
122700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
122710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
122720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
122730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTranslatef);
122740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
122750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
122760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
122770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
122780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::FLOAT);
122790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_floatvalue(x);
122800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
122810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
122820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
122830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
122840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::FLOAT);
122850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_floatvalue(y);
122860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
122870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
122880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
122890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
122900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::FLOAT);
122910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_floatvalue(z);
122920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
122930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1229405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1229505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
122960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTranslatef(x, y, z);
1229705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1229805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
122990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
123009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
123019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
123029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1230305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1230405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
123059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1230693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
123070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
123080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
123090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glAlphaFuncx(GLenum func, GLclampx ref) {
123100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
123110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
123120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
123130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glAlphaFuncx);
123140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
123150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument func
123160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_func = glmsg.add_args();
123170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_func->set_isarray(false);
123180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_func->set_type(GLMessage::DataType::ENUM);
123190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_func->add_intvalue((int)func);
123200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
123210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument ref
123220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_ref = glmsg.add_args();
123230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ref->set_isarray(false);
123240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ref->set_type(GLMessage::DataType::INT);
123250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ref->add_intvalue(ref);
123260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
123270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1232805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1232905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
123300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glAlphaFuncx(func, ref);
1233105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1233205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
123330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
123349801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
123359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
123369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1233705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1233805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
123399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1234093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
123410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
123420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
123430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glClearColorx(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha) {
123440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
123450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
123460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
123470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glClearColorx);
123480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
123490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument red
123500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_red = glmsg.add_args();
123510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->set_isarray(false);
123520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->set_type(GLMessage::DataType::INT);
123530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->add_intvalue(red);
123540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
123550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument green
123560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_green = glmsg.add_args();
123570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->set_isarray(false);
123580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->set_type(GLMessage::DataType::INT);
123590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->add_intvalue(green);
123600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
123610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument blue
123620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_blue = glmsg.add_args();
123630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->set_isarray(false);
123640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->set_type(GLMessage::DataType::INT);
123650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->add_intvalue(blue);
123660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
123670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument alpha
123680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_alpha = glmsg.add_args();
123690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->set_isarray(false);
123700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->set_type(GLMessage::DataType::INT);
123710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->add_intvalue(alpha);
123720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
123730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1237405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1237505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
123760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glClearColorx(red, green, blue, alpha);
1237705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1237805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
123790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
123809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
123819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
123829801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1238305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1238405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
123859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1238693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
123870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
123880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
123890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glClearDepthx(GLclampx depth) {
123900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
123910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
123920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
123930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glClearDepthx);
123940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
123950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument depth
123960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_depth = glmsg.add_args();
123970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_isarray(false);
123980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_type(GLMessage::DataType::INT);
123990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->add_intvalue(depth);
124000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
124010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1240205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1240305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
124040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glClearDepthx(depth);
1240505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1240605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
124070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
124089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
124099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
124109801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1241105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1241205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
124139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1241493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
124150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
124160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
124170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glClientActiveTexture(GLenum texture) {
124180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
124190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
124200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
124210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glClientActiveTexture);
124220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
124230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument texture
124240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_texture = glmsg.add_args();
124250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->set_isarray(false);
124260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->set_type(GLMessage::DataType::ENUM);
124270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->add_intvalue((int)texture);
124280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
124290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1243005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1243105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
124320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glClientActiveTexture(texture);
1243305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1243405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
124350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
124369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
124379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
124389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1243905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1244005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
124419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1244293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
124430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
124440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
124450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glClipPlanex(GLenum plane, const GLfixed *equation) {
124460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
124470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
124480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
124490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glClipPlanex);
124500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
124510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument plane
124520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_plane = glmsg.add_args();
124530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_plane->set_isarray(false);
124540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_plane->set_type(GLMessage::DataType::ENUM);
124550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_plane->add_intvalue((int)plane);
124560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
124570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument equation
124580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_equation = glmsg.add_args();
124590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_equation->set_isarray(false);
124600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_equation->set_type(GLMessage::DataType::INT);
124610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_equation->add_intvalue((int)equation);
124620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
124630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1246405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1246505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
124660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glClipPlanex(plane, equation);
1246705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1246805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
124690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
124709801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
124719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) equation,
124729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
124739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1247405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1247505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
124769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1247793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
124780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
124790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
124800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) {
124810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
124820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
124830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
124840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glColor4ub);
124850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
124860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument red
124870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_red = glmsg.add_args();
124880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->set_isarray(false);
124890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->set_type(GLMessage::DataType::BYTE);
124900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->add_intvalue((int)red);
124910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
124920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument green
124930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_green = glmsg.add_args();
124940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->set_isarray(false);
124950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->set_type(GLMessage::DataType::BYTE);
124960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->add_intvalue((int)green);
124970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
124980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument blue
124990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_blue = glmsg.add_args();
125000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->set_isarray(false);
125010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->set_type(GLMessage::DataType::BYTE);
125020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->add_intvalue((int)blue);
125030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
125040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument alpha
125050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_alpha = glmsg.add_args();
125060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->set_isarray(false);
125070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->set_type(GLMessage::DataType::BYTE);
125080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->add_intvalue((int)alpha);
125090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
125100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1251105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1251205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
125130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glColor4ub(red, green, blue, alpha);
1251405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1251505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
125160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
125179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
125189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
125199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1252005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1252105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
125229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1252393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
125240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
125250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
125260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glColor4x(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) {
125270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
125280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
125290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
125300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glColor4x);
125310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
125320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument red
125330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_red = glmsg.add_args();
125340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->set_isarray(false);
125350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->set_type(GLMessage::DataType::INT);
125360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->add_intvalue(red);
125370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
125380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument green
125390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_green = glmsg.add_args();
125400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->set_isarray(false);
125410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->set_type(GLMessage::DataType::INT);
125420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->add_intvalue(green);
125430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
125440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument blue
125450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_blue = glmsg.add_args();
125460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->set_isarray(false);
125470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->set_type(GLMessage::DataType::INT);
125480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->add_intvalue(blue);
125490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
125500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument alpha
125510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_alpha = glmsg.add_args();
125520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->set_isarray(false);
125530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->set_type(GLMessage::DataType::INT);
125540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->add_intvalue(alpha);
125550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
125560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1255705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1255805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
125590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glColor4x(red, green, blue, alpha);
1256005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1256105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
125620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
125639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
125649801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
125659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1256605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1256705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
125689801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1256993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
125700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
125710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
125720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) {
125730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
125740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
125750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
125760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glColorPointer);
125770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
125780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument size
125790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_size = glmsg.add_args();
125800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_isarray(false);
125810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_type(GLMessage::DataType::INT);
125820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->add_intvalue(size);
125830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
125840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument type
125850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_type = glmsg.add_args();
125860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_isarray(false);
125870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_type(GLMessage::DataType::ENUM);
125880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->add_intvalue((int)type);
125890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
125900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument stride
125910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_stride = glmsg.add_args();
125920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->set_isarray(false);
125930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->set_type(GLMessage::DataType::INT);
125940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->add_intvalue(stride);
125950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
125960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pointer
125970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pointer = glmsg.add_args();
125980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pointer->set_isarray(false);
125990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pointer->set_type(GLMessage::DataType::INT);
126000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pointer->add_intvalue((int)pointer);
126010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
126020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1260305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1260405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
126050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glColorPointer(size, type, stride, pointer);
1260605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1260705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
126080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
126099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
126109801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) pointer,
126119801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
126129801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1261305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1261405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
126159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1261693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
126170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
126180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
126190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDepthRangex(GLclampx zNear, GLclampx zFar) {
126200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
126210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
126220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
126230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDepthRangex);
126240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
126250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zNear
126260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zNear = glmsg.add_args();
126270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_isarray(false);
126280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_type(GLMessage::DataType::INT);
126290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->add_intvalue(zNear);
126300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
126310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zFar
126320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zFar = glmsg.add_args();
126330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_isarray(false);
126340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_type(GLMessage::DataType::INT);
126350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->add_intvalue(zFar);
126360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
126370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1263805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1263905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
126400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDepthRangex(zNear, zFar);
1264105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1264205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
126430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
126449801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
126459801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
126469801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1264705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1264805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
126499801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1265093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
126510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
126520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
126530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDisableClientState(GLenum array) {
126540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
126550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
126560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
126570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDisableClientState);
126580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
126590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument array
126600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_array = glmsg.add_args();
126610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_array->set_isarray(false);
126620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_array->set_type(GLMessage::DataType::ENUM);
126630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_array->add_intvalue((int)array);
126640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
126650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1266605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1266705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
126680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDisableClientState(array);
1266905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1267005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
126710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
126729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
126739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
126749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1267505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1267605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
126779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1267893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
126790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
126800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
126810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glEnableClientState(GLenum array) {
126820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
126830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
126840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
126850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glEnableClientState);
126860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
126870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument array
126880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_array = glmsg.add_args();
126890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_array->set_isarray(false);
126900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_array->set_type(GLMessage::DataType::ENUM);
126910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_array->add_intvalue((int)array);
126920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
126930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1269405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1269505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
126960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glEnableClientState(array);
1269705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1269805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
126990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
127009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
127019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
127029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1270305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1270405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
127059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1270693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
127070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
127080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
127090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFogx(GLenum pname, GLfixed param) {
127100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
127110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
127120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
127130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFogx);
127140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
127150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
127160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
127170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
127180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
127190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
127200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
127210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
127220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
127230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
127240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
127250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
127260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
127270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1272805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1272905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
127300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFogx(pname, param);
1273105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1273205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
127330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
127349801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
127359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
127369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1273705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1273805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
127399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1274093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
127410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
127420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
127430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFogxv(GLenum pname, const GLfixed *params) {
127440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
127450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
127460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
127470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFogxv);
127480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
127490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
127500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
127510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
127520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
127530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
127540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
127550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
127560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
127570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
127580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
127590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
127600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
127610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1276205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1276305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
127640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFogxv(pname, params);
1276505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1276605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
127670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
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);
1277593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
127760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
127770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
127780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFrustumx(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar) {
127790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
127800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
127810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
127820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFrustumx);
127830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
127840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument left
127850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_left = glmsg.add_args();
127860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_isarray(false);
127870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_type(GLMessage::DataType::INT);
127880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->add_intvalue(left);
127890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
127900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument right
127910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_right = glmsg.add_args();
127920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_isarray(false);
127930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_type(GLMessage::DataType::INT);
127940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->add_intvalue(right);
127950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
127960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument bottom
127970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_bottom = glmsg.add_args();
127980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_isarray(false);
127990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_type(GLMessage::DataType::INT);
128000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->add_intvalue(bottom);
128010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
128020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument top
128030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_top = glmsg.add_args();
128040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_isarray(false);
128050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_type(GLMessage::DataType::INT);
128060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->add_intvalue(top);
128070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
128080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zNear
128090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zNear = glmsg.add_args();
128100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_isarray(false);
128110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_type(GLMessage::DataType::INT);
128120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->add_intvalue(zNear);
128130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
128140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zFar
128150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zFar = glmsg.add_args();
128160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_isarray(false);
128170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_type(GLMessage::DataType::INT);
128180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->add_intvalue(zFar);
128190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
128200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1282105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1282205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
128230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFrustumx(left, right, bottom, top, zNear, zFar);
1282405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1282505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
128260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
128279801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
128289801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
128299801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1283005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1283105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
128329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1283393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
128340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
128350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
128360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetClipPlanex(GLenum pname, GLfixed eqn[4]) {
128370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
128380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
128390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
128400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetClipPlanex);
128410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
128420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
128430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
128440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
128450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
128460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
128470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
128480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument eqn
128490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_eqn = glmsg.add_args();
128500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_eqn->set_isarray(false);
128510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_eqn->set_type(GLMessage::DataType::INT);
128520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_eqn->add_intvalue((int)eqn);
128530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
128540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1285505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1285605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
128570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetClipPlanex(pname, eqn);
1285805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1285905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
128600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
128619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
128629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) eqn,
128639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
128649801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1286505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1286605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
128679801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1286893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
128690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
128700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
128710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetFixedv(GLenum pname, GLfixed *params) {
128720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
128730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
128740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
128750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetFixedv);
128760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
128770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
128780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
128790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
128800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
128810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
128820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
128830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
128840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
128850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
128860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
128870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
128880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
128890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1289005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1289105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
128920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetFixedv(pname, params);
1289305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1289405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
128950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
128969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
128979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
128989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
128999801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1290005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1290105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
129029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1290393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
129040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
129050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
129060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetLightxv(GLenum light, GLenum pname, GLfixed *params) {
129070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
129080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
129090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
129100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetLightxv);
129110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
129120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument light
129130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_light = glmsg.add_args();
129140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_isarray(false);
129150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_type(GLMessage::DataType::ENUM);
129160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->add_intvalue((int)light);
129170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
129180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
129190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
129200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
129210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
129220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
129230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
129240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
129250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
129260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
129270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
129280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
129290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
129300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1293105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1293205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
129330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetLightxv(light, pname, params);
1293405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1293505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
129360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
129379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
129389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
129399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
129409801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1294105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1294205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
129439801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1294493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
129450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
129460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
129470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetMaterialxv(GLenum face, GLenum pname, GLfixed *params) {
129480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
129490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
129500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
129510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetMaterialxv);
129520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
129530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument face
129540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_face = glmsg.add_args();
129550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_isarray(false);
129560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_type(GLMessage::DataType::ENUM);
129570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->add_intvalue((int)face);
129580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
129590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
129600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
129610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
129620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
129630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
129640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
129650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
129660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
129670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
129680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
129690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
129700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
129710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1297205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1297305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
129740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetMaterialxv(face, pname, params);
1297505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1297605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
129770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
129789801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
129799801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
129809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
129819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1298205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1298305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
129849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1298593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
129860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
129870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
129880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetPointerv(GLenum pname, GLvoid **params) {
129890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
129900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
129910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
129920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetPointerv);
129930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
129940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
129950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
129960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
129970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
129980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
129990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
130000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
130010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
130020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
130030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
130040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
130050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
130060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1300705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1300805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
130090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetPointerv(pname, params);
1301005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1301105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
130120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
130139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
130149801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
130159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
130169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1301705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1301805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
130199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1302093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
130210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
130220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
130230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetTexEnviv(GLenum env, GLenum pname, GLint *params) {
130240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
130250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
130260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
130270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetTexEnviv);
130280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
130290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument env
130300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_env = glmsg.add_args();
130310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_env->set_isarray(false);
130320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_env->set_type(GLMessage::DataType::ENUM);
130330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_env->add_intvalue((int)env);
130340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
130350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
130360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
130370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
130380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
130390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
130400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
130410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
130420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
130430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
130440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
130450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
130460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
130470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1304805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1304905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
130500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetTexEnviv(env, pname, params);
1305105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1305205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
130530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
130549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
130559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
130569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
130579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1305805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1305905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
130609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1306193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
130620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
130630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
130640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetTexEnvxv(GLenum env, GLenum pname, GLfixed *params) {
130650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
130660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
130670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
130680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetTexEnvxv);
130690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
130700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument env
130710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_env = glmsg.add_args();
130720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_env->set_isarray(false);
130730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_env->set_type(GLMessage::DataType::ENUM);
130740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_env->add_intvalue((int)env);
130750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
130760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
130770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
130780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
130790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
130800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
130810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
130820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
130830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
130840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
130850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
130860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
130870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
130880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1308905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1309005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
130910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetTexEnvxv(env, pname, params);
1309205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1309305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
130940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
130959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
130969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
130979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
130989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1309905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1310005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
131019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1310293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
131030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
131040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
131050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetTexParameterxv(GLenum target, GLenum pname, GLfixed *params) {
131060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
131070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
131080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
131090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetTexParameterxv);
131100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
131110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
131120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
131130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
131140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
131150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
131160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
131170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
131180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
131190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
131200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
131210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
131220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
131230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
131240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
131250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
131260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
131270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
131280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
131290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1313005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1313105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
131320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetTexParameterxv(target, pname, params);
1313305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1313405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
131350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
131369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
131379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
131389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
131399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1314005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1314105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
131429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1314393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
131440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
131450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
131460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLightModelx(GLenum pname, GLfixed param) {
131470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
131480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
131490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
131500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLightModelx);
131510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
131520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
131530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
131540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
131550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
131560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
131570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
131580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
131590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
131600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
131610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
131620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
131630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
131640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1316505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1316605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
131670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLightModelx(pname, param);
1316805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1316905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
131700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
131719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
131729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
131739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1317405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1317505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
131769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1317793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
131780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
131790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
131800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLightModelxv(GLenum pname, const GLfixed *params) {
131810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
131820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
131830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
131840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLightModelxv);
131850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
131860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
131870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
131880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
131890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
131900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
131910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
131920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
131930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
131940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
131950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
131960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
131970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
131980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1319905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1320005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
132010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLightModelxv(pname, params);
1320205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1320305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
132040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
132059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
132069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
132079801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
132089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1320905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1321005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
132119801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1321293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
132130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
132140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
132150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLightx(GLenum light, GLenum pname, GLfixed param) {
132160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
132170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
132180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
132190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLightx);
132200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
132210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument light
132220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_light = glmsg.add_args();
132230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_isarray(false);
132240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_type(GLMessage::DataType::ENUM);
132250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->add_intvalue((int)light);
132260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
132270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
132280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
132290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
132300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
132310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
132320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
132330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
132340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
132350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
132360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
132370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
132380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
132390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1324005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1324105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
132420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLightx(light, pname, param);
1324305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1324405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
132450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
132469801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
132479801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
132489801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1324905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1325005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
132519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1325293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
132530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
132540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
132550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLightxv(GLenum light, GLenum pname, const GLfixed *params) {
132560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
132570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
132580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
132590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLightxv);
132600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
132610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument light
132620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_light = glmsg.add_args();
132630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_isarray(false);
132640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_type(GLMessage::DataType::ENUM);
132650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->add_intvalue((int)light);
132660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
132670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
132680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
132690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
132700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
132710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
132720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
132730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
132740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
132750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
132760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
132770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
132780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
132790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1328005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1328105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
132820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLightxv(light, pname, params);
1328305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1328405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
132850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
132869801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
132879801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
132889801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
132899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1329005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1329105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
132929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1329393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
132940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
132950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
132960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLineWidthx(GLfixed width) {
132970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
132980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
132990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
133000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLineWidthx);
133010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
133020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
133030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
133040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
133050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
133060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
133070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
133080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1330905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1331005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
133110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLineWidthx(width);
1331205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1331305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
133140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
133159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
133169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
133179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1331805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1331905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
133209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1332193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
133220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
133230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
133240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLoadIdentity(void) {
133250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
133260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
133270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
133280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLoadIdentity);
133290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
133300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1333105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1333205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
133330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLoadIdentity();
1333405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1333505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
133360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
133379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
133389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
133399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1334005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1334105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
133429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1334393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
133440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
133450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
133460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLoadMatrixx(const GLfixed *m) {
133470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
133480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
133490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
133500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLoadMatrixx);
133510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
133520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument m
133530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_m = glmsg.add_args();
133540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_m->set_isarray(false);
133550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_m->set_type(GLMessage::DataType::INT);
133560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_m->add_intvalue((int)m);
133570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
133580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1335905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1336005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
133610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLoadMatrixx(m);
1336205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1336305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
133640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
133659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
133669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) m,
133679801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
133689801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1336905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1337005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
133719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1337293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
133730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
133740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
133750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLogicOp(GLenum opcode) {
133760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
133770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
133780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
133790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLogicOp);
133800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
133810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument opcode
133820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_opcode = glmsg.add_args();
133830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_opcode->set_isarray(false);
133840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_opcode->set_type(GLMessage::DataType::ENUM);
133850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_opcode->add_intvalue((int)opcode);
133860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
133870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1338805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1338905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
133900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLogicOp(opcode);
1339105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1339205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
133930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
133949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
133959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
133969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1339705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1339805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
133999801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1340093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
134010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
134020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
134030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glMaterialx(GLenum face, GLenum pname, GLfixed param) {
134040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
134050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
134060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
134070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glMaterialx);
134080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
134090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument face
134100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_face = glmsg.add_args();
134110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_isarray(false);
134120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_type(GLMessage::DataType::ENUM);
134130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->add_intvalue((int)face);
134140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
134150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
134160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
134170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
134180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
134190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
134200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
134210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
134220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
134230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
134240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
134250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
134260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
134270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1342805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1342905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
134300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glMaterialx(face, pname, param);
1343105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1343205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
134330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
134349801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
134359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
134369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1343705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1343805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
134399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1344093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
134410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
134420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
134430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glMaterialxv(GLenum face, GLenum pname, const GLfixed *params) {
134440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
134450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
134460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
134470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glMaterialxv);
134480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
134490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument face
134500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_face = glmsg.add_args();
134510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_isarray(false);
134520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_type(GLMessage::DataType::ENUM);
134530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->add_intvalue((int)face);
134540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
134550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
134560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
134570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
134580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
134590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
134600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
134610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
134620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
134630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
134640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
134650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
134660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
134670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1346805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1346905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
134700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glMaterialxv(face, pname, params);
1347105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1347205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
134730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
134749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
134759801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
134769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
134779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1347805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1347905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
134809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1348193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
134820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
134830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
134840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glMatrixMode(GLenum mode) {
134850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
134860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
134870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
134880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glMatrixMode);
134890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
134900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument mode
134910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_mode = glmsg.add_args();
134920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->set_isarray(false);
134930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->set_type(GLMessage::DataType::ENUM);
134940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->add_intvalue((int)mode);
134950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
134960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1349705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1349805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
134990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glMatrixMode(mode);
1350005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1350105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
135020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
135039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
135049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
135059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1350605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1350705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
135089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1350993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
135100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
135110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
135120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glMultMatrixx(const GLfixed *m) {
135130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
135140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
135150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
135160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glMultMatrixx);
135170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
135180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument m
135190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_m = glmsg.add_args();
135200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_m->set_isarray(false);
135210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_m->set_type(GLMessage::DataType::INT);
135220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_m->add_intvalue((int)m);
135230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
135240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1352505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1352605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
135270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glMultMatrixx(m);
1352805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1352905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
135300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
135319801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
135329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) m,
135339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
135349801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1353505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1353605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
135379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1353893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
135390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
135400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
135410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glMultiTexCoord4x(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q) {
135420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
135430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
135440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
135450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glMultiTexCoord4x);
135460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
135470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
135480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
135490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
135500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
135510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
135520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
135530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument s
135540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_s = glmsg.add_args();
135550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_s->set_isarray(false);
135560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_s->set_type(GLMessage::DataType::INT);
135570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_s->add_intvalue(s);
135580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
135590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument t
135600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_t = glmsg.add_args();
135610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_t->set_isarray(false);
135620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_t->set_type(GLMessage::DataType::INT);
135630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_t->add_intvalue(t);
135640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
135650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument r
135660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_r = glmsg.add_args();
135670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_r->set_isarray(false);
135680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_r->set_type(GLMessage::DataType::INT);
135690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_r->add_intvalue(r);
135700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
135710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument q
135720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_q = glmsg.add_args();
135730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_q->set_isarray(false);
135740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_q->set_type(GLMessage::DataType::INT);
135750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_q->add_intvalue(q);
135760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
135770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1357805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1357905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
135800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glMultiTexCoord4x(target, s, t, r, q);
1358105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1358205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
135830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
135849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
135859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
135869801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1358705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1358805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
135899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1359093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
135910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
135920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
135930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glNormal3x(GLfixed nx, GLfixed ny, GLfixed nz) {
135940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
135950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
135960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
135970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glNormal3x);
135980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
135990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument nx
136000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_nx = glmsg.add_args();
136010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nx->set_isarray(false);
136020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nx->set_type(GLMessage::DataType::INT);
136030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nx->add_intvalue(nx);
136040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
136050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument ny
136060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_ny = glmsg.add_args();
136070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ny->set_isarray(false);
136080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ny->set_type(GLMessage::DataType::INT);
136090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ny->add_intvalue(ny);
136100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
136110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument nz
136120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_nz = glmsg.add_args();
136130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nz->set_isarray(false);
136140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nz->set_type(GLMessage::DataType::INT);
136150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nz->add_intvalue(nz);
136160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
136170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1361805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1361905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
136200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glNormal3x(nx, ny, nz);
1362105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1362205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
136230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
136249801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
136259801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
136269801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1362705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1362805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
136299801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1363093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
136310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
136320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
136330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer) {
136340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
136350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
136360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
136370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glNormalPointer);
136380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
136390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument type
136400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_type = glmsg.add_args();
136410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_isarray(false);
136420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_type(GLMessage::DataType::ENUM);
136430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->add_intvalue((int)type);
136440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
136450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument stride
136460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_stride = glmsg.add_args();
136470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->set_isarray(false);
136480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->set_type(GLMessage::DataType::INT);
136490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->add_intvalue(stride);
136500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
136510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pointer
136520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pointer = glmsg.add_args();
136530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pointer->set_isarray(false);
136540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pointer->set_type(GLMessage::DataType::INT);
136550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pointer->add_intvalue((int)pointer);
136560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
136570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1365805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1365905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
136600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glNormalPointer(type, stride, pointer);
1366105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1366205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
136630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
136649801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
136659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) pointer,
136669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
136679801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1366805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1366905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
136709801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1367193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
136720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
136730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
136740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glOrthox(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar) {
136750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
136760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
136770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
136780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glOrthox);
136790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
136800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument left
136810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_left = glmsg.add_args();
136820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_isarray(false);
136830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_type(GLMessage::DataType::INT);
136840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->add_intvalue(left);
136850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
136860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument right
136870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_right = glmsg.add_args();
136880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_isarray(false);
136890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_type(GLMessage::DataType::INT);
136900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->add_intvalue(right);
136910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
136920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument bottom
136930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_bottom = glmsg.add_args();
136940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_isarray(false);
136950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_type(GLMessage::DataType::INT);
136960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->add_intvalue(bottom);
136970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
136980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument top
136990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_top = glmsg.add_args();
137000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_isarray(false);
137010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_type(GLMessage::DataType::INT);
137020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->add_intvalue(top);
137030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
137040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zNear
137050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zNear = glmsg.add_args();
137060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_isarray(false);
137070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_type(GLMessage::DataType::INT);
137080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->add_intvalue(zNear);
137090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
137100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zFar
137110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zFar = glmsg.add_args();
137120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_isarray(false);
137130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_type(GLMessage::DataType::INT);
137140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->add_intvalue(zFar);
137150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
137160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1371705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1371805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
137190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glOrthox(left, right, bottom, top, zNear, zFar);
1372005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1372105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
137220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
137239801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
137249801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
137259801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1372605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1372705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
137289801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1372993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
137300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
137310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
137320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glPointParameterx(GLenum pname, GLfixed param) {
137330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
137340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
137350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
137360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glPointParameterx);
137370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
137380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
137390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
137400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
137410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
137420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
137430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
137440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
137450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
137460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
137470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
137480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
137490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
137500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1375105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1375205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
137530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glPointParameterx(pname, param);
1375405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1375505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
137560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
137579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
137589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
137599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1376005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1376105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
137629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1376393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
137640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
137650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
137660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glPointParameterxv(GLenum pname, const GLfixed *params) {
137670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
137680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
137690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
137700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glPointParameterxv);
137710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
137720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
137730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
137740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
137750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
137760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
137770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
137780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
137790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
137800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
137810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
137820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
137830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
137840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1378505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1378605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
137870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glPointParameterxv(pname, params);
1378805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1378905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
137900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
137919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
137929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
137939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
137949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1379505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1379605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
137979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1379893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
137990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
138000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
138010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glPointSizex(GLfixed size) {
138020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
138030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
138040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
138050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glPointSizex);
138060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
138070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument size
138080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_size = glmsg.add_args();
138090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_isarray(false);
138100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_type(GLMessage::DataType::INT);
138110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->add_intvalue(size);
138120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
138130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1381405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1381505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
138160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glPointSizex(size);
1381705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1381805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
138190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
138209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
138219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
138229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1382305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1382405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
138259801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1382693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
138270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
138280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
138290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glPolygonOffsetx(GLfixed factor, GLfixed units) {
138300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
138310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
138320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
138330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glPolygonOffsetx);
138340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
138350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument factor
138360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_factor = glmsg.add_args();
138370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_factor->set_isarray(false);
138380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_factor->set_type(GLMessage::DataType::INT);
138390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_factor->add_intvalue(factor);
138400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
138410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument units
138420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_units = glmsg.add_args();
138430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_units->set_isarray(false);
138440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_units->set_type(GLMessage::DataType::INT);
138450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_units->add_intvalue(units);
138460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
138470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1384805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1384905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
138500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glPolygonOffsetx(factor, units);
1385105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1385205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
138530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
138549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
138559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
138569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1385705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1385805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
138599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1386093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
138610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
138620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
138630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glPopMatrix(void) {
138640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
138650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
138660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
138670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glPopMatrix);
138680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
138690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1387005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1387105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
138720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glPopMatrix();
1387305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1387405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
138750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
138769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
138779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
138789801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1387905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1388005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
138819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1388293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
138830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
138840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
138850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glPushMatrix(void) {
138860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
138870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
138880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
138890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glPushMatrix);
138900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
138910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1389205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1389305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
138940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glPushMatrix();
1389505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1389605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
138970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
138989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
138999801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
139009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1390105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1390205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
139039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1390493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
139050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
139060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
139070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glRotatex(GLfixed angle, GLfixed x, GLfixed y, GLfixed z) {
139080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
139090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
139100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
139110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glRotatex);
139120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
139130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument angle
139140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_angle = glmsg.add_args();
139150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_angle->set_isarray(false);
139160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_angle->set_type(GLMessage::DataType::INT);
139170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_angle->add_intvalue(angle);
139180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
139190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
139200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
139210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
139220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::INT);
139230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_intvalue(x);
139240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
139250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
139260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
139270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
139280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::INT);
139290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_intvalue(y);
139300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
139310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
139320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
139330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
139340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::INT);
139350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_intvalue(z);
139360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
139370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1393805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1393905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
139400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glRotatex(angle, x, y, z);
1394105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1394205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
139430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
139449801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
139459801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
139469801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1394705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1394805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
139499801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1395093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
139510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
139520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
139530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glSampleCoveragex(GLclampx value, GLboolean invert) {
139540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
139550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
139560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
139570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glSampleCoveragex);
139580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
139590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument value
139600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_value = glmsg.add_args();
139610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_value->set_isarray(false);
139620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT);
139630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_value->add_intvalue(value);
139640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
139650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument invert
139660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_invert = glmsg.add_args();
139670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_invert->set_isarray(false);
139680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_invert->set_type(GLMessage::DataType::BOOL);
139690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_invert->add_boolvalue(invert);
139700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
139710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1397205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1397305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
139740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glSampleCoveragex(value, invert);
1397505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1397605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
139770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
139789801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
139799801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
139809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1398105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1398205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
139839801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1398493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
139850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
139860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
139870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glScalex(GLfixed x, GLfixed y, GLfixed z) {
139880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
139890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
139900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
139910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glScalex);
139920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
139930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
139940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
139950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
139960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::INT);
139970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_intvalue(x);
139980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
139990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
140000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
140010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
140020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::INT);
140030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_intvalue(y);
140040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
140050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
140060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
140070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
140080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::INT);
140090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_intvalue(z);
140100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
140110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1401205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1401305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
140140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glScalex(x, y, z);
1401505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1401605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
140170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
140189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
140199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
140209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1402105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1402205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
140239801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1402493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
140250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
140260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
140270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glShadeModel(GLenum mode) {
140280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
140290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
140300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
140310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glShadeModel);
140320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
140330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument mode
140340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_mode = glmsg.add_args();
140350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->set_isarray(false);
140360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->set_type(GLMessage::DataType::ENUM);
140370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->add_intvalue((int)mode);
140380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
140390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1404005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1404105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
140420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glShadeModel(mode);
1404305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1404405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
140450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
140469801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
140479801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
140489801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1404905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1405005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
140519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1405293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
140530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
140540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
140550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) {
140560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
140570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
140580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
140590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexCoordPointer);
140600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
140610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument size
140620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_size = glmsg.add_args();
140630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_isarray(false);
140640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_type(GLMessage::DataType::INT);
140650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->add_intvalue(size);
140660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
140670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument type
140680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_type = glmsg.add_args();
140690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_isarray(false);
140700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_type(GLMessage::DataType::ENUM);
140710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->add_intvalue((int)type);
140720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
140730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument stride
140740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_stride = glmsg.add_args();
140750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->set_isarray(false);
140760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->set_type(GLMessage::DataType::INT);
140770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->add_intvalue(stride);
140780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
140790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pointer
140800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pointer = glmsg.add_args();
140810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pointer->set_isarray(false);
140820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pointer->set_type(GLMessage::DataType::INT);
140830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pointer->add_intvalue((int)pointer);
140840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
140850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1408605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1408705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
140880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexCoordPointer(size, type, stride, pointer);
1408905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1409005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
140910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
140929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
140939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) pointer,
140949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
140959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1409605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1409705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
140989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1409993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
141000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
141010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
141020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexEnvi(GLenum target, GLenum pname, GLint param) {
141030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
141040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
141050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
141060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexEnvi);
141070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
141080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
141090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
141100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
141110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
141120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
141130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
141140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
141150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
141160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
141170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
141180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
141190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
141200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
141210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
141220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
141230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
141240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
141250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
141260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1412705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1412805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
141290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexEnvi(target, pname, param);
1413005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1413105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
141320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
141339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
141349801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
141359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1413605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1413705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
141389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1413993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
141400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
141410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
141420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexEnvx(GLenum target, GLenum pname, GLfixed param) {
141430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
141440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
141450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
141460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexEnvx);
141470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
141480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
141490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
141500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
141510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
141520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
141530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
141540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
141550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
141560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
141570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
141580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
141590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
141600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
141610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
141620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
141630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
141640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
141650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
141660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1416705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1416805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
141690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexEnvx(target, pname, param);
1417005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1417105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
141720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
141739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
141749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
141759801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1417605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1417705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
141789801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1417993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
141800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
141810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
141820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexEnviv(GLenum target, GLenum pname, const GLint *params) {
141830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
141840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
141850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
141860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexEnviv);
141870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
141880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
141890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
141900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
141910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
141920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
141930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
141940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
141950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
141960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
141970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
141980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
141990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
142000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
142010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
142020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
142030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
142040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
142050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
142060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1420705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1420805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
142090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexEnviv(target, pname, params);
1421005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1421105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
142120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
142139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
142149801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
142159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
142169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1421705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1421805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
142199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1422093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
142210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
142220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
142230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexEnvxv(GLenum target, GLenum pname, const GLfixed *params) {
142240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
142250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
142260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
142270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexEnvxv);
142280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
142290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
142300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
142310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
142320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
142330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
142340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
142350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
142360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
142370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
142380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
142390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
142400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
142410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
142420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
142430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
142440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
142450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
142460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
142470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1424805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1424905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
142500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexEnvxv(target, pname, params);
1425105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1425205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
142530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
142549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
142559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
142569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
142579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1425805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1425905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
142609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1426193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
142620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
142630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
142640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexParameterx(GLenum target, GLenum pname, GLfixed param) {
142650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
142660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
142670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
142680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexParameterx);
142690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
142700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
142710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
142720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
142730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
142740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
142750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
142760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
142770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
142780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
142790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
142800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
142810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
142820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
142830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
142840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
142850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
142860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
142870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
142880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1428905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1429005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
142910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexParameterx(target, pname, param);
1429205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1429305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
142940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
142959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
142969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
142979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1429805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1429905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
143009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1430193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
143020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
143030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
143040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexParameterxv(GLenum target, GLenum pname, const GLfixed *params) {
143050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
143060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
143070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
143080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexParameterxv);
143090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
143100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
143110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
143120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
143130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
143140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
143150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
143160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
143170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
143180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
143190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
143200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
143210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
143220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
143230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
143240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
143250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
143260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
143270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
143280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1432905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1433005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
143310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexParameterxv(target, pname, params);
1433205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1433305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
143340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
143359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
143369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
143379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
143389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1433905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1434005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
143419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1434293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
143430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
143440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
143450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTranslatex(GLfixed x, GLfixed y, GLfixed z) {
143460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
143470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
143480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
143490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTranslatex);
143500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
143510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
143520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
143530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
143540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::INT);
143550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_intvalue(x);
143560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
143570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
143580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
143590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
143600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::INT);
143610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_intvalue(y);
143620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
143630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
143640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
143650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
143660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::INT);
143670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_intvalue(z);
143680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
143690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1437005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1437105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
143720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTranslatex(x, y, z);
1437305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1437405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
143750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
143769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
143779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
143789801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1437905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1438005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
143819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1438293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
143830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
143840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
143850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) {
143860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
143870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
143880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
143890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glVertexPointer);
143900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
143910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument size
143920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_size = glmsg.add_args();
143930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_isarray(false);
143940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_type(GLMessage::DataType::INT);
143950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->add_intvalue(size);
143960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
143970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument type
143980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_type = glmsg.add_args();
143990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_isarray(false);
144000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_type(GLMessage::DataType::ENUM);
144010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->add_intvalue((int)type);
144020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
144030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument stride
144040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_stride = glmsg.add_args();
144050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->set_isarray(false);
144060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->set_type(GLMessage::DataType::INT);
144070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->add_intvalue(stride);
144080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
144090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pointer
144100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pointer = glmsg.add_args();
144110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pointer->set_isarray(false);
144120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pointer->set_type(GLMessage::DataType::INT);
144130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pointer->add_intvalue((int)pointer);
144140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
144150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1441605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1441705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
144180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glVertexPointer(size, type, stride, pointer);
1441905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1442005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
144210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
144229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
144239801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) pointer,
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
144320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glPointSizePointerOES(GLenum type, GLsizei stride, const GLvoid *pointer) {
144330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
144340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
144350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
144360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glPointSizePointerOES);
144370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
144380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument type
144390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_type = glmsg.add_args();
144400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_isarray(false);
144410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_type(GLMessage::DataType::ENUM);
144420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->add_intvalue((int)type);
144430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
144440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument stride
144450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_stride = glmsg.add_args();
144460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->set_isarray(false);
144470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->set_type(GLMessage::DataType::INT);
144480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->add_intvalue(stride);
144490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
144500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pointer
144510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pointer = glmsg.add_args();
144520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pointer->set_isarray(false);
144530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pointer->set_type(GLMessage::DataType::INT);
144540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pointer->add_intvalue((int)pointer);
144550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
144560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1445705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1445805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
144590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glPointSizePointerOES(type, stride, pointer);
1446005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1446105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
144620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
144639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
144649801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) pointer,
144659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
144669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1446705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1446805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
144699801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1447093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
144710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
144720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
144730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
144740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy// Definitions for GL1Ext APIs
144750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
144760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glBlendEquationSeparateOES(GLenum modeRGB, GLenum modeAlpha) {
144770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
144780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
144790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
144800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glBlendEquationSeparateOES);
144810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
144820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument modeRGB
144830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_modeRGB = glmsg.add_args();
144840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_modeRGB->set_isarray(false);
144850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_modeRGB->set_type(GLMessage::DataType::ENUM);
144860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_modeRGB->add_intvalue((int)modeRGB);
144870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
144880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument modeAlpha
144890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_modeAlpha = glmsg.add_args();
144900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_modeAlpha->set_isarray(false);
144910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_modeAlpha->set_type(GLMessage::DataType::ENUM);
144920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_modeAlpha->add_intvalue((int)modeAlpha);
144930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
144940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1449505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1449605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
144970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glBlendEquationSeparateOES(modeRGB, modeAlpha);
1449805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1449905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
145000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
145029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
145039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1450405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1450505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
145069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1450793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
145080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
145090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glBlendFuncSeparateOES(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) {
145110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
145120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
145130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glBlendFuncSeparateOES);
145150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument srcRGB
145170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_srcRGB = glmsg.add_args();
145180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_srcRGB->set_isarray(false);
145190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_srcRGB->set_type(GLMessage::DataType::ENUM);
145200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_srcRGB->add_intvalue((int)srcRGB);
145210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument dstRGB
145230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_dstRGB = glmsg.add_args();
145240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_dstRGB->set_isarray(false);
145250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_dstRGB->set_type(GLMessage::DataType::ENUM);
145260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_dstRGB->add_intvalue((int)dstRGB);
145270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument srcAlpha
145290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_srcAlpha = glmsg.add_args();
145300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_srcAlpha->set_isarray(false);
145310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_srcAlpha->set_type(GLMessage::DataType::ENUM);
145320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_srcAlpha->add_intvalue((int)srcAlpha);
145330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument dstAlpha
145350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_dstAlpha = glmsg.add_args();
145360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_dstAlpha->set_isarray(false);
145370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_dstAlpha->set_type(GLMessage::DataType::ENUM);
145380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_dstAlpha->add_intvalue((int)dstAlpha);
145390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1454105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1454205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
145430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glBlendFuncSeparateOES(srcRGB, dstRGB, srcAlpha, dstAlpha);
1454405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1454505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
145460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145479801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
145489801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
145499801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1455005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1455105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
145529801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1455393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
145540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
145550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glBlendEquationOES(GLenum mode) {
145570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
145580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
145590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glBlendEquationOES);
145610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument mode
145630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_mode = glmsg.add_args();
145640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->set_isarray(false);
145650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->set_type(GLMessage::DataType::ENUM);
145660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mode->add_intvalue((int)mode);
145670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1456905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1457005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
145710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glBlendEquationOES(mode);
1457205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1457305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
145740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145759801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
145769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
145779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1457805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1457905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
145809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1458193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
145820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
145830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDrawTexsOES(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height) {
145850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
145860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
145870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDrawTexsOES);
145890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
145910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
145920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
145930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::INT);
145940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_intvalue(x);
145950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
145960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
145970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
145980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
145990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::INT);
146000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_intvalue(y);
146010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
146020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
146030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
146040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
146050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::INT);
146060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_intvalue(z);
146070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
146080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
146090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
146100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
146110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
146120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
146130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
146140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
146150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
146160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
146170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
146180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
146190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
146200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1462105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1462205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
146230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDrawTexsOES(x, y, z, width, height);
1462405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1462505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
146260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
146279801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
146289801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
146299801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1463005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1463105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
146329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1463393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
146340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
146350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
146360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDrawTexiOES(GLint x, GLint y, GLint z, GLint width, GLint height) {
146370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
146380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
146390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
146400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDrawTexiOES);
146410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
146420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
146430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
146440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
146450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::INT);
146460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_intvalue(x);
146470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
146480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
146490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
146500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
146510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::INT);
146520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_intvalue(y);
146530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
146540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
146550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
146560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
146570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::INT);
146580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_intvalue(z);
146590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
146600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
146610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
146620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
146630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
146640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
146650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
146660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
146670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
146680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
146690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
146700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
146710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
146720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1467305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1467405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
146750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDrawTexiOES(x, y, z, width, height);
1467605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1467705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
146780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
146799801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
146809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
146819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1468205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1468305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
146849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1468593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
146860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
146870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
146880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDrawTexxOES(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height) {
146890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
146900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
146910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
146920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDrawTexxOES);
146930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
146940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
146950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
146960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
146970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::INT);
146980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_intvalue(x);
146990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
147010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
147020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
147030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::INT);
147040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_intvalue(y);
147050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
147070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
147080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
147090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::INT);
147100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_intvalue(z);
147110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
147130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
147140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
147150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
147160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
147170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
147190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
147200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
147210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
147220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
147230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1472505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1472605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
147270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDrawTexxOES(x, y, z, width, height);
1472805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1472905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
147300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147319801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
147329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
147339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1473405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1473505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
147369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1473793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
147380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
147390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDrawTexsvOES(const GLshort *coords) {
147410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
147420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
147430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDrawTexsvOES);
147450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument coords
147470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_coords = glmsg.add_args();
147480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coords->set_isarray(false);
147490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coords->set_type(GLMessage::DataType::INT);
147500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coords->add_intvalue((int)coords);
147510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1475305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1475405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
147550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDrawTexsvOES(coords);
1475605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1475705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
147580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
147609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) coords,
147619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
147629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1476305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1476405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
147659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1476693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
147670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
147680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDrawTexivOES(const GLint *coords) {
147700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
147710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
147720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDrawTexivOES);
147740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument coords
147760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_coords = glmsg.add_args();
147770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coords->set_isarray(false);
147780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coords->set_type(GLMessage::DataType::INT);
147790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coords->add_intvalue((int)coords);
147800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1478205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1478305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
147840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDrawTexivOES(coords);
1478505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1478605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
147870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147889801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
147899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) coords,
147909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
147919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1479205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1479305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
147949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1479593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
147960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
147970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
147980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDrawTexxvOES(const GLfixed *coords) {
147990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
148000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
148010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDrawTexxvOES);
148030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument coords
148050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_coords = glmsg.add_args();
148060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coords->set_isarray(false);
148070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coords->set_type(GLMessage::DataType::INT);
148080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coords->add_intvalue((int)coords);
148090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1481105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1481205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
148130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDrawTexxvOES(coords);
1481405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1481505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
148160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
148189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) coords,
148199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
148209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1482105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1482205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
148239801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1482493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
148250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
148260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDrawTexfOES(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height) {
148280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
148290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
148300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDrawTexfOES);
148320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
148340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
148350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
148360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::FLOAT);
148370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_floatvalue(x);
148380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
148400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
148410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
148420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::FLOAT);
148430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_floatvalue(y);
148440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
148460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
148470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
148480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::FLOAT);
148490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_floatvalue(z);
148500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
148520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
148530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
148540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::FLOAT);
148550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_floatvalue(width);
148560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
148580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
148590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
148600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::FLOAT);
148610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_floatvalue(height);
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.glDrawTexfOES(x, y, z, width, height);
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    };
148729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1487305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1487405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
148759801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1487693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
148770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
148780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDrawTexfvOES(const GLfloat *coords) {
148800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
148810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
148820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDrawTexfvOES);
148840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument coords
148860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_coords = glmsg.add_args();
148870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coords->set_isarray(false);
148880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coords->set_type(GLMessage::DataType::INT);
148890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coords->add_intvalue((int)coords);
148900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1489205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1489305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
148940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDrawTexfvOES(coords);
1489505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1489605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
148970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
148989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
148999801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) coords,
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_glAlphaFuncxOES(GLenum func, GLclampx ref) {
149090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
149100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
149110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
149120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glAlphaFuncxOES);
149130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
149140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument func
149150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_func = glmsg.add_args();
149160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_func->set_isarray(false);
149170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_func->set_type(GLMessage::DataType::ENUM);
149180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_func->add_intvalue((int)func);
149190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
149200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument ref
149210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_ref = glmsg.add_args();
149220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ref->set_isarray(false);
149230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ref->set_type(GLMessage::DataType::INT);
149240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ref->add_intvalue(ref);
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.glAlphaFuncxOES(func, ref);
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
149420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glClearColorxOES(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha) {
149430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
149440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
149450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
149460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glClearColorxOES);
149470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
149480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument red
149490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_red = glmsg.add_args();
149500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->set_isarray(false);
149510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->set_type(GLMessage::DataType::INT);
149520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->add_intvalue(red);
149530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
149540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument green
149550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_green = glmsg.add_args();
149560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->set_isarray(false);
149570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->set_type(GLMessage::DataType::INT);
149580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->add_intvalue(green);
149590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
149600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument blue
149610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_blue = glmsg.add_args();
149620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->set_isarray(false);
149630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->set_type(GLMessage::DataType::INT);
149640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->add_intvalue(blue);
149650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
149660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument alpha
149670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_alpha = glmsg.add_args();
149680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->set_isarray(false);
149690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->set_type(GLMessage::DataType::INT);
149700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->add_intvalue(alpha);
149710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
149720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1497305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1497405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
149750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glClearColorxOES(red, green, blue, alpha);
1497605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1497705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
149780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
149799801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
149809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
149819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1498205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1498305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
149849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1498593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
149860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
149870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
149880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glClearDepthxOES(GLclampx depth) {
149890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
149900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
149910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
149920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glClearDepthxOES);
149930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
149940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument depth
149950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_depth = glmsg.add_args();
149960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_isarray(false);
149970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_type(GLMessage::DataType::INT);
149980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->add_intvalue(depth);
149990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1500105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1500205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
150030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glClearDepthxOES(depth);
1500405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1500505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
150060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150079801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
150089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
150099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1501005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1501105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
150129801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1501393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
150140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
150150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glClipPlanexOES(GLenum plane, const GLfixed *equation) {
150170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
150180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
150190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glClipPlanexOES);
150210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument plane
150230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_plane = glmsg.add_args();
150240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_plane->set_isarray(false);
150250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_plane->set_type(GLMessage::DataType::ENUM);
150260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_plane->add_intvalue((int)plane);
150270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument equation
150290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_equation = glmsg.add_args();
150300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_equation->set_isarray(false);
150310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_equation->set_type(GLMessage::DataType::INT);
150320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_equation->add_intvalue((int)equation);
150330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1503505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1503605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
150370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glClipPlanexOES(plane, equation);
1503805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1503905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
150400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
150429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) equation,
150439801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
150449801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1504505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1504605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
150479801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1504893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
150490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
150500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glColor4xOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) {
150520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
150530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
150540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glColor4xOES);
150560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument red
150580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_red = glmsg.add_args();
150590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->set_isarray(false);
150600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->set_type(GLMessage::DataType::INT);
150610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_red->add_intvalue(red);
150620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument green
150640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_green = glmsg.add_args();
150650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->set_isarray(false);
150660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->set_type(GLMessage::DataType::INT);
150670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_green->add_intvalue(green);
150680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument blue
150700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_blue = glmsg.add_args();
150710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->set_isarray(false);
150720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->set_type(GLMessage::DataType::INT);
150730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_blue->add_intvalue(blue);
150740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument alpha
150760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_alpha = glmsg.add_args();
150770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->set_isarray(false);
150780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->set_type(GLMessage::DataType::INT);
150790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_alpha->add_intvalue(alpha);
150800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1508205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1508305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
150840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glColor4xOES(red, green, blue, alpha);
1508505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1508605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
150870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150889801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
150899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
150909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1509105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1509205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
150939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1509493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
150950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
150960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
150970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDepthRangexOES(GLclampx zNear, GLclampx zFar) {
150980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
150990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
151000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDepthRangexOES);
151020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zNear
151040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zNear = glmsg.add_args();
151050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_isarray(false);
151060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_type(GLMessage::DataType::INT);
151070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->add_intvalue(zNear);
151080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zFar
151100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zFar = glmsg.add_args();
151110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_isarray(false);
151120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_type(GLMessage::DataType::INT);
151130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->add_intvalue(zFar);
151140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1511605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1511705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
151180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDepthRangexOES(zNear, zFar);
1511905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1512005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
151210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
151239801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
151249801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1512505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1512605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
151279801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1512893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
151290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
151300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFogxOES(GLenum pname, GLfixed param) {
151320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
151330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
151340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFogxOES);
151360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
151380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
151390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
151400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
151410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
151420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
151440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
151450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
151460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
151470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
151480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1515005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1515105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
151520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFogxOES(pname, param);
1515305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1515405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
151550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
151579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
151589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1515905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1516005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
151619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1516293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
151630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
151640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFogxvOES(GLenum pname, const GLfixed *params) {
151660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
151670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
151680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFogxvOES);
151700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
151720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
151730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
151740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
151750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
151760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
151780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
151790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
151800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
151810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
151820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1518405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1518505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
151860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFogxvOES(pname, params);
1518705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1518805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
151890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
151909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
151919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
151929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
151939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1519405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1519505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
151969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1519793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
151980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
151990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFrustumxOES(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar) {
152010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
152020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
152030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFrustumxOES);
152050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument left
152070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_left = glmsg.add_args();
152080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_isarray(false);
152090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_type(GLMessage::DataType::INT);
152100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->add_intvalue(left);
152110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument right
152130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_right = glmsg.add_args();
152140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_isarray(false);
152150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_type(GLMessage::DataType::INT);
152160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->add_intvalue(right);
152170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument bottom
152190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_bottom = glmsg.add_args();
152200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_isarray(false);
152210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_type(GLMessage::DataType::INT);
152220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->add_intvalue(bottom);
152230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument top
152250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_top = glmsg.add_args();
152260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_isarray(false);
152270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_type(GLMessage::DataType::INT);
152280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->add_intvalue(top);
152290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zNear
152310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zNear = glmsg.add_args();
152320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_isarray(false);
152330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_type(GLMessage::DataType::INT);
152340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->add_intvalue(zNear);
152350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zFar
152370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zFar = glmsg.add_args();
152380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_isarray(false);
152390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_type(GLMessage::DataType::INT);
152400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->add_intvalue(zFar);
152410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1524305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1524405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
152450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFrustumxOES(left, right, bottom, top, zNear, zFar);
1524605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1524705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
152480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152499801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
152509801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
152519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1525205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1525305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
152549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1525593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
152560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
152570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetClipPlanexOES(GLenum pname, GLfixed eqn[4]) {
152590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
152600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
152610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetClipPlanexOES);
152630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
152650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
152660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
152670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
152680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
152690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument eqn
152710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_eqn = glmsg.add_args();
152720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_eqn->set_isarray(false);
152730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_eqn->set_type(GLMessage::DataType::INT);
152740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_eqn->add_intvalue((int)eqn);
152750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1527705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1527805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
152790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetClipPlanexOES(pname, eqn);
1528005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1528105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
152820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152839801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
152849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) eqn,
152859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
152869801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1528705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1528805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
152899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1529093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
152910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
152920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetFixedvOES(GLenum pname, GLfixed *params) {
152940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
152950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
152960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetFixedvOES);
152980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
152990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
153000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
153010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
153020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
153030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
153040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
153060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
153070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
153080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
153090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
153100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1531205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1531305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
153140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetFixedvOES(pname, params);
1531505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1531605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
153170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
153199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
153209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
153219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1532205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1532305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
153249801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1532593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
153260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
153270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetLightxvOES(GLenum light, GLenum pname, GLfixed *params) {
153290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
153300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
153310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetLightxvOES);
153330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument light
153350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_light = glmsg.add_args();
153360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_isarray(false);
153370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_type(GLMessage::DataType::ENUM);
153380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->add_intvalue((int)light);
153390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
153410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
153420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
153430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
153440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
153450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
153470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
153480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
153490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
153500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
153510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1535305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1535405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
153550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetLightxvOES(light, pname, params);
1535605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1535705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
153580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
153609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
153619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
153629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1536305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1536405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
153659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1536693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
153670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
153680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetMaterialxvOES(GLenum face, GLenum pname, GLfixed *params) {
153700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
153710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
153720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetMaterialxvOES);
153740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument face
153760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_face = glmsg.add_args();
153770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_isarray(false);
153780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_type(GLMessage::DataType::ENUM);
153790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->add_intvalue((int)face);
153800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
153820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
153830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
153840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
153850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
153860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
153880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
153890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
153900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
153910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
153920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
153930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1539405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1539505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
153960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetMaterialxvOES(face, pname, params);
1539705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1539805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
153990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
154019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
154029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
154039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1540405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1540505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
154069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1540793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
154080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
154090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetTexEnvxvOES(GLenum env, GLenum pname, GLfixed *params) {
154110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
154120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
154130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetTexEnvxvOES);
154150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument env
154170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_env = glmsg.add_args();
154180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_env->set_isarray(false);
154190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_env->set_type(GLMessage::DataType::ENUM);
154200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_env->add_intvalue((int)env);
154210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
154230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
154240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
154250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
154260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
154270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
154290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
154300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
154310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
154320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
154330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1543505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1543605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
154370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetTexEnvxvOES(env, pname, params);
1543805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1543905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
154400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
154429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
154439801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
154449801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1544505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1544605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
154479801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1544893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
154490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
154500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetTexParameterxvOES(GLenum target, GLenum pname, GLfixed *params) {
154520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
154530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
154540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetTexParameterxvOES);
154560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
154580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
154590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
154600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
154610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
154620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
154640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
154650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
154660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
154670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
154680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
154700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
154710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
154720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
154730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
154740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1547605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1547705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
154780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetTexParameterxvOES(target, pname, params);
1547905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1548005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
154810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154829801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
154839801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
154849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
154859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1548605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1548705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
154889801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1548993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
154900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
154910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLightModelxOES(GLenum pname, GLfixed param) {
154930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
154940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
154950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLightModelxOES);
154970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
154980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
154990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
155000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
155010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
155020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
155030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
155050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
155060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
155070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
155080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
155090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1551105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1551205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
155130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLightModelxOES(pname, param);
1551405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1551505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
155160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
155189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
155199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1552005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1552105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
155229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1552393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
155240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
155250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLightModelxvOES(GLenum pname, const GLfixed *params) {
155270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
155280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
155290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLightModelxvOES);
155310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
155330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
155340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
155350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
155360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
155370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
155390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
155400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
155410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
155420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
155430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1554505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1554605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
155470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLightModelxvOES(pname, params);
1554805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1554905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
155500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
155529801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
155539801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
155549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1555505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1555605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
155579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1555893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
155590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
155600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLightxOES(GLenum light, GLenum pname, GLfixed param) {
155620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
155630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
155640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLightxOES);
155660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument light
155680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_light = glmsg.add_args();
155690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_isarray(false);
155700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_type(GLMessage::DataType::ENUM);
155710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->add_intvalue((int)light);
155720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
155740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
155750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
155760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
155770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
155780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
155800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
155810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
155820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
155830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
155840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1558605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1558705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
155880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLightxOES(light, pname, param);
1558905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1559005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
155910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
155929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
155939801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
155949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1559505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1559605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
155979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1559893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
155990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
156000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLightxvOES(GLenum light, GLenum pname, const GLfixed *params) {
156020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
156030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
156040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLightxvOES);
156060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument light
156080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_light = glmsg.add_args();
156090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_isarray(false);
156100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->set_type(GLMessage::DataType::ENUM);
156110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_light->add_intvalue((int)light);
156120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
156140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
156150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
156160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
156170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
156180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
156200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
156210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
156220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
156230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
156240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1562605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1562705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
156280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLightxvOES(light, pname, params);
1562905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1563005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
156310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
156339801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
156349801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
156359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1563605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1563705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
156389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1563993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
156400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
156410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLineWidthxOES(GLfixed width) {
156430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
156440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
156450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLineWidthxOES);
156470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
156490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
156500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
156510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
156520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
156530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1565505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1565605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
156570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLineWidthxOES(width);
1565805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1565905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
156600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
156629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
156639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1566405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1566505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
156669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1566793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
156680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
156690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLoadMatrixxOES(const GLfixed *m) {
156710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
156720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
156730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLoadMatrixxOES);
156750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument m
156770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_m = glmsg.add_args();
156780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_m->set_isarray(false);
156790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_m->set_type(GLMessage::DataType::INT);
156800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_m->add_intvalue((int)m);
156810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1568305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1568405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
156850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLoadMatrixxOES(m);
1568605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1568705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
156880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
156909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) m,
156919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
156929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1569305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1569405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
156959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1569693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
156970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
156980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
156990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glMaterialxOES(GLenum face, GLenum pname, GLfixed param) {
157000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
157010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
157020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glMaterialxOES);
157040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument face
157060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_face = glmsg.add_args();
157070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_isarray(false);
157080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_type(GLMessage::DataType::ENUM);
157090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->add_intvalue((int)face);
157100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
157120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
157130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
157140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
157150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
157160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
157180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
157190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
157200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
157210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
157220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1572405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1572505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
157260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glMaterialxOES(face, pname, param);
1572705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1572805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
157290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157309801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
157319801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
157329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1573305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1573405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
157359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1573693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
157370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
157380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glMaterialxvOES(GLenum face, GLenum pname, const GLfixed *params) {
157400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
157410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
157420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glMaterialxvOES);
157440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument face
157460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_face = glmsg.add_args();
157470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_isarray(false);
157480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->set_type(GLMessage::DataType::ENUM);
157490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_face->add_intvalue((int)face);
157500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
157520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
157530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
157540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
157550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
157560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
157580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
157590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
157600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
157610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
157620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1576405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1576505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
157660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glMaterialxvOES(face, pname, params);
1576705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1576805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
157690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157709801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
157719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
157729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
157739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1577405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1577505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
157769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1577793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
157780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
157790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glMultMatrixxOES(const GLfixed *m) {
157810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
157820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
157830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glMultMatrixxOES);
157850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument m
157870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_m = glmsg.add_args();
157880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_m->set_isarray(false);
157890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_m->set_type(GLMessage::DataType::INT);
157900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_m->add_intvalue((int)m);
157910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1579305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1579405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
157950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glMultMatrixxOES(m);
1579605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1579705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
157980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
157999801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
158009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) m,
158019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
158029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1580305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1580405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
158059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1580693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
158070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
158080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
158090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glMultiTexCoord4xOES(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q) {
158100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
158110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
158120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
158130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glMultiTexCoord4xOES);
158140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
158150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
158160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
158170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
158180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
158190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
158200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
158210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument s
158220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_s = glmsg.add_args();
158230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_s->set_isarray(false);
158240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_s->set_type(GLMessage::DataType::INT);
158250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_s->add_intvalue(s);
158260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
158270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument t
158280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_t = glmsg.add_args();
158290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_t->set_isarray(false);
158300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_t->set_type(GLMessage::DataType::INT);
158310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_t->add_intvalue(t);
158320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
158330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument r
158340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_r = glmsg.add_args();
158350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_r->set_isarray(false);
158360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_r->set_type(GLMessage::DataType::INT);
158370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_r->add_intvalue(r);
158380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
158390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument q
158400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_q = glmsg.add_args();
158410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_q->set_isarray(false);
158420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_q->set_type(GLMessage::DataType::INT);
158430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_q->add_intvalue(q);
158440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
158450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1584605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1584705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
158480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glMultiTexCoord4xOES(target, s, t, r, q);
1584905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1585005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
158510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
158529801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
158539801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
158549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1585505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1585605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
158579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1585893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
158590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
158600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
158610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glNormal3xOES(GLfixed nx, GLfixed ny, GLfixed nz) {
158620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
158630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
158640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
158650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glNormal3xOES);
158660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
158670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument nx
158680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_nx = glmsg.add_args();
158690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nx->set_isarray(false);
158700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nx->set_type(GLMessage::DataType::INT);
158710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nx->add_intvalue(nx);
158720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
158730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument ny
158740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_ny = glmsg.add_args();
158750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ny->set_isarray(false);
158760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ny->set_type(GLMessage::DataType::INT);
158770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_ny->add_intvalue(ny);
158780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
158790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument nz
158800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_nz = glmsg.add_args();
158810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nz->set_isarray(false);
158820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nz->set_type(GLMessage::DataType::INT);
158830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_nz->add_intvalue(nz);
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.glNormal3xOES(nx, ny, nz);
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_glOrthoxOES(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar) {
159020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
159030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
159040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glOrthoxOES);
159060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument left
159080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_left = glmsg.add_args();
159090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_isarray(false);
159100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_type(GLMessage::DataType::INT);
159110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->add_intvalue(left);
159120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument right
159140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_right = glmsg.add_args();
159150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_isarray(false);
159160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_type(GLMessage::DataType::INT);
159170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->add_intvalue(right);
159180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument bottom
159200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_bottom = glmsg.add_args();
159210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_isarray(false);
159220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_type(GLMessage::DataType::INT);
159230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->add_intvalue(bottom);
159240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument top
159260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_top = glmsg.add_args();
159270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_isarray(false);
159280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_type(GLMessage::DataType::INT);
159290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->add_intvalue(top);
159300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zNear
159320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zNear = glmsg.add_args();
159330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_isarray(false);
159340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_type(GLMessage::DataType::INT);
159350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->add_intvalue(zNear);
159360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zFar
159380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zFar = glmsg.add_args();
159390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_isarray(false);
159400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_type(GLMessage::DataType::INT);
159410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->add_intvalue(zFar);
159420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1594405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1594505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
159460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glOrthoxOES(left, right, bottom, top, zNear, zFar);
1594705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1594805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
159490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159509801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
159519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
159529801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1595305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1595405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
159559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1595693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
159570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
159580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glPointParameterxOES(GLenum pname, GLfixed param) {
159600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
159610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
159620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glPointParameterxOES);
159640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
159660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
159670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
159680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
159690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
159700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
159720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
159730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
159740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
159750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
159760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1597805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1597905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
159800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glPointParameterxOES(pname, param);
1598105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1598205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
159830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
159859801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
159869801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1598705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1598805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
159899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1599093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
159910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
159920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glPointParameterxvOES(GLenum pname, const GLfixed *params) {
159940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
159950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
159960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glPointParameterxvOES);
159980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
159990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
160000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
160010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
160020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
160030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
160040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
160060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
160070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
160080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
160090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
160100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1601205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1601305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
160140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glPointParameterxvOES(pname, params);
1601505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1601605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
160170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
160199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
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_glPointSizexOES(GLfixed size) {
160290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
160300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
160310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glPointSizexOES);
160330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument size
160350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_size = glmsg.add_args();
160360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_isarray(false);
160370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_type(GLMessage::DataType::INT);
160380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->add_intvalue(size);
160390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1604105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1604205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
160430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glPointSizexOES(size);
1604405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1604505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
160460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160479801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
160489801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
160499801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1605005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1605105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
160529801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1605393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
160540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
160550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glPolygonOffsetxOES(GLfixed factor, GLfixed units) {
160570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
160580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
160590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glPolygonOffsetxOES);
160610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument factor
160630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_factor = glmsg.add_args();
160640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_factor->set_isarray(false);
160650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_factor->set_type(GLMessage::DataType::INT);
160660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_factor->add_intvalue(factor);
160670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument units
160690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_units = glmsg.add_args();
160700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_units->set_isarray(false);
160710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_units->set_type(GLMessage::DataType::INT);
160720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_units->add_intvalue(units);
160730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1607505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1607605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
160770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glPolygonOffsetxOES(factor, units);
1607805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1607905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
160800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
160829801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
160839801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1608405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1608505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
160869801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1608793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
160880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
160890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glRotatexOES(GLfixed angle, GLfixed x, GLfixed y, GLfixed z) {
160910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
160920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
160930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glRotatexOES);
160950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
160960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument angle
160970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_angle = glmsg.add_args();
160980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_angle->set_isarray(false);
160990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_angle->set_type(GLMessage::DataType::INT);
161000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_angle->add_intvalue(angle);
161010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
161030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
161040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
161050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::INT);
161060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_intvalue(x);
161070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
161090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
161100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
161110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::INT);
161120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_intvalue(y);
161130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
161150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
161160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
161170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::INT);
161180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_intvalue(z);
161190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1612105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1612205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
161230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glRotatexOES(angle, x, y, z);
1612405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1612505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
161260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161279801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
161289801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
161299801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1613005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1613105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
161329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1613393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
161340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
161350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glSampleCoveragexOES(GLclampx value, GLboolean invert) {
161370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
161380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
161390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glSampleCoveragexOES);
161410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument value
161430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_value = glmsg.add_args();
161440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_value->set_isarray(false);
161450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_value->set_type(GLMessage::DataType::INT);
161460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_value->add_intvalue(value);
161470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument invert
161490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_invert = glmsg.add_args();
161500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_invert->set_isarray(false);
161510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_invert->set_type(GLMessage::DataType::BOOL);
161520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_invert->add_boolvalue(invert);
161530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1615505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1615605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
161570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glSampleCoveragexOES(value, invert);
1615805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1615905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
161600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
161629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
161639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1616405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1616505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
161669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1616793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
161680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
161690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glScalexOES(GLfixed x, GLfixed y, GLfixed z) {
161710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
161720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
161730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glScalexOES);
161750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
161770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
161780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
161790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::INT);
161800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_intvalue(x);
161810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
161830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
161840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
161850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::INT);
161860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_intvalue(y);
161870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
161890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
161900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
161910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::INT);
161920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_intvalue(z);
161930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
161940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1619505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1619605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
161970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glScalexOES(x, y, z);
1619805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1619905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
162000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
162029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
162039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1620405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1620505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
162069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1620793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
162080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
162090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexEnvxOES(GLenum target, GLenum pname, GLfixed param) {
162110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
162120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
162130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexEnvxOES);
162150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
162170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
162180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
162190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
162200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
162210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
162230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
162240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
162250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
162260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
162270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
162290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
162300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
162310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
162320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
162330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1623505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1623605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
162370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexEnvxOES(target, pname, param);
1623805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1623905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
162400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
162429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
162439801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1624405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1624505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
162469801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1624793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
162480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
162490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexEnvxvOES(GLenum target, GLenum pname, const GLfixed *params) {
162510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
162520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
162530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexEnvxvOES);
162550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
162570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
162580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
162590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
162600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
162610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
162630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
162640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
162650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
162660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
162670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
162690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
162700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
162710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
162720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
162730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1627505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1627605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
162770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexEnvxvOES(target, pname, params);
1627805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1627905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
162800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
162829801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
162839801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
162849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1628505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1628605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
162879801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1628893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
162890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
162900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexParameterxOES(GLenum target, GLenum pname, GLfixed param) {
162920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
162930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
162940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexParameterxOES);
162960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
162970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
162980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
162990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
163000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
163010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
163020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
163040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
163050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
163060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
163070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
163080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
163100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
163110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
163120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
163130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
163140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1631605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1631705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
163180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexParameterxOES(target, pname, param);
1631905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1632005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
163210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
163239801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
163249801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1632505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1632605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
163279801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1632893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
163290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
163300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexParameterxvOES(GLenum target, GLenum pname, const GLfixed *params) {
163320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
163330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
163340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexParameterxvOES);
163360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
163380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
163390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
163400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
163410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
163420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
163440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
163450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
163460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
163470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
163480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
163500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
163510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
163520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
163530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
163540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1635605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1635705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
163580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexParameterxvOES(target, pname, params);
1635905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1636005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
163610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163629801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
163639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
163649801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
163659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1636605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1636705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
163689801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1636993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
163700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
163710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTranslatexOES(GLfixed x, GLfixed y, GLfixed z) {
163730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
163740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
163750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTranslatexOES);
163770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument x
163790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_x = glmsg.add_args();
163800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_isarray(false);
163810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->set_type(GLMessage::DataType::INT);
163820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_x->add_intvalue(x);
163830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument y
163850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_y = glmsg.add_args();
163860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_isarray(false);
163870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->set_type(GLMessage::DataType::INT);
163880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_y->add_intvalue(y);
163890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument z
163910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_z = glmsg.add_args();
163920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_isarray(false);
163930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->set_type(GLMessage::DataType::INT);
163940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_z->add_intvalue(z);
163950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
163960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1639705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1639805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
163990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTranslatexOES(x, y, z);
1640005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1640105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
164020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
164049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
164059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1640605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1640705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
164089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1640993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
164100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
164110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164120469dd6d55fa331bfd7de9431da98b6340d82271Siva VelusamyGLboolean GLTrace_glIsRenderbufferOES(GLuint renderbuffer) {
164130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
164140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
164150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glIsRenderbufferOES);
164170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument renderbuffer
164190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
164200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffer->set_isarray(false);
164210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffer->set_type(GLMessage::DataType::INT);
164220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffer->add_intvalue(renderbuffer);
164230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1642505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1642605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
164270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLboolean retValue = glContext->hooks->gl.glIsRenderbufferOES(renderbuffer);
1642805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1642905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
164300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
164320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
164330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
164340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::BOOL);
164350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_boolvalue(retValue);
164360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
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    return retValue;
164460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
164470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glBindRenderbufferOES(GLenum target, GLuint renderbuffer) {
164490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
164500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
164510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glBindRenderbufferOES);
164530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
164550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
164560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
164570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
164580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
164590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument renderbuffer
164610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
164620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffer->set_isarray(false);
164630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffer->set_type(GLMessage::DataType::INT);
164640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffer->add_intvalue(renderbuffer);
164650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1646705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1646805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
164690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glBindRenderbufferOES(target, renderbuffer);
1647005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1647105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
164720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164739801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
164749801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
164759801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1647605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1647705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
164789801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1647993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
164800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
164810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDeleteRenderbuffersOES(GLsizei n, const GLuint* renderbuffers) {
164830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
164840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
164850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDeleteRenderbuffersOES);
164870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument n
164890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_n = glmsg.add_args();
164900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_isarray(false);
164910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_type(GLMessage::DataType::INT);
164920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->add_intvalue(n);
164930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
164940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument renderbuffers
164950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_renderbuffers = glmsg.add_args();
164960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffers->set_isarray(false);
164970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffers->set_type(GLMessage::DataType::INT);
164980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffers->add_intvalue((int)renderbuffers);
164990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1650105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1650205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
165030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDeleteRenderbuffersOES(n, renderbuffers);
1650405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1650505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
165060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165079801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
165089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) renderbuffers,
165099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
165109801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1651105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1651205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
165139801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1651493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
165150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
165160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGenRenderbuffersOES(GLsizei n, GLuint* renderbuffers) {
165180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
165190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
165200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGenRenderbuffersOES);
165220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument n
165240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_n = glmsg.add_args();
165250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_isarray(false);
165260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_type(GLMessage::DataType::INT);
165270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->add_intvalue(n);
165280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument renderbuffers
165300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_renderbuffers = glmsg.add_args();
165310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffers->set_isarray(false);
165320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffers->set_type(GLMessage::DataType::INT);
165330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffers->add_intvalue((int)renderbuffers);
165340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1653605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1653705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
165380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGenRenderbuffersOES(n, renderbuffers);
1653905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1654005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
165410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
165439801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) renderbuffers,
165449801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
165459801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1654605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1654705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
165489801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1654993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
165500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
165510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glRenderbufferStorageOES(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) {
165530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
165540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
165550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glRenderbufferStorageOES);
165570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
165590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
165600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
165610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
165620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
165630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument internalformat
165650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_internalformat = glmsg.add_args();
165660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->set_isarray(false);
165670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->set_type(GLMessage::DataType::ENUM);
165680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_internalformat->add_intvalue((int)internalformat);
165690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument width
165710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_width = glmsg.add_args();
165720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_isarray(false);
165730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->set_type(GLMessage::DataType::INT);
165740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_width->add_intvalue(width);
165750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument height
165770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_height = glmsg.add_args();
165780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_isarray(false);
165790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->set_type(GLMessage::DataType::INT);
165800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_height->add_intvalue(height);
165810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1658305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1658405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
165850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glRenderbufferStorageOES(target, internalformat, width, height);
1658605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1658705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
165880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
165909801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
165919801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1659205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1659305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
165949801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1659593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
165960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
165970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
165980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetRenderbufferParameterivOES(GLenum target, GLenum pname, GLint* params) {
165990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
166000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
166010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetRenderbufferParameterivOES);
166030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
166050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
166060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
166070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
166080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
166090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
166110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
166120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
166130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
166140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
166150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
166170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
166180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
166190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
166200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
166210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1662305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1662405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
166250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetRenderbufferParameterivOES(target, pname, params);
1662605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1662705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
166280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166299801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
166309801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
166319801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
166329801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1663305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1663405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
166359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1663693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
166370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
166380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166390469dd6d55fa331bfd7de9431da98b6340d82271Siva VelusamyGLboolean GLTrace_glIsFramebufferOES(GLuint framebuffer) {
166400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
166410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
166420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glIsFramebufferOES);
166440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument framebuffer
166460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_framebuffer = glmsg.add_args();
166470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffer->set_isarray(false);
166480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffer->set_type(GLMessage::DataType::INT);
166490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffer->add_intvalue(framebuffer);
166500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1665205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1665305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
166540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLboolean retValue = glContext->hooks->gl.glIsFramebufferOES(framebuffer);
1665505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1665605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
166570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
166590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
166600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
166610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::BOOL);
166620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_boolvalue(retValue);
166630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166649801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
166659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
166669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1666705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1666805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
166699801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1667093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
166710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
166730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
166740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glBindFramebufferOES(GLenum target, GLuint framebuffer) {
166760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
166770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
166780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glBindFramebufferOES);
166800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
166820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
166830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
166840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
166850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
166860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument framebuffer
166880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_framebuffer = glmsg.add_args();
166890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffer->set_isarray(false);
166900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffer->set_type(GLMessage::DataType::INT);
166910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffer->add_intvalue(framebuffer);
166920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
166930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1669405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1669505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
166960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glBindFramebufferOES(target, framebuffer);
1669705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1669805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
166990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
167019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
167029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1670305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1670405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
167059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1670693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
167070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
167080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDeleteFramebuffersOES(GLsizei n, const GLuint* framebuffers) {
167100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
167110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
167120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDeleteFramebuffersOES);
167140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument n
167160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_n = glmsg.add_args();
167170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_isarray(false);
167180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_type(GLMessage::DataType::INT);
167190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->add_intvalue(n);
167200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument framebuffers
167220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_framebuffers = glmsg.add_args();
167230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffers->set_isarray(false);
167240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffers->set_type(GLMessage::DataType::INT);
167250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffers->add_intvalue((int)framebuffers);
167260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1672805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1672905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
167300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDeleteFramebuffersOES(n, framebuffers);
1673105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1673205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
167330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167349801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
167359801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) framebuffers,
167369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
167379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1673805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1673905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
167409801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1674193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
167420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
167430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGenFramebuffersOES(GLsizei n, GLuint* framebuffers) {
167450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
167460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
167470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGenFramebuffersOES);
167490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument n
167510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_n = glmsg.add_args();
167520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_isarray(false);
167530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->set_type(GLMessage::DataType::INT);
167540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_n->add_intvalue(n);
167550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument framebuffers
167570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_framebuffers = glmsg.add_args();
167580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffers->set_isarray(false);
167590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffers->set_type(GLMessage::DataType::INT);
167600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_framebuffers->add_intvalue((int)framebuffers);
167610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1676305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1676405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
167650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGenFramebuffersOES(n, framebuffers);
1676605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1676705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
167680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167699801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
167709801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) framebuffers,
167719801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
167729801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1677305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1677405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
167759801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1677693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
167770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
167780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167790469dd6d55fa331bfd7de9431da98b6340d82271Siva VelusamyGLenum GLTrace_glCheckFramebufferStatusOES(GLenum target) {
167800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
167810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
167820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glCheckFramebufferStatusOES);
167840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
167860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
167870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
167880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
167890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
167900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1679205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1679305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
167940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLenum retValue = glContext->hooks->gl.glCheckFramebufferStatusOES(target);
1679505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1679605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
167970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
167980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
167990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
168000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
168010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::ENUM);
168020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_intvalue((int)retValue);
168030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
168059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
168069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1680705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1680805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
168099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1681093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
168110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
168130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
168140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFramebufferRenderbufferOES(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) {
168160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
168170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
168180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFramebufferRenderbufferOES);
168200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
168220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
168230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
168240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
168250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
168260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument attachment
168280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_attachment = glmsg.add_args();
168290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->set_isarray(false);
168300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->set_type(GLMessage::DataType::ENUM);
168310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->add_intvalue((int)attachment);
168320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument renderbuffertarget
168340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_renderbuffertarget = glmsg.add_args();
168350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffertarget->set_isarray(false);
168360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffertarget->set_type(GLMessage::DataType::ENUM);
168370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffertarget->add_intvalue((int)renderbuffertarget);
168380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument renderbuffer
168400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_renderbuffer = glmsg.add_args();
168410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffer->set_isarray(false);
168420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffer->set_type(GLMessage::DataType::INT);
168430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_renderbuffer->add_intvalue(renderbuffer);
168440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1684605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1684705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
168480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFramebufferRenderbufferOES(target, attachment, renderbuffertarget, renderbuffer);
1684905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1685005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
168510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168529801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
168539801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
168549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1685505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1685605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
168579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1685893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
168590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
168600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFramebufferTexture2DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) {
168620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
168630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
168640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFramebufferTexture2DOES);
168660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
168680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
168690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
168700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
168710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
168720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument attachment
168740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_attachment = glmsg.add_args();
168750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->set_isarray(false);
168760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->set_type(GLMessage::DataType::ENUM);
168770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->add_intvalue((int)attachment);
168780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument textarget
168800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_textarget = glmsg.add_args();
168810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_textarget->set_isarray(false);
168820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_textarget->set_type(GLMessage::DataType::ENUM);
168830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_textarget->add_intvalue((int)textarget);
168840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument texture
168860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_texture = glmsg.add_args();
168870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->set_isarray(false);
168880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->set_type(GLMessage::DataType::INT);
168890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_texture->add_intvalue(texture);
168900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument level
168920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_level = glmsg.add_args();
168930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_isarray(false);
168940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->set_type(GLMessage::DataType::INT);
168950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_level->add_intvalue(level);
168960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
168970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1689805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1689905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
169000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFramebufferTexture2DOES(target, attachment, textarget, texture, level);
1690105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1690205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
169030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
169059801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
169069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1690705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1690805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
169099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1691093a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
169110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
169120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetFramebufferAttachmentParameterivOES(GLenum target, GLenum attachment, GLenum pname, GLint* params) {
169140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
169150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
169160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetFramebufferAttachmentParameterivOES);
169180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
169200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
169210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
169220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
169230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
169240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument attachment
169260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_attachment = glmsg.add_args();
169270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->set_isarray(false);
169280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->set_type(GLMessage::DataType::ENUM);
169290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_attachment->add_intvalue((int)attachment);
169300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
169320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
169330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
169340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
169350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
169360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
169380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
169390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
169400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
169410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
169420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1694405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1694505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
169460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetFramebufferAttachmentParameterivOES(target, attachment, pname, params);
1694705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1694805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
169490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169509801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
169519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
169529801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
169539801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1695405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1695505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
169569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1695793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
169580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
169590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGenerateMipmapOES(GLenum target) {
169610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
169620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
169630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGenerateMipmapOES);
169650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument target
169670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_target = glmsg.add_args();
169680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_isarray(false);
169690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->set_type(GLMessage::DataType::ENUM);
169700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_target->add_intvalue((int)target);
169710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1697305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1697405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
169750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGenerateMipmapOES(target);
1697605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1697705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
169780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169799801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
169809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
169819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1698205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1698305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
169849801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1698593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
169860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
169870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glCurrentPaletteMatrixOES(GLuint matrixpaletteindex) {
169890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
169900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
169910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glCurrentPaletteMatrixOES);
169930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
169940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument matrixpaletteindex
169950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_matrixpaletteindex = glmsg.add_args();
169960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_matrixpaletteindex->set_isarray(false);
169970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_matrixpaletteindex->set_type(GLMessage::DataType::INT);
169980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_matrixpaletteindex->add_intvalue(matrixpaletteindex);
169990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1700105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1700205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
170030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glCurrentPaletteMatrixOES(matrixpaletteindex);
1700405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1700505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
170060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170079801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
170089801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
170099801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1701005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1701105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
170129801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1701393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
170140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
170150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glLoadPaletteFromModelViewMatrixOES(void) {
170170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
170180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
170190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glLoadPaletteFromModelViewMatrixOES);
170210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1702305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1702405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
170250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glLoadPaletteFromModelViewMatrixOES();
1702605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1702705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
170280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170299801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
170309801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
170319801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1703205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1703305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
170349801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1703593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
170360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
170370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glMatrixIndexPointerOES(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) {
170390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
170400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
170410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glMatrixIndexPointerOES);
170430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument size
170450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_size = glmsg.add_args();
170460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_isarray(false);
170470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_type(GLMessage::DataType::INT);
170480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->add_intvalue(size);
170490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument type
170510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_type = glmsg.add_args();
170520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_isarray(false);
170530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_type(GLMessage::DataType::ENUM);
170540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->add_intvalue((int)type);
170550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument stride
170570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_stride = glmsg.add_args();
170580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->set_isarray(false);
170590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->set_type(GLMessage::DataType::INT);
170600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->add_intvalue(stride);
170610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pointer
170630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pointer = glmsg.add_args();
170640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pointer->set_isarray(false);
170650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pointer->set_type(GLMessage::DataType::INT);
170660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pointer->add_intvalue((int)pointer);
170670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1706905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1707005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
170710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glMatrixIndexPointerOES(size, type, stride, pointer);
1707205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1707305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
170740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170759801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
170769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) pointer,
170779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
170789801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1707905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1708005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
170819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1708293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
170830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
170840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glWeightPointerOES(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) {
170860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
170870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
170880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glWeightPointerOES);
170900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument size
170920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_size = glmsg.add_args();
170930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_isarray(false);
170940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->set_type(GLMessage::DataType::INT);
170950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_size->add_intvalue(size);
170960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
170970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument type
170980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_type = glmsg.add_args();
170990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_isarray(false);
171000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->set_type(GLMessage::DataType::ENUM);
171010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_type->add_intvalue((int)type);
171020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument stride
171040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_stride = glmsg.add_args();
171050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->set_isarray(false);
171060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->set_type(GLMessage::DataType::INT);
171070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_stride->add_intvalue(stride);
171080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pointer
171100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pointer = glmsg.add_args();
171110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pointer->set_isarray(false);
171120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pointer->set_type(GLMessage::DataType::INT);
171130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pointer->add_intvalue((int)pointer);
171140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1711605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1711705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
171180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glWeightPointerOES(size, type, stride, pointer);
1711905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1712005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
171210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
171239801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) pointer,
171249801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
171259801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1712605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1712705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
171289801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1712993a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
171300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
171310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171320469dd6d55fa331bfd7de9431da98b6340d82271Siva VelusamyGLbitfield GLTrace_glQueryMatrixxOES(GLfixed mantissa[16], GLint exponent[16]) {
171330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
171340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
171350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glQueryMatrixxOES);
171370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument mantissa
171390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_mantissa = glmsg.add_args();
171400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mantissa->set_isarray(false);
171410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mantissa->set_type(GLMessage::DataType::INT);
171420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_mantissa->add_intvalue((int)mantissa);
171430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument exponent
171450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_exponent = glmsg.add_args();
171460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_exponent->set_isarray(false);
171470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_exponent->set_type(GLMessage::DataType::INT);
171480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_exponent->add_intvalue((int)exponent);
171490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1715105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1715205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
171530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLbitfield retValue = glContext->hooks->gl.glQueryMatrixxOES(mantissa, exponent);
1715405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1715505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
171560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // set return value
171580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *rt = glmsg.mutable_returnvalue();
171590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_isarray(false);
171600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->set_type(GLMessage::DataType::INT);
171610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    rt->add_intvalue(retValue);
171620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
171649801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) mantissa,
171659801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) exponent,
171669801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
171679801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1716805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1716905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
171709801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1717193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
171720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    return retValue;
171740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
171750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glDepthRangefOES(GLclampf zNear, GLclampf zFar) {
171770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
171780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
171790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glDepthRangefOES);
171810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zNear
171830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zNear = glmsg.add_args();
171840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_isarray(false);
171850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_type(GLMessage::DataType::FLOAT);
171860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->add_floatvalue(zNear);
171870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zFar
171890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zFar = glmsg.add_args();
171900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_isarray(false);
171910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_type(GLMessage::DataType::FLOAT);
171920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->add_floatvalue(zFar);
171930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
171940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1719505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1719605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
171970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glDepthRangefOES(zNear, zFar);
1719805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1719905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
172000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
172029801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
172039801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1720405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1720505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
172069801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1720793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
172080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
172090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glFrustumfOES(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) {
172110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
172120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
172130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glFrustumfOES);
172150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument left
172170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_left = glmsg.add_args();
172180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_isarray(false);
172190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_type(GLMessage::DataType::FLOAT);
172200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->add_floatvalue(left);
172210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument right
172230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_right = glmsg.add_args();
172240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_isarray(false);
172250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_type(GLMessage::DataType::FLOAT);
172260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->add_floatvalue(right);
172270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument bottom
172290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_bottom = glmsg.add_args();
172300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_isarray(false);
172310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_type(GLMessage::DataType::FLOAT);
172320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->add_floatvalue(bottom);
172330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument top
172350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_top = glmsg.add_args();
172360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_isarray(false);
172370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_type(GLMessage::DataType::FLOAT);
172380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->add_floatvalue(top);
172390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zNear
172410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zNear = glmsg.add_args();
172420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_isarray(false);
172430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_type(GLMessage::DataType::FLOAT);
172440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->add_floatvalue(zNear);
172450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zFar
172470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zFar = glmsg.add_args();
172480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_isarray(false);
172490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_type(GLMessage::DataType::FLOAT);
172500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->add_floatvalue(zFar);
172510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1725305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1725405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
172550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glFrustumfOES(left, right, bottom, top, zNear, zFar);
1725605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1725705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
172580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
172609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
172619801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1726205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1726305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
172649801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1726593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
172660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
172670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glOrthofOES(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) {
172690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
172700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
172710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glOrthofOES);
172730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument left
172750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_left = glmsg.add_args();
172760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_isarray(false);
172770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->set_type(GLMessage::DataType::FLOAT);
172780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_left->add_floatvalue(left);
172790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument right
172810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_right = glmsg.add_args();
172820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_isarray(false);
172830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->set_type(GLMessage::DataType::FLOAT);
172840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_right->add_floatvalue(right);
172850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument bottom
172870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_bottom = glmsg.add_args();
172880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_isarray(false);
172890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->set_type(GLMessage::DataType::FLOAT);
172900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_bottom->add_floatvalue(bottom);
172910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument top
172930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_top = glmsg.add_args();
172940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_isarray(false);
172950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->set_type(GLMessage::DataType::FLOAT);
172960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_top->add_floatvalue(top);
172970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
172980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zNear
172990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zNear = glmsg.add_args();
173000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_isarray(false);
173010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->set_type(GLMessage::DataType::FLOAT);
173020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zNear->add_floatvalue(zNear);
173030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument zFar
173050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_zFar = glmsg.add_args();
173060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_isarray(false);
173070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->set_type(GLMessage::DataType::FLOAT);
173080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_zFar->add_floatvalue(zFar);
173090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1731105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1731205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
173130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glOrthofOES(left, right, bottom, top, zNear, zFar);
1731405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1731505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
173160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
173189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
173199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1732005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1732105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
173229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1732393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
173240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
173250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glClipPlanefOES(GLenum plane, const GLfloat *equation) {
173270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
173280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
173290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glClipPlanefOES);
173310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument plane
173330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_plane = glmsg.add_args();
173340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_plane->set_isarray(false);
173350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_plane->set_type(GLMessage::DataType::ENUM);
173360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_plane->add_intvalue((int)plane);
173370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument equation
173390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_equation = glmsg.add_args();
173400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_equation->set_isarray(false);
173410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_equation->set_type(GLMessage::DataType::INT);
173420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_equation->add_intvalue((int)equation);
173430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1734505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1734605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
173470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glClipPlanefOES(plane, equation);
1734805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1734905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
173500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
173529801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) equation,
173539801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
173549801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1735505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1735605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
173579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1735893a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
173590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
173600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetClipPlanefOES(GLenum pname, GLfloat eqn[4]) {
173620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
173630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
173640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetClipPlanefOES);
173660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
173680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
173690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
173700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
173710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
173720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument eqn
173740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_eqn = glmsg.add_args();
173750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_eqn->set_isarray(false);
173760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_eqn->set_type(GLMessage::DataType::INT);
173770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_eqn->add_intvalue((int)eqn);
173780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1738005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1738105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
173820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetClipPlanefOES(pname, eqn);
1738305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1738405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
173850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173869801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
173879801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) eqn,
173889801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
173899801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1739005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1739105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
173929801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1739393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
173940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
173950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
173960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glClearDepthfOES(GLclampf depth) {
173970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
173980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
173990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glClearDepthfOES);
174010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument depth
174030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_depth = glmsg.add_args();
174040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_isarray(false);
174050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->set_type(GLMessage::DataType::FLOAT);
174060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_depth->add_floatvalue(depth);
174070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1740905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1741005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
174110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glClearDepthfOES(depth);
1741205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1741305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
174140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
174169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
174179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1741805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1741905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
174209801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1742193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
174220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
174230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexGenfOES(GLenum coord, GLenum pname, GLfloat param) {
174250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
174260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
174270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexGenfOES);
174290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument coord
174310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_coord = glmsg.add_args();
174320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_isarray(false);
174330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_type(GLMessage::DataType::ENUM);
174340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->add_intvalue((int)coord);
174350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
174370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
174380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
174390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
174400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
174410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
174430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
174440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
174450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::FLOAT);
174460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_floatvalue(param);
174470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1744905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1745005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
174510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexGenfOES(coord, pname, param);
1745205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1745305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
174540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174559801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
174569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
174579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1745805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1745905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
174609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1746193a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
174620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
174630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexGenfvOES(GLenum coord, GLenum pname, const GLfloat *params) {
174650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
174660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
174670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexGenfvOES);
174690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument coord
174710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_coord = glmsg.add_args();
174720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_isarray(false);
174730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_type(GLMessage::DataType::ENUM);
174740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->add_intvalue((int)coord);
174750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
174770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
174780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
174790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
174800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
174810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
174830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
174840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
174850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
174860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
174870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1748905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1749005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
174910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexGenfvOES(coord, pname, params);
1749205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1749305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
174940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
174959801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
174969801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
174979801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
174989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1749905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1750005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
175019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1750293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
175030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
175040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexGeniOES(GLenum coord, GLenum pname, GLint param) {
175060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
175070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
175080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexGeniOES);
175100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument coord
175120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_coord = glmsg.add_args();
175130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_isarray(false);
175140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_type(GLMessage::DataType::ENUM);
175150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->add_intvalue((int)coord);
175160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
175180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
175190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
175200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
175210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
175220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
175240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
175250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
175260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
175270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
175280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1753005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1753105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
175320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexGeniOES(coord, pname, param);
1753305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1753405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
175350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175369801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
175379801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
175389801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1753905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1754005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
175419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1754293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
175430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
175440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexGenivOES(GLenum coord, GLenum pname, const GLint *params) {
175460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
175470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
175480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexGenivOES);
175500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument coord
175520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_coord = glmsg.add_args();
175530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_isarray(false);
175540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_type(GLMessage::DataType::ENUM);
175550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->add_intvalue((int)coord);
175560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
175580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
175590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
175600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
175610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
175620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
175640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
175650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
175660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
175670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
175680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1757005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1757105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
175720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexGenivOES(coord, pname, params);
1757305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1757405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
175750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175769801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
175779801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
175789801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
175799801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1758005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1758105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
175829801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1758393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
175840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
175850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexGenxOES(GLenum coord, GLenum pname, GLfixed param) {
175870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
175880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
175890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexGenxOES);
175910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument coord
175930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_coord = glmsg.add_args();
175940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_isarray(false);
175950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_type(GLMessage::DataType::ENUM);
175960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->add_intvalue((int)coord);
175970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
175980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
175990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
176000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
176010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
176020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
176030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument param
176050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_param = glmsg.add_args();
176060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_isarray(false);
176070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->set_type(GLMessage::DataType::INT);
176080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_param->add_intvalue(param);
176090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1761105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1761205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
176130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexGenxOES(coord, pname, param);
1761405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1761505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
176160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
176189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
176199801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1762005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1762105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
176229801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1762393a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
176240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
176250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glTexGenxvOES(GLenum coord, GLenum pname, const GLfixed *params) {
176270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
176280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
176290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glTexGenxvOES);
176310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument coord
176330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_coord = glmsg.add_args();
176340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_isarray(false);
176350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_type(GLMessage::DataType::ENUM);
176360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->add_intvalue((int)coord);
176370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
176390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
176400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
176410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
176420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
176430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176440469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
176450469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
176460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
176470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
176480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
176490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1765105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1765205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
176530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glTexGenxvOES(coord, pname, params);
1765405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1765505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
176560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176579801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
176589801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
176599801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
176609801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1766105df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1766205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
176639801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1766493a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
176650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
176660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetTexGenfvOES(GLenum coord, GLenum pname, GLfloat *params) {
176680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
176690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
176700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetTexGenfvOES);
176720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument coord
176740469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_coord = glmsg.add_args();
176750469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_isarray(false);
176760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_type(GLMessage::DataType::ENUM);
176770469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->add_intvalue((int)coord);
176780469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
176800469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
176810469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
176820469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
176830469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
176840469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176850469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
176860469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
176870469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
176880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
176890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
176900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1769205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1769305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
176940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetTexGenfvOES(coord, pname, params);
1769505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1769605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
176970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
176989801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
176999801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
177009801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
177019801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1770205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1770305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
177049801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1770593a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
177060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
177070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetTexGenivOES(GLenum coord, GLenum pname, GLint *params) {
177090469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
177100469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
177110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177120469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetTexGenivOES);
177130469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument coord
177150469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_coord = glmsg.add_args();
177160469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_isarray(false);
177170469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_type(GLMessage::DataType::ENUM);
177180469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->add_intvalue((int)coord);
177190469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177200469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
177210469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
177220469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
177230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
177240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
177250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
177270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
177280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
177290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
177300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
177310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1773305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1773405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
177350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetTexGenivOES(coord, pname, params);
1773605df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1773705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
177380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177399801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
177409801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
177419801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
177429801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1774305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1774405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
177459801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1774693a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
177470469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
177480469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glGetTexGenxvOES(GLenum coord, GLenum pname, GLfixed *params) {
177500469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
177510469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
177520469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177530469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glGetTexGenxvOES);
177540469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177550469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument coord
177560469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_coord = glmsg.add_args();
177570469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_isarray(false);
177580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->set_type(GLMessage::DataType::ENUM);
177590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_coord->add_intvalue((int)coord);
177600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument pname
177620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_pname = glmsg.add_args();
177630469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_isarray(false);
177640469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->set_type(GLMessage::DataType::ENUM);
177650469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_pname->add_intvalue((int)pname);
177660469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177670469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument params
177680469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_params = glmsg.add_args();
177690469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_isarray(false);
177700469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->set_type(GLMessage::DataType::INT);
177710469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_params->add_intvalue((int)params);
177720469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177730469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1777405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1777505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
177760469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glGetTexGenxvOES(coord, pname, params);
1777705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1777805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
177790469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177809801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
177819801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) params,
177829801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
177839801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1778405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1778505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
177869801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1778793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
177880469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
177890469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177900469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glClipPlanefIMG(GLenum p, const GLfloat *eqn) {
177910469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
177920469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
177930469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177940469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glClipPlanefIMG);
177950469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
177960469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument p
177970469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_p = glmsg.add_args();
177980469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_p->set_isarray(false);
177990469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_p->set_type(GLMessage::DataType::ENUM);
178000469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_p->add_intvalue((int)p);
178010469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
178020469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument eqn
178030469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_eqn = glmsg.add_args();
178040469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_eqn->set_isarray(false);
178050469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_eqn->set_type(GLMessage::DataType::INT);
178060469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_eqn->add_intvalue((int)eqn);
178070469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
178080469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1780905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1781005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
178110469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glClipPlanefIMG(p, eqn);
1781205df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1781305df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
178140469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
178159801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
178169801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) eqn,
178179801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
178189801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1781905df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1782005df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
178219801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1782293a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
178230469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
178240469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
178250469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamyvoid GLTrace_glClipPlanexIMG(GLenum p, const GLfixed *eqn) {
178260469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage glmsg;
178270469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLTraceContext *glContext = getGLTraceContext();
178280469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
178290469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glmsg.set_function(GLMessage::glClipPlanexIMG);
178300469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
178310469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument p
178320469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_p = glmsg.add_args();
178330469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_p->set_isarray(false);
178340469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_p->set_type(GLMessage::DataType::ENUM);
178350469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_p->add_intvalue((int)p);
178360469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
178370469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // copy argument eqn
178380469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    GLMessage_DataType *arg_eqn = glmsg.add_args();
178390469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_eqn->set_isarray(false);
178400469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_eqn->set_type(GLMessage::DataType::INT);
178410469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    arg_eqn->add_intvalue((int)eqn);
178420469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
178430469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    // call function
1784405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallStartTime = systemTime(SYSTEM_TIME_MONOTONIC);
1784505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadStartTime = systemTime(SYSTEM_TIME_THREAD);
178460469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy    glContext->hooks->gl.glClipPlanexIMG(p, eqn);
1784705df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t threadEndTime = systemTime(SYSTEM_TIME_THREAD);
1784805df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    nsecs_t wallEndTime = systemTime(SYSTEM_TIME_MONOTONIC);
178490469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
178509801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    void *pointerArgs[] = {
178519801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy        (void *) eqn,
178529801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy    };
178539801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy
1785405df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy    fixupGLMessage(glContext, wallStartTime, wallEndTime,
1785505df4504e57657994a89e424b6881ee26d0f313cSiva Velusamy                              threadStartTime, threadEndTime,
178569801142afbe3d906259b634ef3bc8bebdafe0083Siva Velusamy                              &glmsg, pointerArgs);
1785793a826f78f6313db791e6fc880439189897651b3Siva Velusamy    glContext->traceGLMessage(&glmsg);
178580469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}
178590469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
178600469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy
178610469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}; // namespace gltrace
178620469dd6d55fa331bfd7de9431da98b6340d82271Siva Velusamy}; // namespace android
17863