summaryrefslogtreecommitdiffstats
path: root/opengl/libs
diff options
context:
space:
mode:
authorDavid Li <davidxli@google.com>2011-03-01 16:08:10 -0800
committerDavid Li <davidxli@google.com>2011-03-03 18:28:43 -0800
commit28ca2abb1ab92b2cc3a5c9119ec2f697ec3401b2 (patch)
treef6bcb82ff2a68a5bd30218326def0f95fb6734f2 /opengl/libs
parente5f823ccf1cce4cab5699f1a07c1ee2290a69169 (diff)
downloadframeworks_base-28ca2abb1ab92b2cc3a5c9119ec2f697ec3401b2.zip
frameworks_base-28ca2abb1ab92b2cc3a5c9119ec2f697ec3401b2.tar.gz
frameworks_base-28ca2abb1ab92b2cc3a5c9119ec2f697ec3401b2.tar.bz2
Initial commit of GLESv2 debugger server
Use debug.egl.debug_proc property to match process cmdline. Binds to TCP:5039 and waits for client connection. Sends function call parameters, textures and shaders using Protobuf. Java Eclipse client plug-in is next. Change-Id: I183b755263663f87e86dde1ad12f527d0445fd57 Signed-off-by: David Li <davidxli@google.com>
Diffstat (limited to 'opengl/libs')
-rw-r--r--opengl/libs/Android.mk7
-rw-r--r--opengl/libs/EGL/Loader.cpp2
-rw-r--r--opengl/libs/EGL/egl.cpp31
-rw-r--r--opengl/libs/EGL/trace.cpp46
-rw-r--r--opengl/libs/GLES2_dbg/Android.mk46
-rwxr-xr-xopengl/libs/GLES2_dbg/generate_DebuggerMessage_proto.py73
-rwxr-xr-xopengl/libs/GLES2_dbg/generate_GLEnum_java.py43
-rwxr-xr-xopengl/libs/GLES2_dbg/generate_GLFunction_java.py34
-rwxr-xr-xopengl/libs/GLES2_dbg/generate_MessageFormatter_java.py239
-rwxr-xr-xopengl/libs/GLES2_dbg/generate_api_cpp.py174
-rwxr-xr-xopengl/libs/GLES2_dbg/generate_debug_in.py64
-rw-r--r--opengl/libs/GLES2_dbg/gl2_api_annotated.in426
-rw-r--r--opengl/libs/GLES2_dbg/include/glesv2_dbg.h381
-rw-r--r--opengl/libs/GLES2_dbg/src/DebuggerMessage.pb.cpp1038
-rw-r--r--opengl/libs/GLES2_dbg/src/DebuggerMessage.pb.h844
-rw-r--r--opengl/libs/GLES2_dbg/src/api.cpp5730
-rw-r--r--opengl/libs/GLES2_dbg/src/header.h65
-rw-r--r--opengl/libs/GLES2_dbg/src/server.cpp158
-rw-r--r--opengl/libs/GLES2_dbg/src/shader.cpp66
-rw-r--r--opengl/libs/GLES2_dbg/src/texture.cpp300
-rw-r--r--opengl/libs/debug.in235
21 files changed, 9995 insertions, 7 deletions
diff --git a/opengl/libs/Android.mk b/opengl/libs/Android.mk
index c8041fc..f1afbb6 100644
--- a/opengl/libs/Android.mk
+++ b/opengl/libs/Android.mk
@@ -13,8 +13,8 @@ LOCAL_SRC_FILES:= \
EGL/hooks.cpp \
EGL/Loader.cpp \
#
-
-LOCAL_SHARED_LIBRARIES += libcutils libutils
+LOCAL_STATIC_LIBRARIES += libGLESv2_dbg libprotobuf-cpp-2.3.0-lite
+LOCAL_SHARED_LIBRARIES += libcutils libutils libstlport
LOCAL_LDLIBS := -lpthread -ldl
LOCAL_MODULE:= libEGL
@@ -164,3 +164,6 @@ LOCAL_LDLIBS := -lpthread -ldl
LOCAL_MODULE:= libETC1
include $(BUILD_SHARED_LIBRARY)
+
+include $(call all-makefiles-under,$(LOCAL_PATH))
+
diff --git a/opengl/libs/EGL/Loader.cpp b/opengl/libs/EGL/Loader.cpp
index 747c829..55b5436 100644
--- a/opengl/libs/EGL/Loader.cpp
+++ b/opengl/libs/EGL/Loader.cpp
@@ -114,6 +114,8 @@ Loader::Loader()
Loader::~Loader()
{
+ extern void StopDebugServer();
+ StopDebugServer();
}
const char* Loader::getTag(int dpy, int impl)
diff --git a/opengl/libs/EGL/egl.cpp b/opengl/libs/EGL/egl.cpp
index 3d5a4d1..e427504 100644
--- a/opengl/libs/EGL/egl.cpp
+++ b/opengl/libs/EGL/egl.cpp
@@ -296,9 +296,9 @@ EGLAPI pthread_key_t gGLTraceKey = -1;
// ----------------------------------------------------------------------------
-static int gEGLTraceLevel;
+static int gEGLTraceLevel, gEGLDebugLevel;
static int gEGLApplicationTraceLevel;
-extern EGLAPI gl_hooks_t gHooksTrace;
+extern EGLAPI gl_hooks_t gHooksTrace, gHooksDebug;
static inline void setGlTraceThreadSpecific(gl_hooks_t const *value) {
pthread_setspecific(gGLTraceKey, value);
@@ -314,12 +314,37 @@ static void initEglTraceLevel() {
int propertyLevel = atoi(value);
int applicationLevel = gEGLApplicationTraceLevel;
gEGLTraceLevel = propertyLevel > applicationLevel ? propertyLevel : applicationLevel;
+
+ property_get("debug.egl.debug_proc", value, "");
+ long pid = getpid();
+ char procPath[128] = {};
+ sprintf(procPath, "/proc/%ld/cmdline", pid);
+ FILE * file = fopen(procPath, "r");
+ if (file)
+ {
+ char cmdline[256] = {};
+ if (fgets(cmdline, sizeof(cmdline) - 1, file))
+ {
+ LOGD("\n*\n*\n* initEglTraceLevel cmdline='%s' \n*\n*", cmdline);
+ if (!strcmp(value, cmdline))
+ gEGLDebugLevel = 1;
+ }
+ fclose(file);
+ }
+
+ extern void StartDebugServer();
+ if (gEGLDebugLevel > 0)
+ StartDebugServer();
}
static void setGLHooksThreadSpecific(gl_hooks_t const *value) {
if (gEGLTraceLevel > 0) {
setGlTraceThreadSpecific(value);
setGlThreadSpecific(&gHooksTrace);
+ } else if (gEGLDebugLevel > 0) {
+ setGlTraceThreadSpecific(value);
+ setGlThreadSpecific(&gHooksDebug);
+ LOGD("\n* setGLHooksThreadSpecific gHooksDebug");
} else {
setGlThreadSpecific(value);
}
@@ -1597,7 +1622,7 @@ __eglMustCastToProperFunctionPointerType eglGetProcAddress(const char *procname)
cnx->hooks[GLESv1_INDEX]->ext.extensions[slot] =
cnx->hooks[GLESv2_INDEX]->ext.extensions[slot] =
#if EGL_TRACE
- gHooksTrace.ext.extensions[slot] =
+ gHooksDebug.ext.extensions[slot] = gHooksTrace.ext.extensions[slot] =
#endif
cnx->egl.eglGetProcAddress(procname);
}
diff --git a/opengl/libs/EGL/trace.cpp b/opengl/libs/EGL/trace.cpp
index d3e96ba..3a1ae21 100644
--- a/opengl/libs/EGL/trace.cpp
+++ b/opengl/libs/EGL/trace.cpp
@@ -325,7 +325,7 @@ static void Tracing_ ## _api _args { \
#define TRACE_GL(_type, _api, _args, _argList, ...) \
static _type Tracing_ ## _api _args { \
- TraceGL(#_api, __VA_ARGS__); \
+ TraceGL(#_api, __VA_ARGS__); \
gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl; \
return _c->_api _argList; \
}
@@ -333,11 +333,11 @@ static _type Tracing_ ## _api _args { \
extern "C" {
#include "../trace.in"
}
+
#undef TRACE_GL_VOID
#undef TRACE_GL
#define GL_ENTRY(_r, _api, ...) Tracing_ ## _api,
-
EGLAPI gl_hooks_t gHooksTrace = {
{
#include "entries.in"
@@ -348,6 +348,48 @@ EGLAPI gl_hooks_t gHooksTrace = {
};
#undef GL_ENTRY
+
+#undef TRACE_GL_VOID
+#undef TRACE_GL
+
+// define the ES 1.0 Debug_gl* functions as Tracing_gl functions
+#define TRACE_GL_VOID(_api, _args, _argList, ...) \
+static void Debug_ ## _api _args { \
+ TraceGL(#_api, __VA_ARGS__); \
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl; \
+ _c->_api _argList; \
+}
+
+#define TRACE_GL(_type, _api, _args, _argList, ...) \
+static _type Debug_ ## _api _args { \
+ TraceGL(#_api, __VA_ARGS__); \
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl; \
+ return _c->_api _argList; \
+}
+
+extern "C" {
+#include "../debug.in"
+}
+
+#undef TRACE_GL_VOID
+#undef TRACE_GL
+
+// declare all Debug_gl* functions
+#define GL_ENTRY(_r, _api, ...) _r Debug_##_api ( __VA_ARGS__ );
+#include "../GLES2_dbg/include/glesv2_dbg.h"
+#undef GL_ENTRY
+
+#define GL_ENTRY(_r, _api, ...) Debug_ ## _api,
+EGLAPI gl_hooks_t gHooksDebug = {
+ {
+ #include "entries.in"
+ },
+ {
+ {0}
+ }
+};
+#undef GL_ENTRY
+
// ----------------------------------------------------------------------------
}; // namespace android
// ----------------------------------------------------------------------------
diff --git a/opengl/libs/GLES2_dbg/Android.mk b/opengl/libs/GLES2_dbg/Android.mk
new file mode 100644
index 0000000..c919886
--- /dev/null
+++ b/opengl/libs/GLES2_dbg/Android.mk
@@ -0,0 +1,46 @@
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := \
+ src/DebuggerMessage.pb.cpp \
+ src/api.cpp \
+ src/server.cpp \
+ src/shader.cpp \
+ src/texture.cpp
+
+LOCAL_C_INCLUDES := \
+ $(LOCAL_PATH) \
+ $(LOCAL_PATH)/../ \
+ external/stlport/stlport \
+ external/protobuf/src \
+ bionic
+
+LOCAL_SHARED_LIBRARIES := libstlport libcutils libutils
+LOCAL_LDLIBS := -lpthread
+
+#LOCAL_CFLAGS += -O0 -g -DDEBUG -UNDEBUG
+LOCAL_CFLAGS := -DGOOGLE_PROTOBUF_NO_RTTI
+
+ifeq ($(TARGET_ARCH),arm)
+ LOCAL_CFLAGS += -fstrict-aliasing
+endif
+
+ifeq ($(ARCH_ARM_HAVE_TLS_REGISTER),true)
+ LOCAL_CFLAGS += -DHAVE_ARM_TLS_REGISTER
+endif
+
+ifneq ($(TARGET_SIMULATOR),true)
+ # we need to access the private Bionic header <bionic_tls.h>
+ # on ARM platforms, we need to mirror the ARCH_ARM_HAVE_TLS_REGISTER
+ # behavior from the bionic Android.mk file
+ ifeq ($(TARGET_ARCH)-$(ARCH_ARM_HAVE_TLS_REGISTER),arm-true)
+ LOCAL_CFLAGS += -DHAVE_ARM_TLS_REGISTER
+ endif
+ LOCAL_C_INCLUDES += bionic/libc/private
+endif
+
+LOCAL_MODULE:= libGLESv2_dbg
+LOCAL_MODULE_TAGS := optional
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/opengl/libs/GLES2_dbg/generate_DebuggerMessage_proto.py b/opengl/libs/GLES2_dbg/generate_DebuggerMessage_proto.py
new file mode 100755
index 0000000..a803fae
--- /dev/null
+++ b/opengl/libs/GLES2_dbg/generate_DebuggerMessage_proto.py
@@ -0,0 +1,73 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+import os
+
+def generate_DebuggerMessage(output,lines,i):
+ for line in lines:
+ if line.find("API_ENTRY(") >= 0:
+ line = line[line.find("(") + 1: line.find(")")] #extract GL function name
+ output.write("\t\t%s = %d;\n" % (line, i))
+ i += 1
+ return i
+
+
+if __name__ == "__main__":
+ output = open("DebuggerMessage.proto",'w')
+ output.write( """// do not edit; auto generated by generate_DebuggerMessage_proto.py
+package GLESv2Debugger;
+
+option optimize_for = LITE_RUNTIME;
+
+message Message
+{
+\trequired int32 context_id = 1; // GL context id
+\tenum Function
+\t{
+""")
+
+ i = 0;
+
+ lines = open("gl2_api.in").readlines()
+ i = generate_DebuggerMessage(output, lines, i)
+ output.write("\t\t// end of GL functions\n")
+
+ #lines = open("gl2ext_api.in").readlines()
+ #i = generate_DebuggerMessage(output, lines, i)
+ #output.write("\t\t// end of GL EXT functions\n")
+
+ output.write("\t\tACK = %d;\n" % (i))
+ i += 1
+
+ output.write("\t\tNEG = %d;\n" % (i))
+ i += 1
+
+ output.write("\t\tCONTINUE = %d;\n" % (i))
+ i += 1
+
+ output.write("\t\tSKIP = %d;\n" % (i))
+ i += 1
+
+ output.write("""\t}
+\trequired Function function = 2 [default = NEG]; // type/function of message
+\trequired bool has_next_message = 3;
+\trequired bool expect_response = 4;
+\toptional int32 ret = 5; // return value from previous GL call
+\toptional int32 arg0 = 6; // args to GL call
+\toptional int32 arg1 = 7;
+\toptional int32 arg2 = 8;
+\toptional int32 arg3 = 9;
+\toptional int32 arg4 = 16;
+\toptional int32 arg5 = 17;
+\toptional int32 arg6 = 18;
+\toptional int32 arg7 = 19;
+\toptional int32 arg8 = 20;
+\toptional bytes data = 10; // variable length data used for GL call
+\toptional float time = 11; // timing of previous GL call (seconds)
+}
+""")
+
+ output.close()
+
+ os.system("aprotoc --cpp_out=src --java_out=client/src DebuggerMessage.proto")
+ os.system(' mv -f "src/DebuggerMessage.pb.cc" "src/DebuggerMessage.pb.cpp" ')
diff --git a/opengl/libs/GLES2_dbg/generate_GLEnum_java.py b/opengl/libs/GLES2_dbg/generate_GLEnum_java.py
new file mode 100755
index 0000000..f927422
--- /dev/null
+++ b/opengl/libs/GLES2_dbg/generate_GLEnum_java.py
@@ -0,0 +1,43 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+import os
+
+if __name__ == "__main__":
+ externs = []
+ lines = open("enums.in").readlines()
+ i = 0
+ print "// auto generated by generate_GLFunction_java.py"
+ print """package GLESv2Debugger;
+
+public enum GLEnum
+{"""
+
+ index = 0
+ for line in lines:
+ value = line[line.find("(") + 1: line.find(",")]
+ name = line[line.find(",") + 1: line.find(")")]
+ print "\t%s(%s)," % (name, value)
+
+ print """\t;
+
+\tpublic final int value;
+\tGLEnum(final int value)
+\t{
+\t\tthis.value = value;
+\t}
+
+\tprivate static final java.util.HashMap<Integer, GLEnum> reverseMap = new java.util.HashMap<Integer, GLEnum>();
+\tstatic
+\t{
+\t\tfor (GLEnum e : GLEnum.values())
+\t\t\treverseMap.put(e.value, e);
+\t}
+
+\tpublic static GLEnum valueOf(final int value)
+\t{
+\t\treturn reverseMap.get(value);
+\t}
+}"""
+
+
diff --git a/opengl/libs/GLES2_dbg/generate_GLFunction_java.py b/opengl/libs/GLES2_dbg/generate_GLFunction_java.py
new file mode 100755
index 0000000..07bbf14
--- /dev/null
+++ b/opengl/libs/GLES2_dbg/generate_GLFunction_java.py
@@ -0,0 +1,34 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+import os
+
+if __name__ == "__main__":
+ externs = []
+ lines = open("gl2_api.in").readlines()
+ i = 0
+ print "// auto generated by generate_GLFunction_java.py"
+ print """package GLESv2Debugger;
+
+public enum GLFunction
+{"""
+
+ index = 0
+ for line in lines:
+ if line.find("API_ENTRY(") >= 0: # a function prototype
+ returnType = line[0: line.find(" API_ENTRY(")]
+ functionName = line[line.find("(") + 1: line.find(")")] #extract GL function name
+ print "\t%s(%d, DebuggerMessage.Message.Function.%s)," % (functionName, index, functionName)
+ index += 1
+ print """\t;
+
+\tpublic final int index;
+\tpublic final DebuggerMessage.Message.Function function;
+\tGLFunction(final int index, final DebuggerMessage.Message.Function function)
+\t{
+\t\tthis.index = index;
+\t\tthis.function = function;
+\t}
+}"""
+
+
diff --git a/opengl/libs/GLES2_dbg/generate_MessageFormatter_java.py b/opengl/libs/GLES2_dbg/generate_MessageFormatter_java.py
new file mode 100755
index 0000000..81272e6
--- /dev/null
+++ b/opengl/libs/GLES2_dbg/generate_MessageFormatter_java.py
@@ -0,0 +1,239 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+import os
+import sys
+
+def RemoveAnnotation(line):
+ if line.find(":") >= 0:
+ annotation = line[line.find(":"): line.find(" ", line.find(":"))]
+ return line.replace(annotation, "*")
+ else:
+ return line
+
+if __name__ == "__main__":
+ externs = []
+ lines = open("gl2_api_annotated.in").readlines()
+ i = 0
+ print """// auto generated by generate_MessageFormatter_java.py"
+package GLESv2Debugger;
+
+public class MessageFormatter {
+
+\tstatic String FormatFloats(int count, byte [] data)
+\t{
+\t\tString ret = "[";
+\t\tfor (int i = 0; i < count; i++)
+\t\t{
+\t\t\tint bits = (data[i* 4 + 0] & 0xff) << 24;
+\t\t\tbits |= (data[i* 4 + 1] & 0xff) << 16;
+\t\t\tbits |= (data[i* 4 + 2] & 0xff) << 8;
+\t\t\tbits |= (data[i* 4 + 3] & 0xff) << 0;
+\t\t\tret += Float.intBitsToFloat(bits);
+\t\t\tif (i < count - 1)
+\t\t\t\tret += ", ";
+\t\t}
+\t\treturn ret + "]";
+\t}
+\t
+\tstatic String FormatInts(int count, byte [] data)
+\t{
+\t\tString ret = "[";
+\t\tfor (int i = 0; i < count; i++)
+\t\t{
+\t\t\tint bits = (data[i* 4 + 3] & 0xff) << 24;
+\t\t\tbits |= (data[i* 4 + 2] & 0xff) << 16;
+\t\t\tbits |= (data[i* 4 + 1] & 0xff) << 8;
+\t\t\tbits |= (data[i* 4 + 0] & 0xff) << 0;
+\t\t\tret += bits;
+\t\t\tif (i < count - 1)
+\t\t\t\tret += ", ";
+\t\t}
+\t\treturn ret + "]";
+\t}
+\t
+\tstatic String FormatUints(int count, byte [] data)
+\t{
+\t\tString ret = "[";
+\t\tfor (int i = 0; i < count; i++)
+\t\t{
+\t\t\tlong bits = (data[i* 4 + 3] & 0xff) << 24;
+\t\t\tbits |= (data[i* 4 + 2] & 0xff) << 16;
+\t\t\tbits |= (data[i* 4 + 1] & 0xff) << 8;
+\t\t\tbits |= (data[i* 4 + 0] & 0xff) << 0;
+\t\t\tret += bits;
+\t\t\tif (i < count - 1)
+\t\t\t\tret += ", ";
+\t\t}
+\t\treturn ret + "]";
+\t}
+\t
+\tstatic String FormatMatrix(int columns, int count, byte [] data)
+\t{
+\t\tString ret = "[";
+\t\tfor (int i = 0; i < count; i++)
+\t\t{
+\t\t\tint bits = (data[i* 4 + 0] & 0xff) << 24;
+\t\t\tbits |= (data[i* 4 + 1] & 0xff) << 16;
+\t\t\tbits |= (data[i* 4 + 2] & 0xff) << 8;
+\t\t\tbits |= (data[i* 4 + 3] & 0xff) << 0;
+\t\t\tret += Float.intBitsToFloat(bits);
+\t\t\tif (i % columns == columns - 1)
+\t\t\t\tret += '\\n';
+\t\t\telse if (i < count - 1)
+\t\t\t\tret += ", ";
+\t\t}
+\t\treturn ret + "]";
+\t}
+
+\tpublic static String Format(final DebuggerMessage.Message msg)
+\t{
+\t\tString str;
+\t\tswitch (msg.getFunction())
+\t\t{"""
+
+ for line in lines:
+ if line.find("API_ENTRY(") >= 0: # a function prototype
+ returnType = line[0: line.find(" API_ENTRY(")].replace("const ", "")
+ functionName = line[line.find("(") + 1: line.find(")")] #extract GL function name
+ parameterList = line[line.find(")(") + 2: line.find(") {")]
+ # print "\t\tcase %s:" % (functionName)
+ # print "\t\t\t//return MessageFormatterCustom.Format(msg);"
+ # print "\t\t\tstr = msg.toString(); break;"
+ # #extern = "%s Format_%s(%s);" % (returnType, functionName, parameterList)
+ # extern = functionName
+ # externs.append(extern)
+ # continue
+
+ parameters = parameterList.split(',')
+ paramIndex = 0
+
+ formatString = "%s "
+ formatArgs = ""
+ if returnType != "void":
+ if returnType == "GLenum":
+ formatArgs += "GLEnum.valueOf(msg.getRet())"
+ elif returnType.find("*") >= 0:
+ formatArgs += '"0x" + Integer.toHexString(msg.getRet())'
+ else:
+ formatArgs += "msg.getRet()"
+ else:
+ formatArgs += '"void"'
+
+ #formatString += "%s(" % (functionName)
+ formatString += "("
+
+ if parameterList == "void":
+ parameters = []
+
+ paramTypes = []
+ paramNames = []
+ paramAnnotations = []
+
+ for parameter in parameters:
+ parameter = parameter.replace("const","")
+ parameter = parameter.strip()
+ paramType = parameter.split(' ')[0]
+ paramName = parameter.split(' ')[1]
+ annotation = ""
+
+ formatString += paramName + "=%s"
+
+ if parameter.find(":") >= 0:
+ assert paramIndex == len(parameters) - 1 # only last parameter should be annotated
+ inout = paramType.split(":")[2]
+ annotation = paramType.split(":")[1]
+ paramType = paramType.split(":")[0]
+ assert paramType.find("void") < 0
+ count = 1
+ countArg = ""
+ if annotation.find("*") >= 0:
+ count = int(annotation.split("*")[0])
+ countArg = annotation.split("*")[1]
+ assert countArg in paramNames
+ elif annotation in paramNames:
+ count = 1
+ countArg = annotation
+ elif annotation == "GLstring":
+ annotation = annotation
+ else:
+ count = int(annotation)
+ dataFormatter = ""
+ if paramType == "GLfloat":
+ dataFormatter = "FormatFloats"
+ elif paramType == "GLint":
+ dataFormatter = "FormatInts"
+ elif paramType == "GLuint":
+ dataFormatter = "FormatUints"
+ elif annotation == "GLstring":
+ assert paramType == "GLchar"
+ else:
+ assert 0
+ if functionName.find("Matrix") >= 0:
+ columns = int(functionName[functionName.find("fv") - 1: functionName.find("fv")])
+ assert columns * columns == count
+ assert countArg != ""
+ assert paramType == "GLfloat"
+ formatArgs += ", FormatMatrix(%d, %d * msg.getArg%d(), msg.getData().toByteArray())" % (columns, count, paramNames.index(countArg))
+ elif annotation == "GLstring":
+ formatArgs += ", msg.getData().toStringUtf8()"
+ elif countArg == "":
+ formatArgs += ", %s(%d, msg.getData().toByteArray())" % (dataFormatter, count)
+ else:
+ formatArgs += ", %s(%d * msg.getArg%d(), msg.getData().toByteArray())" % (dataFormatter, count, paramNames.index(countArg))
+ else:
+ #formatArgs += ', "%s"' % (paramName)
+ if paramType == "GLfloat" or paramType == "GLclampf":
+ formatArgs += ", Float.intBitsToFloat(msg.getArg%d())" % (paramIndex)
+ elif paramType == "GLenum":
+ formatArgs += ", GLEnum.valueOf(msg.getArg%d())" % (paramIndex)
+ elif paramType.find("*") >= 0:
+ formatArgs += ', "0x" + Integer.toHexString(msg.getArg%d())' % (paramIndex)
+ else:
+ formatArgs += ", msg.getArg%d()" % (paramIndex)
+ if paramIndex < len(parameters) - 1:
+ formatString += ", "
+ paramTypes.append(paramType)
+ paramNames.append(paramName)
+ paramAnnotations.append(annotation)
+ paramIndex += 1
+
+
+ formatString += ")"
+
+ print "\t\tcase %s:" % (functionName)
+ if line.find("*") >= 0 and (line.find("*") < line.find(":") or line.find("*") > line.rfind(":")):
+ sys.stderr.write(line)
+ print "\t\t\t// FIXME: this function uses pointers, debugger may send data in msg.data"
+ print '\t\t\tstr = String.format("%s", %s); break;' % (formatString, formatArgs)
+
+
+ print """\t\tdefault:
+\t\t\tstr = msg.toString();
+\t\t}
+\t\treturn str;
+\t}
+}"""
+
+ print """/*
+package GLESv2Debugger;
+
+public class MessageFormatterCustom {
+
+\tpublic static String Format(final DebuggerMessage.Message msg) {
+\t\tString str;
+\t\tswitch (msg.getFunction()) {"""
+
+ for extern in externs:
+ print "\t\tcase %s" % (extern)
+ print "\t\t\t// TODO:"
+
+print """\t\tdefault:
+\t\t\tstr = msg.toString();
+\t\t}
+\t\treturn str;
+\t}
+}
+*/"""
+
+
diff --git a/opengl/libs/GLES2_dbg/generate_api_cpp.py b/opengl/libs/GLES2_dbg/generate_api_cpp.py
new file mode 100755
index 0000000..7c0b39e
--- /dev/null
+++ b/opengl/libs/GLES2_dbg/generate_api_cpp.py
@@ -0,0 +1,174 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+import os
+import sys
+
+def RemoveAnnotation(line):
+ if line.find(":") >= 0:
+ annotation = line[line.find(":"): line.find(" ", line.find(":"))]
+ return line.replace(annotation, "*")
+ else:
+ return line
+
+def generate_api(lines):
+ externs = []
+ i = 0
+ skipFunctions = ["glTexImage2D", "glTexSubImage2D", "glShaderSource"]
+ for line in lines:
+ if line.find("API_ENTRY(") >= 0: # a function prototype
+ returnType = line[0: line.find(" API_ENTRY(")]
+ functionName = line[line.find("(") + 1: line.find(")")] #extract GL function name
+ parameterList = line[line.find(")(") + 2: line.find(") {")]
+
+ #if line.find("*") >= 0:
+ # extern = "%s Debug_%s(%s);" % (returnType, functionName, parameterList)
+ # externs.append(extern)
+ # continue
+
+ if functionName in skipFunctions:
+ sys.stderr.write("!\n! skipping function '%s'\n!\n" % (functionName))
+ continue
+
+ parameters = parameterList.split(',')
+ paramIndex = 0
+ if line.find("*") >= 0 and (line.find("*") < line.find(":") or line.find("*") > line.rfind(":")):
+ extern = "%s Debug_%s(%s);" % (returnType, functionName, RemoveAnnotation(parameterList))
+ sys.stderr.write("%s should be hand written\n" % (extern))
+ print "// FIXME: this function has pointers, it should be hand written"
+ externs.append(extern)
+ print "%s Debug_%s(%s)\n{" % (returnType, functionName, RemoveAnnotation(parameterList))
+
+ if returnType != "void":
+ print "\t%s ret = 0;" % (returnType)
+ print """\tgl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+\tGLESv2Debugger::Message msg, cmd;
+\tmsg.set_context_id(0);
+\tmsg.set_has_next_message(true);
+\tconst bool expectResponse = false;
+\tmsg.set_expect_response(expectResponse);"""
+ print "\tmsg.set_function(GLESv2Debugger::Message_Function_%s);" % (functionName)
+
+ if parameterList == "void":
+ parameters = []
+
+ arguments = ""
+
+ paramTypes = []
+ paramNames = []
+ paramAnnotations = []
+ inout = ""
+ getData = ""
+
+ for parameter in parameters:
+ parameter = parameter.replace("const", "")
+ parameter = parameter.strip()
+ paramType = parameter.split(' ')[0]
+ paramName = parameter.split(' ')[1]
+ annotation = ""
+ arguments += paramName
+ if parameter.find(":") >= 0:
+ assert paramIndex == len(parameters) - 1 # only last parameter should be annotated
+ sys.stderr.write("%s is annotated: %s \n" % (functionName, paramType))
+ inout = paramType.split(":")[2]
+ annotation = paramType.split(":")[1]
+ paramType = paramType.split(":")[0]
+ assert paramType.find("void") < 0
+ count = 1
+ countArg = ""
+ if annotation.find("*") >= 0:
+ count = int(annotation.split("*")[0])
+ countArg = annotation.split("*")[1]
+ assert countArg in paramNames
+ elif annotation in paramNames:
+ count = 1
+ countArg = annotation
+ elif annotation == "GLstring":
+ annotation = "strlen(%s)" % (paramName)
+ else:
+ count = int(annotation)
+
+ print "\tmsg.set_arg%d(ToInt(%s));" % (paramIndex, paramName)
+ print "\tstd::string data;"
+ getData += "\t\t\tdata.reserve(%s * sizeof(%s));\n" % (annotation, paramType)
+ getData += "\t\t\tfor (unsigned i = 0; i < (%s); i++)\n" % (annotation)
+ getData += "\t\t\t\tdata.append((const char *)(%s + i), sizeof(*%s));\n" % (paramName, paramName)
+ getData += "\t\t\tmsg.set_data(data);"
+ else:
+ if paramIndex < len(parameters) - 1:
+ arguments += ', '
+ if paramType == "GLfloat" or paramType == "GLclampf" or paramType.find("*") >= 0:
+ print "\tmsg.set_arg%d(ToInt(%s));" % (paramIndex, paramName)
+ else:
+ print "\tmsg.set_arg%d(%s);" % (paramIndex, paramName)
+ paramTypes.append(paramType)
+ paramNames.append(paramName)
+ paramAnnotations.append(annotation)
+ paramIndex += 1
+ if line.find("*") >= 0 or line.find(":") >= 0:
+ print "\t// FIXME: check for pointer usage"
+ if inout in ["in", "inout"]:
+ print getData
+ print """\tSend(msg, cmd);
+\tif (!expectResponse)
+\t\tcmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+\twhile (true) {
+\t\tmsg.Clear();
+\t\tclock_t c0 = clock();
+\t\tswitch (cmd.function()) {
+\t\tcase GLESv2Debugger::Message_Function_CONTINUE:"""
+ if returnType == "void":
+ print "\t\t\t_c->%s(%s);" % (functionName, arguments)
+
+ else:
+ print "\t\t\tret = _c->%s(%s);" % (functionName, arguments)
+ if returnType == "GLboolean":
+ print "\t\t\tmsg.set_ret(ret);"
+ else:
+ print "\t\t\tmsg.set_ret(ToInt(ret));"
+ print "\t\t\tmsg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);"
+ print "\t\t\tmsg.set_context_id(0);"
+ print "\t\t\tmsg.set_function(GLESv2Debugger::Message_Function_%s);" % (functionName)
+ print """\t\t\tmsg.set_has_next_message(false);
+\t\t\tmsg.set_expect_response(expectResponse);"""
+ if inout in ["out", "inout"]:
+ print getData
+ print """\t\t\tSend(msg, cmd);
+\t\t\tif (!expectResponse)
+\t\t\t\tcmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+\t\t\tbreak;
+\t\tcase GLESv2Debugger::Message_Function_SKIP:"""
+ if returnType == "void":
+ print "\t\t\treturn;"
+ else:
+ print "\t\t\tif (cmd.has_ret())"
+ if returnType == "GLboolean":
+ print "\t\t\t\tret = cmd.ret();"
+ else:
+ print "\t\t\t\tret = FromInt<%s>(cmd.ret());" % (returnType)
+ print "\t\t\treturn ret;"
+ print """\t\tdefault:
+\t\t\tASSERT(0); //GenerateCall(msg, cmd);
+\t\t\tbreak;
+\t\t}
+\t}
+}
+"""
+ #break
+
+ print "// FIXME: the following functions should be written by hand"
+ for extern in externs:
+ print extern
+
+if __name__ == "__main__":
+ print "// auto generated by generate_api_cpp.py\n"
+ print '''#include "src/header.h"\n'''
+ print "template<typename T> static int ToInt(const T & t) { STATIC_ASSERT(sizeof(T) == sizeof(int), bitcast); return (int &)t; }\n"
+ print "template<typename T> static T FromInt(const int & t) { STATIC_ASSERT(sizeof(T) == sizeof(int), bitcast); return (T &)t; }\n"
+
+ lines = open("gl2_api_annotated.in").readlines()
+ generate_api(lines)
+ #lines = open("gl2ext_api.in").readlines()
+ #generate_api(lines)
+
+
diff --git a/opengl/libs/GLES2_dbg/generate_debug_in.py b/opengl/libs/GLES2_dbg/generate_debug_in.py
new file mode 100755
index 0000000..830bcb9
--- /dev/null
+++ b/opengl/libs/GLES2_dbg/generate_debug_in.py
@@ -0,0 +1,64 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+import os
+import sys
+
+def append_functions(functions, lines):
+ i = 0
+ for line in lines:
+ if line.find("API_ENTRY(") >= 0: # a function prototype
+ returnType = line[0: line.find(" API_ENTRY(")]
+ functionName = line[line.find("(") + 1: line.find(")")] #extract GL function name
+ parameterList = line[line.find(")(") + 2: line.find(") {")]
+
+ functions.append(functionName)
+ #print functionName
+ continue
+
+ parameters = parameterList.split(',')
+ paramIndex = 0
+ if line.find("*") >= 0:
+ print "// FIXME: this function has pointers, it should be hand written"
+ externs.append("%s Tracing_%s(%s);" % (returnType, functionName, parameterList))
+ print "%s Tracing_%s(%s)\n{" % (returnType, functionName, parameterList)
+
+ if parameterList == "void":
+ parameters = []
+
+ arguments = ""
+
+ for parameter in parameters:
+ parameter = parameter.replace("const", "")
+ parameter = parameter.strip()
+ paramType = parameter.split(' ')[0]
+ paramName = parameter.split(' ')[1]
+
+ paramIndex += 1
+
+ return functions
+
+
+
+if __name__ == "__main__":
+ definedFunctions = []
+ lines = open("gl2_api.in").readlines()
+ definedFunctions = append_functions(definedFunctions, lines)
+
+ output = open("debug.in", "w")
+ lines = open("trace.in").readlines()
+ output.write("// the following functions are not defined in GLESv2_dbg\n")
+ for line in lines:
+ functionName = ""
+ if line.find("TRACE_GL(") >= 0: # a function prototype
+ functionName = line.split(',')[1].strip()
+ elif line.find("TRACE_GL_VOID(") >= 0: # a function prototype
+ functionName = line[line.find("(") + 1: line.find(",")] #extract GL function name
+ else:
+ continue
+ if functionName in definedFunctions:
+ #print functionName
+ continue
+ else:
+ output.write(line)
+
diff --git a/opengl/libs/GLES2_dbg/gl2_api_annotated.in b/opengl/libs/GLES2_dbg/gl2_api_annotated.in
new file mode 100644
index 0000000..2296570
--- /dev/null
+++ b/opengl/libs/GLES2_dbg/gl2_api_annotated.in
@@ -0,0 +1,426 @@
+void API_ENTRY(glActiveTexture)(GLenum texture) {
+ CALL_GL_API(glActiveTexture, texture);
+}
+void API_ENTRY(glAttachShader)(GLuint program, GLuint shader) {
+ CALL_GL_API(glAttachShader, program, shader);
+}
+void API_ENTRY(glBindAttribLocation)(GLuint program, GLuint index, const GLchar:GLstring:in name) {
+ CALL_GL_API(glBindAttribLocation, program, index, name);
+}
+void API_ENTRY(glBindBuffer)(GLenum target, GLuint buffer) {
+ CALL_GL_API(glBindBuffer, target, buffer);
+}
+void API_ENTRY(glBindFramebuffer)(GLenum target, GLuint framebuffer) {
+ CALL_GL_API(glBindFramebuffer, target, framebuffer);
+}
+void API_ENTRY(glBindRenderbuffer)(GLenum target, GLuint renderbuffer) {
+ CALL_GL_API(glBindRenderbuffer, target, renderbuffer);
+}
+void API_ENTRY(glBindTexture)(GLenum target, GLuint texture) {
+ CALL_GL_API(glBindTexture, target, texture);
+}
+void API_ENTRY(glBlendColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) {
+ CALL_GL_API(glBlendColor, red, green, blue, alpha);
+}
+void API_ENTRY(glBlendEquation)( GLenum mode ) {
+ CALL_GL_API(glBlendEquation, mode);
+}
+void API_ENTRY(glBlendEquationSeparate)(GLenum modeRGB, GLenum modeAlpha) {
+ CALL_GL_API(glBlendEquationSeparate, modeRGB, modeAlpha);
+}
+void API_ENTRY(glBlendFunc)(GLenum sfactor, GLenum dfactor) {
+ CALL_GL_API(glBlendFunc, sfactor, dfactor);
+}
+void API_ENTRY(glBlendFuncSeparate)(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) {
+ CALL_GL_API(glBlendFuncSeparate, srcRGB, dstRGB, srcAlpha, dstAlpha);
+}
+void API_ENTRY(glBufferData)(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage) {
+ CALL_GL_API(glBufferData, target, size, data, usage);
+}
+void API_ENTRY(glBufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data) {
+ CALL_GL_API(glBufferSubData, target, offset, size, data);
+}
+GLenum API_ENTRY(glCheckFramebufferStatus)(GLenum target) {
+ CALL_GL_API_RETURN(glCheckFramebufferStatus, target);
+}
+void API_ENTRY(glClear)(GLbitfield mask) {
+ CALL_GL_API(glClear, mask);
+}
+void API_ENTRY(glClearColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) {
+ CALL_GL_API(glClearColor, red, green, blue, alpha);
+}
+void API_ENTRY(glClearDepthf)(GLclampf depth) {
+ CALL_GL_API(glClearDepthf, depth);
+}
+void API_ENTRY(glClearStencil)(GLint s) {
+ CALL_GL_API(glClearStencil, s);
+}
+void API_ENTRY(glColorMask)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) {
+ CALL_GL_API(glColorMask, red, green, blue, alpha);
+}
+void API_ENTRY(glCompileShader)(GLuint shader) {
+ CALL_GL_API(glCompileShader, shader);
+}
+void API_ENTRY(glCompressedTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data) {
+ CALL_GL_API(glCompressedTexImage2D, target, level, internalformat, width, height, border, imageSize, data);
+}
+void API_ENTRY(glCompressedTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data) {
+ CALL_GL_API(glCompressedTexSubImage2D, target, level, xoffset, yoffset, width, height, format, imageSize, data);
+}
+void API_ENTRY(glCopyTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) {
+ CALL_GL_API(glCopyTexImage2D, target, level, internalformat, x, y, width, height, border);
+}
+void API_ENTRY(glCopyTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) {
+ CALL_GL_API(glCopyTexSubImage2D, target, level, xoffset, yoffset, x, y, width, height);
+}
+GLuint API_ENTRY(glCreateProgram)(void) {
+ CALL_GL_API_RETURN(glCreateProgram);
+}
+GLuint API_ENTRY(glCreateShader)(GLenum type) {
+ CALL_GL_API_RETURN(glCreateShader, type);
+}
+void API_ENTRY(glCullFace)(GLenum mode) {
+ CALL_GL_API(glCullFace, mode);
+}
+void API_ENTRY(glDeleteBuffers)(GLsizei n, const GLuint:n:in buffers) {
+ CALL_GL_API(glDeleteBuffers, n, buffers);
+}
+void API_ENTRY(glDeleteFramebuffers)(GLsizei n, const GLuint:n:in framebuffers) {
+ CALL_GL_API(glDeleteFramebuffers, n, framebuffers);
+}
+void API_ENTRY(glDeleteProgram)(GLuint program) {
+ CALL_GL_API(glDeleteProgram, program);
+}
+void API_ENTRY(glDeleteRenderbuffers)(GLsizei n, const GLuint:n:in renderbuffers) {
+ CALL_GL_API(glDeleteRenderbuffers, n, renderbuffers);
+}
+void API_ENTRY(glDeleteShader)(GLuint shader) {
+ CALL_GL_API(glDeleteShader, shader);
+}
+void API_ENTRY(glDeleteTextures)(GLsizei n, const GLuint:n:in textures) {
+ CALL_GL_API(glDeleteTextures, n, textures);
+}
+void API_ENTRY(glDepthFunc)(GLenum func) {
+ CALL_GL_API(glDepthFunc, func);
+}
+void API_ENTRY(glDepthMask)(GLboolean flag) {
+ CALL_GL_API(glDepthMask, flag);
+}
+void API_ENTRY(glDepthRangef)(GLclampf zNear, GLclampf zFar) {
+ CALL_GL_API(glDepthRangef, zNear, zFar);
+}
+void API_ENTRY(glDetachShader)(GLuint program, GLuint shader) {
+ CALL_GL_API(glDetachShader, program, shader);
+}
+void API_ENTRY(glDisable)(GLenum cap) {
+ CALL_GL_API(glDisable, cap);
+}
+void API_ENTRY(glDisableVertexAttribArray)(GLuint index) {
+ CALL_GL_API(glDisableVertexAttribArray, index);
+}
+void API_ENTRY(glDrawArrays)(GLenum mode, GLint first, GLsizei count) {
+ CALL_GL_API(glDrawArrays, mode, first, count);
+}
+void API_ENTRY(glDrawElements)(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices) {
+ CALL_GL_API(glDrawElements, mode, count, type, indices);
+}
+void API_ENTRY(glEnable)(GLenum cap) {
+ CALL_GL_API(glEnable, cap);
+}
+void API_ENTRY(glEnableVertexAttribArray)(GLuint index) {
+ CALL_GL_API(glEnableVertexAttribArray, index);
+}
+void API_ENTRY(glFinish)(void) {
+ CALL_GL_API(glFinish);
+}
+void API_ENTRY(glFlush)(void) {
+ CALL_GL_API(glFlush);
+}
+void API_ENTRY(glFramebufferRenderbuffer)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) {
+ CALL_GL_API(glFramebufferRenderbuffer, target, attachment, renderbuffertarget, renderbuffer);
+}
+void API_ENTRY(glFramebufferTexture2D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) {
+ CALL_GL_API(glFramebufferTexture2D, target, attachment, textarget, texture, level);
+}
+void API_ENTRY(glFrontFace)(GLenum mode) {
+ CALL_GL_API(glFrontFace, mode);
+}
+void API_ENTRY(glGenBuffers)(GLsizei n, GLuint:n:out buffers) {
+ CALL_GL_API(glGenBuffers, n, buffers);
+}
+void API_ENTRY(glGenerateMipmap)(GLenum target) {
+ CALL_GL_API(glGenerateMipmap, target);
+}
+void API_ENTRY(glGenFramebuffers)(GLsizei n, GLuint:n:out framebuffers) {
+ CALL_GL_API(glGenFramebuffers, n, framebuffers);
+}
+void API_ENTRY(glGenRenderbuffers)(GLsizei n, GLuint:n:out renderbuffers) {
+ CALL_GL_API(glGenRenderbuffers, n, renderbuffers);
+}
+void API_ENTRY(glGenTextures)(GLsizei n, GLuint:n:out textures) {
+ CALL_GL_API(glGenTextures, n, textures);
+}
+void API_ENTRY(glGetActiveAttrib)(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar:GLstring:in name) {
+ CALL_GL_API(glGetActiveAttrib, program, index, bufsize, length, size, type, name);
+}
+void API_ENTRY(glGetActiveUniform)(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar:GLstring:in name) {
+ CALL_GL_API(glGetActiveUniform, program, index, bufsize, length, size, type, name);
+}
+void API_ENTRY(glGetAttachedShaders)(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders) {
+ CALL_GL_API(glGetAttachedShaders, program, maxcount, count, shaders);
+}
+int API_ENTRY(glGetAttribLocation)(GLuint program, const GLchar:GLstring:in name) {
+ CALL_GL_API_RETURN(glGetAttribLocation, program, name);
+}
+void API_ENTRY(glGetBooleanv)(GLenum pname, GLboolean* params) {
+ CALL_GL_API(glGetBooleanv, pname, params);
+}
+void API_ENTRY(glGetBufferParameteriv)(GLenum target, GLenum pname, GLint* params) {
+ CALL_GL_API(glGetBufferParameteriv, target, pname, params);
+}
+GLenum API_ENTRY(glGetError)(void) {
+ CALL_GL_API_RETURN(glGetError);
+}
+void API_ENTRY(glGetFloatv)(GLenum pname, GLfloat* params) {
+ CALL_GL_API(glGetFloatv, pname, params);
+}
+void API_ENTRY(glGetFramebufferAttachmentParameteriv)(GLenum target, GLenum attachment, GLenum pname, GLint* params) {
+ CALL_GL_API(glGetFramebufferAttachmentParameteriv, target, attachment, pname, params);
+}
+void API_ENTRY(glGetIntegerv)(GLenum pname, GLint* params) {
+ CALL_GL_API(glGetIntegerv, pname, params);
+}
+void API_ENTRY(glGetProgramiv)(GLuint program, GLenum pname, GLint:1:out params) {
+ CALL_GL_API(glGetProgramiv, program, pname, params);
+}
+void API_ENTRY(glGetProgramInfoLog)(GLuint program, GLsizei bufsize, GLsizei* length, GLchar:GLstring:out infolog) {
+ CALL_GL_API(glGetProgramInfoLog, program, bufsize, length, infolog);
+}
+void API_ENTRY(glGetRenderbufferParameteriv)(GLenum target, GLenum pname, GLint* params) {
+ CALL_GL_API(glGetRenderbufferParameteriv, target, pname, params);
+}
+void API_ENTRY(glGetShaderiv)(GLuint shader, GLenum pname, GLint:1:out params) {
+ CALL_GL_API(glGetShaderiv, shader, pname, params);
+}
+void API_ENTRY(glGetShaderInfoLog)(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar:GLstring:out infolog) {
+ CALL_GL_API(glGetShaderInfoLog, shader, bufsize, length, infolog);
+}
+void API_ENTRY(glGetShaderPrecisionFormat)(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision) {
+ CALL_GL_API(glGetShaderPrecisionFormat, shadertype, precisiontype, range, precision);
+}
+void API_ENTRY(glGetShaderSource)(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar:GLstring:out source) {
+ CALL_GL_API(glGetShaderSource, shader, bufsize, length, source);
+}
+const GLubyte* API_ENTRY(glGetString)(GLenum name) {
+ CALL_GL_API_RETURN(glGetString, name);
+}
+void API_ENTRY(glGetTexParameterfv)(GLenum target, GLenum pname, GLfloat* params) {
+ CALL_GL_API(glGetTexParameterfv, target, pname, params);
+}
+void API_ENTRY(glGetTexParameteriv)(GLenum target, GLenum pname, GLint* params) {
+ CALL_GL_API(glGetTexParameteriv, target, pname, params);
+}
+void API_ENTRY(glGetUniformfv)(GLuint program, GLint location, GLfloat* params) {
+ CALL_GL_API(glGetUniformfv, program, location, params);
+}
+void API_ENTRY(glGetUniformiv)(GLuint program, GLint location, GLint* params) {
+ CALL_GL_API(glGetUniformiv, program, location, params);
+}
+int API_ENTRY(glGetUniformLocation)(GLuint program, const GLchar:GLstring:in name) {
+ CALL_GL_API_RETURN(glGetUniformLocation, program, name);
+}
+void API_ENTRY(glGetVertexAttribfv)(GLuint index, GLenum pname, GLfloat* params) {
+ CALL_GL_API(glGetVertexAttribfv, index, pname, params);
+}
+void API_ENTRY(glGetVertexAttribiv)(GLuint index, GLenum pname, GLint* params) {
+ CALL_GL_API(glGetVertexAttribiv, index, pname, params);
+}
+void API_ENTRY(glGetVertexAttribPointerv)(GLuint index, GLenum pname, GLvoid** pointer) {
+ CALL_GL_API(glGetVertexAttribPointerv, index, pname, pointer);
+}
+void API_ENTRY(glHint)(GLenum target, GLenum mode) {
+ CALL_GL_API(glHint, target, mode);
+}
+GLboolean API_ENTRY(glIsBuffer)(GLuint buffer) {
+ CALL_GL_API_RETURN(glIsBuffer, buffer);
+}
+GLboolean API_ENTRY(glIsEnabled)(GLenum cap) {
+ CALL_GL_API_RETURN(glIsEnabled, cap);
+}
+GLboolean API_ENTRY(glIsFramebuffer)(GLuint framebuffer) {
+ CALL_GL_API_RETURN(glIsFramebuffer, framebuffer);
+}
+GLboolean API_ENTRY(glIsProgram)(GLuint program) {
+ CALL_GL_API_RETURN(glIsProgram, program);
+}
+GLboolean API_ENTRY(glIsRenderbuffer)(GLuint renderbuffer) {
+ CALL_GL_API_RETURN(glIsRenderbuffer, renderbuffer);
+}
+GLboolean API_ENTRY(glIsShader)(GLuint shader) {
+ CALL_GL_API_RETURN(glIsShader, shader);
+}
+GLboolean API_ENTRY(glIsTexture)(GLuint texture) {
+ CALL_GL_API_RETURN(glIsTexture, texture);
+}
+void API_ENTRY(glLineWidth)(GLfloat width) {
+ CALL_GL_API(glLineWidth, width);
+}
+void API_ENTRY(glLinkProgram)(GLuint program) {
+ CALL_GL_API(glLinkProgram, program);
+}
+void API_ENTRY(glPixelStorei)(GLenum pname, GLint param) {
+ CALL_GL_API(glPixelStorei, pname, param);
+}
+void API_ENTRY(glPolygonOffset)(GLfloat factor, GLfloat units) {
+ CALL_GL_API(glPolygonOffset, factor, units);
+}
+void API_ENTRY(glReadPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels) {
+ CALL_GL_API(glReadPixels, x, y, width, height, format, type, pixels);
+}
+void API_ENTRY(glReleaseShaderCompiler)(void) {
+ CALL_GL_API(glReleaseShaderCompiler);
+}
+void API_ENTRY(glRenderbufferStorage)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) {
+ CALL_GL_API(glRenderbufferStorage, target, internalformat, width, height);
+}
+void API_ENTRY(glSampleCoverage)(GLclampf value, GLboolean invert) {
+ CALL_GL_API(glSampleCoverage, value, invert);
+}
+void API_ENTRY(glScissor)(GLint x, GLint y, GLsizei width, GLsizei height) {
+ CALL_GL_API(glScissor, x, y, width, height);
+}
+void API_ENTRY(glShaderBinary)(GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length) {
+ CALL_GL_API(glShaderBinary, n, shaders, binaryformat, binary, length);
+}
+void API_ENTRY(glShaderSource)(GLuint shader, GLsizei count, const GLchar** string, const GLint* length) {
+ CALL_GL_API(glShaderSource, shader, count, string, length);
+}
+void API_ENTRY(glStencilFunc)(GLenum func, GLint ref, GLuint mask) {
+ CALL_GL_API(glStencilFunc, func, ref, mask);
+}
+void API_ENTRY(glStencilFuncSeparate)(GLenum face, GLenum func, GLint ref, GLuint mask) {
+ CALL_GL_API(glStencilFuncSeparate, face, func, ref, mask);
+}
+void API_ENTRY(glStencilMask)(GLuint mask) {
+ CALL_GL_API(glStencilMask, mask);
+}
+void API_ENTRY(glStencilMaskSeparate)(GLenum face, GLuint mask) {
+ CALL_GL_API(glStencilMaskSeparate, face, mask);
+}
+void API_ENTRY(glStencilOp)(GLenum fail, GLenum zfail, GLenum zpass) {
+ CALL_GL_API(glStencilOp, fail, zfail, zpass);
+}
+void API_ENTRY(glStencilOpSeparate)(GLenum face, GLenum fail, GLenum zfail, GLenum zpass) {
+ CALL_GL_API(glStencilOpSeparate, face, fail, zfail, zpass);
+}
+void API_ENTRY(glTexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels) {
+ CALL_GL_API(glTexImage2D, target, level, internalformat, width, height, border, format, type, pixels);
+}
+void API_ENTRY(glTexParameterf)(GLenum target, GLenum pname, GLfloat param) {
+ CALL_GL_API(glTexParameterf, target, pname, param);
+}
+void API_ENTRY(glTexParameterfv)(GLenum target, GLenum pname, const GLfloat* params) {
+ CALL_GL_API(glTexParameterfv, target, pname, params);
+}
+void API_ENTRY(glTexParameteri)(GLenum target, GLenum pname, GLint param) {
+ CALL_GL_API(glTexParameteri, target, pname, param);
+}
+void API_ENTRY(glTexParameteriv)(GLenum target, GLenum pname, const GLint* params) {
+ CALL_GL_API(glTexParameteriv, target, pname, params);
+}
+void API_ENTRY(glTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels) {
+ CALL_GL_API(glTexSubImage2D, target, level, xoffset, yoffset, width, height, format, type, pixels);
+}
+void API_ENTRY(glUniform1f)(GLint location, GLfloat x) {
+ CALL_GL_API(glUniform1f, location, x);
+}
+void API_ENTRY(glUniform1fv)(GLint location, GLsizei count, const GLfloat:1*count:in v) {
+ CALL_GL_API(glUniform1fv, location, count, v);
+}
+void API_ENTRY(glUniform1i)(GLint location, GLint x) {
+ CALL_GL_API(glUniform1i, location, x);
+}
+void API_ENTRY(glUniform1iv)(GLint location, GLsizei count, const GLint:1*count:in v) {
+ CALL_GL_API(glUniform1iv, location, count, v);
+}
+void API_ENTRY(glUniform2f)(GLint location, GLfloat x, GLfloat y) {
+ CALL_GL_API(glUniform2f, location, x, y);
+}
+void API_ENTRY(glUniform2fv)(GLint location, GLsizei count, const GLfloat:2*count:in v) {
+ CALL_GL_API(glUniform2fv, location, count, v);
+}
+void API_ENTRY(glUniform2i)(GLint location, GLint x, GLint y) {
+ CALL_GL_API(glUniform2i, location, x, y);
+}
+void API_ENTRY(glUniform2iv)(GLint location, GLsizei count, const GLint:2*count:in v) {
+ CALL_GL_API(glUniform2iv, location, count, v);
+}
+void API_ENTRY(glUniform3f)(GLint location, GLfloat x, GLfloat y, GLfloat z) {
+ CALL_GL_API(glUniform3f, location, x, y, z);
+}
+void API_ENTRY(glUniform3fv)(GLint location, GLsizei count, const GLfloat:3*count:in v) {
+ CALL_GL_API(glUniform3fv, location, count, v);
+}
+void API_ENTRY(glUniform3i)(GLint location, GLint x, GLint y, GLint z) {
+ CALL_GL_API(glUniform3i, location, x, y, z);
+}
+void API_ENTRY(glUniform3iv)(GLint location, GLsizei count, const GLint:3*count:in v) {
+ CALL_GL_API(glUniform3iv, location, count, v);
+}
+void API_ENTRY(glUniform4f)(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w) {
+ CALL_GL_API(glUniform4f, location, x, y, z, w);
+}
+void API_ENTRY(glUniform4fv)(GLint location, GLsizei count, const GLfloat:4*count:in v) {
+ CALL_GL_API(glUniform4fv, location, count, v);
+}
+void API_ENTRY(glUniform4i)(GLint location, GLint x, GLint y, GLint z, GLint w) {
+ CALL_GL_API(glUniform4i, location, x, y, z, w);
+}
+void API_ENTRY(glUniform4iv)(GLint location, GLsizei count, const GLint:4*count:in v) {
+ CALL_GL_API(glUniform4iv, location, count, v);
+}
+void API_ENTRY(glUniformMatrix2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat:4*count:in value) {
+ CALL_GL_API(glUniformMatrix2fv, location, count, transpose, value);
+}
+void API_ENTRY(glUniformMatrix3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat:9*count:in value) {
+ CALL_GL_API(glUniformMatrix3fv, location, count, transpose, value);
+}
+void API_ENTRY(glUniformMatrix4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat:16*count:in value) {
+ CALL_GL_API(glUniformMatrix4fv, location, count, transpose, value);
+}
+void API_ENTRY(glUseProgram)(GLuint program) {
+ CALL_GL_API(glUseProgram, program);
+}
+void API_ENTRY(glValidateProgram)(GLuint program) {
+ CALL_GL_API(glValidateProgram, program);
+}
+void API_ENTRY(glVertexAttrib1f)(GLuint indx, GLfloat x) {
+ CALL_GL_API(glVertexAttrib1f, indx, x);
+}
+void API_ENTRY(glVertexAttrib1fv)(GLuint indx, const GLfloat:1:in values) {
+ CALL_GL_API(glVertexAttrib1fv, indx, values);
+}
+void API_ENTRY(glVertexAttrib2f)(GLuint indx, GLfloat x, GLfloat y) {
+ CALL_GL_API(glVertexAttrib2f, indx, x, y);
+}
+void API_ENTRY(glVertexAttrib2fv)(GLuint indx, const GLfloat:2:in values) {
+ CALL_GL_API(glVertexAttrib2fv, indx, values);
+}
+void API_ENTRY(glVertexAttrib3f)(GLuint indx, GLfloat x, GLfloat y, GLfloat z) {
+ CALL_GL_API(glVertexAttrib3f, indx, x, y, z);
+}
+void API_ENTRY(glVertexAttrib3fv)(GLuint indx, const GLfloat:3:in values) {
+ CALL_GL_API(glVertexAttrib3fv, indx, values);
+}
+void API_ENTRY(glVertexAttrib4f)(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w) {
+ CALL_GL_API(glVertexAttrib4f, indx, x, y, z, w);
+}
+void API_ENTRY(glVertexAttrib4fv)(GLuint indx, const GLfloat:4:in values) {
+ CALL_GL_API(glVertexAttrib4fv, indx, values);
+}
+void API_ENTRY(glVertexAttribPointer)(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr) {
+ CALL_GL_API(glVertexAttribPointer, indx, size, type, normalized, stride, ptr);
+}
+void API_ENTRY(glViewport)(GLint x, GLint y, GLsizei width, GLsizei height) {
+ CALL_GL_API(glViewport, x, y, width, height);
+}
diff --git a/opengl/libs/GLES2_dbg/include/glesv2_dbg.h b/opengl/libs/GLES2_dbg/include/glesv2_dbg.h
new file mode 100644
index 0000000..2d70032
--- /dev/null
+++ b/opengl/libs/GLES2_dbg/include/glesv2_dbg.h
@@ -0,0 +1,381 @@
+extern "C"
+{
+GL_ENTRY(void, glActiveTexture, GLenum texture)
+GL_ENTRY(void, glAlphaFunc, GLenum func, GLclampf ref)
+GL_ENTRY(void, glAlphaFuncx, GLenum func, GLclampx ref)
+GL_ENTRY(void, glAlphaFuncxOES, GLenum func, GLclampx ref)
+GL_ENTRY(void, glAttachShader, GLuint program, GLuint shader)
+GL_ENTRY(void, glBeginPerfMonitorAMD, GLuint monitor)
+GL_ENTRY(void, glBindAttribLocation, GLuint program, GLuint index, const GLchar* name)
+GL_ENTRY(void, glBindBuffer, GLenum target, GLuint buffer)
+GL_ENTRY(void, glBindFramebuffer, GLenum target, GLuint framebuffer)
+GL_ENTRY(void, glBindFramebufferOES, GLenum target, GLuint framebuffer)
+GL_ENTRY(void, glBindRenderbuffer, GLenum target, GLuint renderbuffer)
+GL_ENTRY(void, glBindRenderbufferOES, GLenum target, GLuint renderbuffer)
+GL_ENTRY(void, glBindTexture, GLenum target, GLuint texture)
+GL_ENTRY(void, glBindVertexArrayOES, GLuint array)
+GL_ENTRY(void, glBlendColor, GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
+GL_ENTRY(void, glBlendEquation, GLenum mode )
+GL_ENTRY(void, glBlendEquationOES, GLenum mode)
+GL_ENTRY(void, glBlendEquationSeparate, GLenum modeRGB, GLenum modeAlpha)
+GL_ENTRY(void, glBlendEquationSeparateOES, GLenum modeRGB, GLenum modeAlpha)
+GL_ENTRY(void, glBlendFunc, GLenum sfactor, GLenum dfactor)
+GL_ENTRY(void, glBlendFuncSeparate, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
+GL_ENTRY(void, glBlendFuncSeparateOES, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
+GL_ENTRY(void, glBufferData, GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage)
+GL_ENTRY(void, glBufferSubData, GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data)
+GL_ENTRY(GLenum, glCheckFramebufferStatus, GLenum target)
+GL_ENTRY(GLenum, glCheckFramebufferStatusOES, GLenum target)
+GL_ENTRY(void, glClear, GLbitfield mask)
+GL_ENTRY(void, glClearColor, GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
+GL_ENTRY(void, glClearColorx, GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha)
+GL_ENTRY(void, glClearColorxOES, GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha)
+GL_ENTRY(void, glClearDepthf, GLclampf depth)
+GL_ENTRY(void, glClearDepthfOES, GLclampf depth)
+GL_ENTRY(void, glClearDepthx, GLclampx depth)
+GL_ENTRY(void, glClearDepthxOES, GLclampx depth)
+GL_ENTRY(void, glClearStencil, GLint s)
+GL_ENTRY(void, glClientActiveTexture, GLenum texture)
+GL_ENTRY(void, glClipPlanef, GLenum plane, const GLfloat *equation)
+GL_ENTRY(void, glClipPlanefIMG, GLenum p, const GLfloat *eqn)
+GL_ENTRY(void, glClipPlanefOES, GLenum plane, const GLfloat *equation)
+GL_ENTRY(void, glClipPlanex, GLenum plane, const GLfixed *equation)
+GL_ENTRY(void, glClipPlanexIMG, GLenum p, const GLfixed *eqn)
+GL_ENTRY(void, glClipPlanexOES, GLenum plane, const GLfixed *equation)
+GL_ENTRY(void, glColor4f, GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
+GL_ENTRY(void, glColor4ub, GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha)
+GL_ENTRY(void, glColor4x, GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)
+GL_ENTRY(void, glColor4xOES, GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)
+GL_ENTRY(void, glColorMask, GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
+GL_ENTRY(void, glColorPointer, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
+GL_ENTRY(void, glCompileShader, GLuint shader)
+GL_ENTRY(void, glCompressedTexImage2D, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data)
+GL_ENTRY(void, glCompressedTexImage3DOES, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data)
+GL_ENTRY(void, glCompressedTexSubImage2D, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data)
+GL_ENTRY(void, glCompressedTexSubImage3DOES, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data)
+GL_ENTRY(void, glCopyTexImage2D, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
+GL_ENTRY(void, glCopyTexSubImage2D, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+GL_ENTRY(void, glCopyTexSubImage3DOES, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+GL_ENTRY(void, glCoverageMaskNV, GLboolean mask)
+GL_ENTRY(void, glCoverageOperationNV, GLenum operation)
+GL_ENTRY(GLuint, glCreateProgram, void)
+GL_ENTRY(GLuint, glCreateShader, GLenum type)
+GL_ENTRY(void, glCullFace, GLenum mode)
+GL_ENTRY(void, glCurrentPaletteMatrixOES, GLuint matrixpaletteindex)
+GL_ENTRY(void, glDeleteBuffers, GLsizei n, const GLuint *buffers)
+GL_ENTRY(void, glDeleteFencesNV, GLsizei n, const GLuint *fences)
+GL_ENTRY(void, glDeleteFramebuffers, GLsizei n, const GLuint* framebuffers)
+GL_ENTRY(void, glDeleteFramebuffersOES, GLsizei n, const GLuint* framebuffers)
+GL_ENTRY(void, glDeletePerfMonitorsAMD, GLsizei n, GLuint *monitors)
+GL_ENTRY(void, glDeleteProgram, GLuint program)
+GL_ENTRY(void, glDeleteRenderbuffers, GLsizei n, const GLuint* renderbuffers)
+GL_ENTRY(void, glDeleteRenderbuffersOES, GLsizei n, const GLuint* renderbuffers)
+GL_ENTRY(void, glDeleteShader, GLuint shader)
+GL_ENTRY(void, glDeleteTextures, GLsizei n, const GLuint *textures)
+GL_ENTRY(void, glDeleteVertexArraysOES, GLsizei n, const GLuint *arrays)
+GL_ENTRY(void, glDepthFunc, GLenum func)
+GL_ENTRY(void, glDepthMask, GLboolean flag)
+GL_ENTRY(void, glDepthRangef, GLclampf zNear, GLclampf zFar)
+GL_ENTRY(void, glDepthRangefOES, GLclampf zNear, GLclampf zFar)
+GL_ENTRY(void, glDepthRangex, GLclampx zNear, GLclampx zFar)
+GL_ENTRY(void, glDepthRangexOES, GLclampx zNear, GLclampx zFar)
+GL_ENTRY(void, glDetachShader, GLuint program, GLuint shader)
+GL_ENTRY(void, glDisable, GLenum cap)
+GL_ENTRY(void, glDisableClientState, GLenum array)
+GL_ENTRY(void, glDisableDriverControlQCOM, GLuint driverControl)
+GL_ENTRY(void, glDisableVertexAttribArray, GLuint index)
+GL_ENTRY(void, glDiscardFramebufferEXT, GLenum target, GLsizei numAttachments, const GLenum *attachments)
+GL_ENTRY(void, glDrawArrays, GLenum mode, GLint first, GLsizei count)
+GL_ENTRY(void, glDrawElements, GLenum mode, GLsizei count, GLenum type, const GLvoid *indices)
+GL_ENTRY(void, glDrawTexfOES, GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height)
+GL_ENTRY(void, glDrawTexfvOES, const GLfloat *coords)
+GL_ENTRY(void, glDrawTexiOES, GLint x, GLint y, GLint z, GLint width, GLint height)
+GL_ENTRY(void, glDrawTexivOES, const GLint *coords)
+GL_ENTRY(void, glDrawTexsOES, GLshort x, GLshort y, GLshort z, GLshort width, GLshort height)
+GL_ENTRY(void, glDrawTexsvOES, const GLshort *coords)
+GL_ENTRY(void, glDrawTexxOES, GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height)
+GL_ENTRY(void, glDrawTexxvOES, const GLfixed *coords)
+GL_ENTRY(void, glEGLImageTargetRenderbufferStorageOES, GLenum target, GLeglImageOES image)
+GL_ENTRY(void, glEGLImageTargetTexture2DOES, GLenum target, GLeglImageOES image)
+GL_ENTRY(void, glEnable, GLenum cap)
+GL_ENTRY(void, glEnableClientState, GLenum array)
+GL_ENTRY(void, glEnableDriverControlQCOM, GLuint driverControl)
+GL_ENTRY(void, glEnableVertexAttribArray, GLuint index)
+GL_ENTRY(void, glEndPerfMonitorAMD, GLuint monitor)
+GL_ENTRY(void, glEndTilingQCOM, GLbitfield preserveMask)
+GL_ENTRY(void, glExtGetBufferPointervQCOM, GLenum target, GLvoid **params)
+GL_ENTRY(void, glExtGetBuffersQCOM, GLuint *buffers, GLint maxBuffers, GLint *numBuffers)
+GL_ENTRY(void, glExtGetFramebuffersQCOM, GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers)
+GL_ENTRY(void, glExtGetProgramBinarySourceQCOM, GLuint program, GLenum shadertype, GLchar *source, GLint *length)
+GL_ENTRY(void, glExtGetProgramsQCOM, GLuint *programs, GLint maxPrograms, GLint *numPrograms)
+GL_ENTRY(void, glExtGetRenderbuffersQCOM, GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers)
+GL_ENTRY(void, glExtGetShadersQCOM, GLuint *shaders, GLint maxShaders, GLint *numShaders)
+GL_ENTRY(void, glExtGetTexLevelParameterivQCOM, GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params)
+GL_ENTRY(void, glExtGetTexSubImageQCOM, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels)
+GL_ENTRY(void, glExtGetTexturesQCOM, GLuint *textures, GLint maxTextures, GLint *numTextures)
+GL_ENTRY(GLboolean, glExtIsProgramBinaryQCOM, GLuint program)
+GL_ENTRY(void, glExtTexObjectStateOverrideiQCOM, GLenum target, GLenum pname, GLint param)
+GL_ENTRY(void, glFinish, void)
+GL_ENTRY(void, glFinishFenceNV, GLuint fence)
+GL_ENTRY(void, glFlush, void)
+GL_ENTRY(void, glFogf, GLenum pname, GLfloat param)
+GL_ENTRY(void, glFogfv, GLenum pname, const GLfloat *params)
+GL_ENTRY(void, glFogx, GLenum pname, GLfixed param)
+GL_ENTRY(void, glFogxOES, GLenum pname, GLfixed param)
+GL_ENTRY(void, glFogxv, GLenum pname, const GLfixed *params)
+GL_ENTRY(void, glFogxvOES, GLenum pname, const GLfixed *params)
+GL_ENTRY(void, glFramebufferRenderbuffer, GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
+GL_ENTRY(void, glFramebufferRenderbufferOES, GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
+GL_ENTRY(void, glFramebufferTexture2D, GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+GL_ENTRY(void, glFramebufferTexture2DMultisampleIMG, GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples)
+GL_ENTRY(void, glFramebufferTexture2DOES, GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+GL_ENTRY(void, glFramebufferTexture3DOES, GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
+GL_ENTRY(void, glFrontFace, GLenum mode)
+GL_ENTRY(void, glFrustumf, GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
+GL_ENTRY(void, glFrustumfOES, GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
+GL_ENTRY(void, glFrustumx, GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
+GL_ENTRY(void, glFrustumxOES, GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
+GL_ENTRY(void, glGenBuffers, GLsizei n, GLuint *buffers)
+GL_ENTRY(void, glGenFencesNV, GLsizei n, GLuint *fences)
+GL_ENTRY(void, glGenFramebuffers, GLsizei n, GLuint* framebuffers)
+GL_ENTRY(void, glGenFramebuffersOES, GLsizei n, GLuint* framebuffers)
+GL_ENTRY(void, glGenPerfMonitorsAMD, GLsizei n, GLuint *monitors)
+GL_ENTRY(void, glGenRenderbuffers, GLsizei n, GLuint* renderbuffers)
+GL_ENTRY(void, glGenRenderbuffersOES, GLsizei n, GLuint* renderbuffers)
+GL_ENTRY(void, glGenTextures, GLsizei n, GLuint *textures)
+GL_ENTRY(void, glGenVertexArraysOES, GLsizei n, GLuint *arrays)
+GL_ENTRY(void, glGenerateMipmap, GLenum target)
+GL_ENTRY(void, glGenerateMipmapOES, GLenum target)
+GL_ENTRY(void, glGetActiveAttrib, GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name)
+GL_ENTRY(void, glGetActiveUniform, GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name)
+GL_ENTRY(void, glGetAttachedShaders, GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders)
+GL_ENTRY(int, glGetAttribLocation, GLuint program, const GLchar* name)
+GL_ENTRY(void, glGetBooleanv, GLenum pname, GLboolean *params)
+GL_ENTRY(void, glGetBufferParameteriv, GLenum target, GLenum pname, GLint *params)
+GL_ENTRY(void, glGetBufferPointervOES, GLenum target, GLenum pname, GLvoid ** params)
+GL_ENTRY(void, glGetClipPlanef, GLenum pname, GLfloat eqn[4])
+GL_ENTRY(void, glGetClipPlanefOES, GLenum pname, GLfloat eqn[4])
+GL_ENTRY(void, glGetClipPlanex, GLenum pname, GLfixed eqn[4])
+GL_ENTRY(void, glGetClipPlanexOES, GLenum pname, GLfixed eqn[4])
+GL_ENTRY(void, glGetDriverControlStringQCOM, GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString)
+GL_ENTRY(void, glGetDriverControlsQCOM, GLint *num, GLsizei size, GLuint *driverControls)
+GL_ENTRY(GLenum, glGetError, void)
+GL_ENTRY(void, glGetFenceivNV, GLuint fence, GLenum pname, GLint *params)
+GL_ENTRY(void, glGetFixedv, GLenum pname, GLfixed *params)
+GL_ENTRY(void, glGetFixedvOES, GLenum pname, GLfixed *params)
+GL_ENTRY(void, glGetFloatv, GLenum pname, GLfloat *params)
+GL_ENTRY(void, glGetFramebufferAttachmentParameteriv, GLenum target, GLenum attachment, GLenum pname, GLint* params)
+GL_ENTRY(void, glGetFramebufferAttachmentParameterivOES, GLenum target, GLenum attachment, GLenum pname, GLint* params)
+GL_ENTRY(void, glGetIntegerv, GLenum pname, GLint *params)
+GL_ENTRY(void, glGetLightfv, GLenum light, GLenum pname, GLfloat *params)
+GL_ENTRY(void, glGetLightxv, GLenum light, GLenum pname, GLfixed *params)
+GL_ENTRY(void, glGetLightxvOES, GLenum light, GLenum pname, GLfixed *params)
+GL_ENTRY(void, glGetMaterialfv, GLenum face, GLenum pname, GLfloat *params)
+GL_ENTRY(void, glGetMaterialxv, GLenum face, GLenum pname, GLfixed *params)
+GL_ENTRY(void, glGetMaterialxvOES, GLenum face, GLenum pname, GLfixed *params)
+GL_ENTRY(void, glGetPerfMonitorCounterDataAMD, GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten)
+GL_ENTRY(void, glGetPerfMonitorCounterInfoAMD, GLuint group, GLuint counter, GLenum pname, GLvoid *data)
+GL_ENTRY(void, glGetPerfMonitorCounterStringAMD, GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString)
+GL_ENTRY(void, glGetPerfMonitorCountersAMD, GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters)
+GL_ENTRY(void, glGetPerfMonitorGroupStringAMD, GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString)
+GL_ENTRY(void, glGetPerfMonitorGroupsAMD, GLint *numGroups, GLsizei groupsSize, GLuint *groups)
+GL_ENTRY(void, glGetPointerv, GLenum pname, GLvoid **params)
+GL_ENTRY(void, glGetProgramBinaryOES, GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary)
+GL_ENTRY(void, glGetProgramInfoLog, GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog)
+GL_ENTRY(void, glGetProgramiv, GLuint program, GLenum pname, GLint* params)
+GL_ENTRY(void, glGetRenderbufferParameteriv, GLenum target, GLenum pname, GLint* params)
+GL_ENTRY(void, glGetRenderbufferParameterivOES, GLenum target, GLenum pname, GLint* params)
+GL_ENTRY(void, glGetShaderInfoLog, GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog)
+GL_ENTRY(void, glGetShaderPrecisionFormat, GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision)
+GL_ENTRY(void, glGetShaderSource, GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source)
+GL_ENTRY(void, glGetShaderiv, GLuint shader, GLenum pname, GLint* params)
+GL_ENTRY(const GLubyte *, glGetString, GLenum name)
+GL_ENTRY(void, glGetTexEnvfv, GLenum env, GLenum pname, GLfloat *params)
+GL_ENTRY(void, glGetTexEnviv, GLenum env, GLenum pname, GLint *params)
+GL_ENTRY(void, glGetTexEnvxv, GLenum env, GLenum pname, GLfixed *params)
+GL_ENTRY(void, glGetTexEnvxvOES, GLenum env, GLenum pname, GLfixed *params)
+GL_ENTRY(void, glGetTexGenfvOES, GLenum coord, GLenum pname, GLfloat *params)
+GL_ENTRY(void, glGetTexGenivOES, GLenum coord, GLenum pname, GLint *params)
+GL_ENTRY(void, glGetTexGenxvOES, GLenum coord, GLenum pname, GLfixed *params)
+GL_ENTRY(void, glGetTexParameterfv, GLenum target, GLenum pname, GLfloat *params)
+GL_ENTRY(void, glGetTexParameteriv, GLenum target, GLenum pname, GLint *params)
+GL_ENTRY(void, glGetTexParameterxv, GLenum target, GLenum pname, GLfixed *params)
+GL_ENTRY(void, glGetTexParameterxvOES, GLenum target, GLenum pname, GLfixed *params)
+GL_ENTRY(int, glGetUniformLocation, GLuint program, const GLchar* name)
+GL_ENTRY(void, glGetUniformfv, GLuint program, GLint location, GLfloat* params)
+GL_ENTRY(void, glGetUniformiv, GLuint program, GLint location, GLint* params)
+GL_ENTRY(void, glGetVertexAttribPointerv, GLuint index, GLenum pname, GLvoid** pointer)
+GL_ENTRY(void, glGetVertexAttribfv, GLuint index, GLenum pname, GLfloat* params)
+GL_ENTRY(void, glGetVertexAttribiv, GLuint index, GLenum pname, GLint* params)
+GL_ENTRY(void, glHint, GLenum target, GLenum mode)
+GL_ENTRY(GLboolean, glIsBuffer, GLuint buffer)
+GL_ENTRY(GLboolean, glIsEnabled, GLenum cap)
+GL_ENTRY(GLboolean, glIsFenceNV, GLuint fence)
+GL_ENTRY(GLboolean, glIsFramebuffer, GLuint framebuffer)
+GL_ENTRY(GLboolean, glIsFramebufferOES, GLuint framebuffer)
+GL_ENTRY(GLboolean, glIsProgram, GLuint program)
+GL_ENTRY(GLboolean, glIsRenderbuffer, GLuint renderbuffer)
+GL_ENTRY(GLboolean, glIsRenderbufferOES, GLuint renderbuffer)
+GL_ENTRY(GLboolean, glIsShader, GLuint shader)
+GL_ENTRY(GLboolean, glIsTexture, GLuint texture)
+GL_ENTRY(GLboolean, glIsVertexArrayOES, GLuint array)
+GL_ENTRY(void, glLightModelf, GLenum pname, GLfloat param)
+GL_ENTRY(void, glLightModelfv, GLenum pname, const GLfloat *params)
+GL_ENTRY(void, glLightModelx, GLenum pname, GLfixed param)
+GL_ENTRY(void, glLightModelxOES, GLenum pname, GLfixed param)
+GL_ENTRY(void, glLightModelxv, GLenum pname, const GLfixed *params)
+GL_ENTRY(void, glLightModelxvOES, GLenum pname, const GLfixed *params)
+GL_ENTRY(void, glLightf, GLenum light, GLenum pname, GLfloat param)
+GL_ENTRY(void, glLightfv, GLenum light, GLenum pname, const GLfloat *params)
+GL_ENTRY(void, glLightx, GLenum light, GLenum pname, GLfixed param)
+GL_ENTRY(void, glLightxOES, GLenum light, GLenum pname, GLfixed param)
+GL_ENTRY(void, glLightxv, GLenum light, GLenum pname, const GLfixed *params)
+GL_ENTRY(void, glLightxvOES, GLenum light, GLenum pname, const GLfixed *params)
+GL_ENTRY(void, glLineWidth, GLfloat width)
+GL_ENTRY(void, glLineWidthx, GLfixed width)
+GL_ENTRY(void, glLineWidthxOES, GLfixed width)
+GL_ENTRY(void, glLinkProgram, GLuint program)
+GL_ENTRY(void, glLoadIdentity, void)
+GL_ENTRY(void, glLoadMatrixf, const GLfloat *m)
+GL_ENTRY(void, glLoadMatrixx, const GLfixed *m)
+GL_ENTRY(void, glLoadMatrixxOES, const GLfixed *m)
+GL_ENTRY(void, glLoadPaletteFromModelViewMatrixOES, void)
+GL_ENTRY(void, glLogicOp, GLenum opcode)
+GL_ENTRY(void*, glMapBufferOES, GLenum target, GLenum access)
+GL_ENTRY(void, glMaterialf, GLenum face, GLenum pname, GLfloat param)
+GL_ENTRY(void, glMaterialfv, GLenum face, GLenum pname, const GLfloat *params)
+GL_ENTRY(void, glMaterialx, GLenum face, GLenum pname, GLfixed param)
+GL_ENTRY(void, glMaterialxOES, GLenum face, GLenum pname, GLfixed param)
+GL_ENTRY(void, glMaterialxv, GLenum face, GLenum pname, const GLfixed *params)
+GL_ENTRY(void, glMaterialxvOES, GLenum face, GLenum pname, const GLfixed *params)
+GL_ENTRY(void, glMatrixIndexPointerOES, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
+GL_ENTRY(void, glMatrixMode, GLenum mode)
+GL_ENTRY(void, glMultMatrixf, const GLfloat *m)
+GL_ENTRY(void, glMultMatrixx, const GLfixed *m)
+GL_ENTRY(void, glMultMatrixxOES, const GLfixed *m)
+GL_ENTRY(void, glMultiDrawArraysEXT, GLenum mode, GLint *first, GLsizei *count, GLsizei primcount)
+GL_ENTRY(void, glMultiDrawElementsEXT, GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount)
+GL_ENTRY(void, glMultiTexCoord4f, GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)
+GL_ENTRY(void, glMultiTexCoord4x, GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q)
+GL_ENTRY(void, glMultiTexCoord4xOES, GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q)
+GL_ENTRY(void, glNormal3f, GLfloat nx, GLfloat ny, GLfloat nz)
+GL_ENTRY(void, glNormal3x, GLfixed nx, GLfixed ny, GLfixed nz)
+GL_ENTRY(void, glNormal3xOES, GLfixed nx, GLfixed ny, GLfixed nz)
+GL_ENTRY(void, glNormalPointer, GLenum type, GLsizei stride, const GLvoid *pointer)
+GL_ENTRY(void, glOrthof, GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
+GL_ENTRY(void, glOrthofOES, GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
+GL_ENTRY(void, glOrthox, GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
+GL_ENTRY(void, glOrthoxOES, GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
+GL_ENTRY(void, glPixelStorei, GLenum pname, GLint param)
+GL_ENTRY(void, glPointParameterf, GLenum pname, GLfloat param)
+GL_ENTRY(void, glPointParameterfv, GLenum pname, const GLfloat *params)
+GL_ENTRY(void, glPointParameterx, GLenum pname, GLfixed param)
+GL_ENTRY(void, glPointParameterxOES, GLenum pname, GLfixed param)
+GL_ENTRY(void, glPointParameterxv, GLenum pname, const GLfixed *params)
+GL_ENTRY(void, glPointParameterxvOES, GLenum pname, const GLfixed *params)
+GL_ENTRY(void, glPointSize, GLfloat size)
+GL_ENTRY(void, glPointSizePointerOES, GLenum type, GLsizei stride, const GLvoid *pointer)
+GL_ENTRY(void, glPointSizex, GLfixed size)
+GL_ENTRY(void, glPointSizexOES, GLfixed size)
+GL_ENTRY(void, glPolygonOffset, GLfloat factor, GLfloat units)
+GL_ENTRY(void, glPolygonOffsetx, GLfixed factor, GLfixed units)
+GL_ENTRY(void, glPolygonOffsetxOES, GLfixed factor, GLfixed units)
+GL_ENTRY(void, glPopMatrix, void)
+GL_ENTRY(void, glProgramBinaryOES, GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length)
+GL_ENTRY(void, glPushMatrix, void)
+GL_ENTRY(GLbitfield, glQueryMatrixxOES, GLfixed mantissa[16], GLint exponent[16])
+GL_ENTRY(void, glReadPixels, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels)
+GL_ENTRY(void, glReleaseShaderCompiler, void)
+GL_ENTRY(void, glRenderbufferStorage, GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
+GL_ENTRY(void, glRenderbufferStorageMultisampleIMG, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
+GL_ENTRY(void, glRenderbufferStorageOES, GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
+GL_ENTRY(void, glRotatef, GLfloat angle, GLfloat x, GLfloat y, GLfloat z)
+GL_ENTRY(void, glRotatex, GLfixed angle, GLfixed x, GLfixed y, GLfixed z)
+GL_ENTRY(void, glRotatexOES, GLfixed angle, GLfixed x, GLfixed y, GLfixed z)
+GL_ENTRY(void, glSampleCoverage, GLclampf value, GLboolean invert)
+GL_ENTRY(void, glSampleCoveragex, GLclampx value, GLboolean invert)
+GL_ENTRY(void, glSampleCoveragexOES, GLclampx value, GLboolean invert)
+GL_ENTRY(void, glScalef, GLfloat x, GLfloat y, GLfloat z)
+GL_ENTRY(void, glScalex, GLfixed x, GLfixed y, GLfixed z)
+GL_ENTRY(void, glScalexOES, GLfixed x, GLfixed y, GLfixed z)
+GL_ENTRY(void, glScissor, GLint x, GLint y, GLsizei width, GLsizei height)
+GL_ENTRY(void, glSelectPerfMonitorCountersAMD, GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList)
+GL_ENTRY(void, glSetFenceNV, GLuint fence, GLenum condition)
+GL_ENTRY(void, glShadeModel, GLenum mode)
+GL_ENTRY(void, glShaderBinary, GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length)
+GL_ENTRY(void, glShaderSource, GLuint shader, GLsizei count, const GLchar** string, const GLint* length)
+GL_ENTRY(void, glStartTilingQCOM, GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask)
+GL_ENTRY(void, glStencilFunc, GLenum func, GLint ref, GLuint mask)
+GL_ENTRY(void, glStencilFuncSeparate, GLenum face, GLenum func, GLint ref, GLuint mask)
+GL_ENTRY(void, glStencilMask, GLuint mask)
+GL_ENTRY(void, glStencilMaskSeparate, GLenum face, GLuint mask)
+GL_ENTRY(void, glStencilOp, GLenum fail, GLenum zfail, GLenum zpass)
+GL_ENTRY(void, glStencilOpSeparate, GLenum face, GLenum fail, GLenum zfail, GLenum zpass)
+GL_ENTRY(GLboolean, glTestFenceNV, GLuint fence)
+GL_ENTRY(void, glTexCoordPointer, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
+GL_ENTRY(void, glTexEnvf, GLenum target, GLenum pname, GLfloat param)
+GL_ENTRY(void, glTexEnvfv, GLenum target, GLenum pname, const GLfloat *params)
+GL_ENTRY(void, glTexEnvi, GLenum target, GLenum pname, GLint param)
+GL_ENTRY(void, glTexEnviv, GLenum target, GLenum pname, const GLint *params)
+GL_ENTRY(void, glTexEnvx, GLenum target, GLenum pname, GLfixed param)
+GL_ENTRY(void, glTexEnvxOES, GLenum target, GLenum pname, GLfixed param)
+GL_ENTRY(void, glTexEnvxv, GLenum target, GLenum pname, const GLfixed *params)
+GL_ENTRY(void, glTexEnvxvOES, GLenum target, GLenum pname, const GLfixed *params)
+GL_ENTRY(void, glTexGenfOES, GLenum coord, GLenum pname, GLfloat param)
+GL_ENTRY(void, glTexGenfvOES, GLenum coord, GLenum pname, const GLfloat *params)
+GL_ENTRY(void, glTexGeniOES, GLenum coord, GLenum pname, GLint param)
+GL_ENTRY(void, glTexGenivOES, GLenum coord, GLenum pname, const GLint *params)
+GL_ENTRY(void, glTexGenxOES, GLenum coord, GLenum pname, GLfixed param)
+GL_ENTRY(void, glTexGenxvOES, GLenum coord, GLenum pname, const GLfixed *params)
+GL_ENTRY(void, glTexImage2D, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels)
+GL_ENTRY(void, glTexImage3DOES, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels)
+GL_ENTRY(void, glTexParameterf, GLenum target, GLenum pname, GLfloat param)
+GL_ENTRY(void, glTexParameterfv, GLenum target, GLenum pname, const GLfloat *params)
+GL_ENTRY(void, glTexParameteri, GLenum target, GLenum pname, GLint param)
+GL_ENTRY(void, glTexParameteriv, GLenum target, GLenum pname, const GLint *params)
+GL_ENTRY(void, glTexParameterx, GLenum target, GLenum pname, GLfixed param)
+GL_ENTRY(void, glTexParameterxOES, GLenum target, GLenum pname, GLfixed param)
+GL_ENTRY(void, glTexParameterxv, GLenum target, GLenum pname, const GLfixed *params)
+GL_ENTRY(void, glTexParameterxvOES, GLenum target, GLenum pname, const GLfixed *params)
+GL_ENTRY(void, glTexSubImage2D, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels)
+GL_ENTRY(void, glTexSubImage3DOES, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels)
+GL_ENTRY(void, glTranslatef, GLfloat x, GLfloat y, GLfloat z)
+GL_ENTRY(void, glTranslatex, GLfixed x, GLfixed y, GLfixed z)
+GL_ENTRY(void, glTranslatexOES, GLfixed x, GLfixed y, GLfixed z)
+GL_ENTRY(void, glUniform1f, GLint location, GLfloat x)
+GL_ENTRY(void, glUniform1fv, GLint location, GLsizei count, const GLfloat* v)
+GL_ENTRY(void, glUniform1i, GLint location, GLint x)
+GL_ENTRY(void, glUniform1iv, GLint location, GLsizei count, const GLint* v)
+GL_ENTRY(void, glUniform2f, GLint location, GLfloat x, GLfloat y)
+GL_ENTRY(void, glUniform2fv, GLint location, GLsizei count, const GLfloat* v)
+GL_ENTRY(void, glUniform2i, GLint location, GLint x, GLint y)
+GL_ENTRY(void, glUniform2iv, GLint location, GLsizei count, const GLint* v)
+GL_ENTRY(void, glUniform3f, GLint location, GLfloat x, GLfloat y, GLfloat z)
+GL_ENTRY(void, glUniform3fv, GLint location, GLsizei count, const GLfloat* v)
+GL_ENTRY(void, glUniform3i, GLint location, GLint x, GLint y, GLint z)
+GL_ENTRY(void, glUniform3iv, GLint location, GLsizei count, const GLint* v)
+GL_ENTRY(void, glUniform4f, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+GL_ENTRY(void, glUniform4fv, GLint location, GLsizei count, const GLfloat* v)
+GL_ENTRY(void, glUniform4i, GLint location, GLint x, GLint y, GLint z, GLint w)
+GL_ENTRY(void, glUniform4iv, GLint location, GLsizei count, const GLint* v)
+GL_ENTRY(void, glUniformMatrix2fv, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+GL_ENTRY(void, glUniformMatrix3fv, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+GL_ENTRY(void, glUniformMatrix4fv, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+GL_ENTRY(GLboolean, glUnmapBufferOES, GLenum target)
+GL_ENTRY(void, glUseProgram, GLuint program)
+GL_ENTRY(void, glValidateProgram, GLuint program)
+GL_ENTRY(void, glVertexAttrib1f, GLuint indx, GLfloat x)
+GL_ENTRY(void, glVertexAttrib1fv, GLuint indx, const GLfloat* values)
+GL_ENTRY(void, glVertexAttrib2f, GLuint indx, GLfloat x, GLfloat y)
+GL_ENTRY(void, glVertexAttrib2fv, GLuint indx, const GLfloat* values)
+GL_ENTRY(void, glVertexAttrib3f, GLuint indx, GLfloat x, GLfloat y, GLfloat z)
+GL_ENTRY(void, glVertexAttrib3fv, GLuint indx, const GLfloat* values)
+GL_ENTRY(void, glVertexAttrib4f, GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+GL_ENTRY(void, glVertexAttrib4fv, GLuint indx, const GLfloat* values)
+GL_ENTRY(void, glVertexAttribPointer, GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr)
+GL_ENTRY(void, glVertexPointer, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
+GL_ENTRY(void, glViewport, GLint x, GLint y, GLsizei width, GLsizei height)
+GL_ENTRY(void, glWeightPointerOES, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
+
+
+}
diff --git a/opengl/libs/GLES2_dbg/src/DebuggerMessage.pb.cpp b/opengl/libs/GLES2_dbg/src/DebuggerMessage.pb.cpp
new file mode 100644
index 0000000..d9c8816
--- /dev/null
+++ b/opengl/libs/GLES2_dbg/src/DebuggerMessage.pb.cpp
@@ -0,0 +1,1038 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+
+#define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION
+#include "DebuggerMessage.pb.h"
+#include <google/protobuf/stubs/once.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+// @@protoc_insertion_point(includes)
+
+namespace GLESv2Debugger {
+
+void protobuf_ShutdownFile_DebuggerMessage_2eproto() {
+ delete Message::default_instance_;
+}
+
+void protobuf_AddDesc_DebuggerMessage_2eproto() {
+ static bool already_here = false;
+ if (already_here) return;
+ already_here = true;
+ GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+ Message::default_instance_ = new Message();
+ Message::default_instance_->InitAsDefaultInstance();
+ ::google::protobuf::internal::OnShutdown(&protobuf_ShutdownFile_DebuggerMessage_2eproto);
+}
+
+// Force AddDescriptors() to be called at static initialization time.
+struct StaticDescriptorInitializer_DebuggerMessage_2eproto {
+ StaticDescriptorInitializer_DebuggerMessage_2eproto() {
+ protobuf_AddDesc_DebuggerMessage_2eproto();
+ }
+} static_descriptor_initializer_DebuggerMessage_2eproto_;
+
+
+// ===================================================================
+
+bool Message_Function_IsValid(int value) {
+ switch(value) {
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ case 13:
+ case 14:
+ case 15:
+ case 16:
+ case 17:
+ case 18:
+ case 19:
+ case 20:
+ case 21:
+ case 22:
+ case 23:
+ case 24:
+ case 25:
+ case 26:
+ case 27:
+ case 28:
+ case 29:
+ case 30:
+ case 31:
+ case 32:
+ case 33:
+ case 34:
+ case 35:
+ case 36:
+ case 37:
+ case 38:
+ case 39:
+ case 40:
+ case 41:
+ case 42:
+ case 43:
+ case 44:
+ case 45:
+ case 46:
+ case 47:
+ case 48:
+ case 49:
+ case 50:
+ case 51:
+ case 52:
+ case 53:
+ case 54:
+ case 55:
+ case 56:
+ case 57:
+ case 58:
+ case 59:
+ case 60:
+ case 61:
+ case 62:
+ case 63:
+ case 64:
+ case 65:
+ case 66:
+ case 67:
+ case 68:
+ case 69:
+ case 70:
+ case 71:
+ case 72:
+ case 73:
+ case 74:
+ case 75:
+ case 76:
+ case 77:
+ case 78:
+ case 79:
+ case 80:
+ case 81:
+ case 82:
+ case 83:
+ case 84:
+ case 85:
+ case 86:
+ case 87:
+ case 88:
+ case 89:
+ case 90:
+ case 91:
+ case 92:
+ case 93:
+ case 94:
+ case 95:
+ case 96:
+ case 97:
+ case 98:
+ case 99:
+ case 100:
+ case 101:
+ case 102:
+ case 103:
+ case 104:
+ case 105:
+ case 106:
+ case 107:
+ case 108:
+ case 109:
+ case 110:
+ case 111:
+ case 112:
+ case 113:
+ case 114:
+ case 115:
+ case 116:
+ case 117:
+ case 118:
+ case 119:
+ case 120:
+ case 121:
+ case 122:
+ case 123:
+ case 124:
+ case 125:
+ case 126:
+ case 127:
+ case 128:
+ case 129:
+ case 130:
+ case 131:
+ case 132:
+ case 133:
+ case 134:
+ case 135:
+ case 136:
+ case 137:
+ case 138:
+ case 139:
+ case 140:
+ case 141:
+ case 142:
+ case 143:
+ case 144:
+ case 145:
+ return true;
+ default:
+ return false;
+ }
+}
+
+#ifndef _MSC_VER
+const Message_Function Message::glActiveTexture;
+const Message_Function Message::glAttachShader;
+const Message_Function Message::glBindAttribLocation;
+const Message_Function Message::glBindBuffer;
+const Message_Function Message::glBindFramebuffer;
+const Message_Function Message::glBindRenderbuffer;
+const Message_Function Message::glBindTexture;
+const Message_Function Message::glBlendColor;
+const Message_Function Message::glBlendEquation;
+const Message_Function Message::glBlendEquationSeparate;
+const Message_Function Message::glBlendFunc;
+const Message_Function Message::glBlendFuncSeparate;
+const Message_Function Message::glBufferData;
+const Message_Function Message::glBufferSubData;
+const Message_Function Message::glCheckFramebufferStatus;
+const Message_Function Message::glClear;
+const Message_Function Message::glClearColor;
+const Message_Function Message::glClearDepthf;
+const Message_Function Message::glClearStencil;
+const Message_Function Message::glColorMask;
+const Message_Function Message::glCompileShader;
+const Message_Function Message::glCompressedTexImage2D;
+const Message_Function Message::glCompressedTexSubImage2D;
+const Message_Function Message::glCopyTexImage2D;
+const Message_Function Message::glCopyTexSubImage2D;
+const Message_Function Message::glCreateProgram;
+const Message_Function Message::glCreateShader;
+const Message_Function Message::glCullFace;
+const Message_Function Message::glDeleteBuffers;
+const Message_Function Message::glDeleteFramebuffers;
+const Message_Function Message::glDeleteProgram;
+const Message_Function Message::glDeleteRenderbuffers;
+const Message_Function Message::glDeleteShader;
+const Message_Function Message::glDeleteTextures;
+const Message_Function Message::glDepthFunc;
+const Message_Function Message::glDepthMask;
+const Message_Function Message::glDepthRangef;
+const Message_Function Message::glDetachShader;
+const Message_Function Message::glDisable;
+const Message_Function Message::glDisableVertexAttribArray;
+const Message_Function Message::glDrawArrays;
+const Message_Function Message::glDrawElements;
+const Message_Function Message::glEnable;
+const Message_Function Message::glEnableVertexAttribArray;
+const Message_Function Message::glFinish;
+const Message_Function Message::glFlush;
+const Message_Function Message::glFramebufferRenderbuffer;
+const Message_Function Message::glFramebufferTexture2D;
+const Message_Function Message::glFrontFace;
+const Message_Function Message::glGenBuffers;
+const Message_Function Message::glGenerateMipmap;
+const Message_Function Message::glGenFramebuffers;
+const Message_Function Message::glGenRenderbuffers;
+const Message_Function Message::glGenTextures;
+const Message_Function Message::glGetActiveAttrib;
+const Message_Function Message::glGetActiveUniform;
+const Message_Function Message::glGetAttachedShaders;
+const Message_Function Message::glGetAttribLocation;
+const Message_Function Message::glGetBooleanv;
+const Message_Function Message::glGetBufferParameteriv;
+const Message_Function Message::glGetError;
+const Message_Function Message::glGetFloatv;
+const Message_Function Message::glGetFramebufferAttachmentParameteriv;
+const Message_Function Message::glGetIntegerv;
+const Message_Function Message::glGetProgramiv;
+const Message_Function Message::glGetProgramInfoLog;
+const Message_Function Message::glGetRenderbufferParameteriv;
+const Message_Function Message::glGetShaderiv;
+const Message_Function Message::glGetShaderInfoLog;
+const Message_Function Message::glGetShaderPrecisionFormat;
+const Message_Function Message::glGetShaderSource;
+const Message_Function Message::glGetString;
+const Message_Function Message::glGetTexParameterfv;
+const Message_Function Message::glGetTexParameteriv;
+const Message_Function Message::glGetUniformfv;
+const Message_Function Message::glGetUniformiv;
+const Message_Function Message::glGetUniformLocation;
+const Message_Function Message::glGetVertexAttribfv;
+const Message_Function Message::glGetVertexAttribiv;
+const Message_Function Message::glGetVertexAttribPointerv;
+const Message_Function Message::glHint;
+const Message_Function Message::glIsBuffer;
+const Message_Function Message::glIsEnabled;
+const Message_Function Message::glIsFramebuffer;
+const Message_Function Message::glIsProgram;
+const Message_Function Message::glIsRenderbuffer;
+const Message_Function Message::glIsShader;
+const Message_Function Message::glIsTexture;
+const Message_Function Message::glLineWidth;
+const Message_Function Message::glLinkProgram;
+const Message_Function Message::glPixelStorei;
+const Message_Function Message::glPolygonOffset;
+const Message_Function Message::glReadPixels;
+const Message_Function Message::glReleaseShaderCompiler;
+const Message_Function Message::glRenderbufferStorage;
+const Message_Function Message::glSampleCoverage;
+const Message_Function Message::glScissor;
+const Message_Function Message::glShaderBinary;
+const Message_Function Message::glShaderSource;
+const Message_Function Message::glStencilFunc;
+const Message_Function Message::glStencilFuncSeparate;
+const Message_Function Message::glStencilMask;
+const Message_Function Message::glStencilMaskSeparate;
+const Message_Function Message::glStencilOp;
+const Message_Function Message::glStencilOpSeparate;
+const Message_Function Message::glTexImage2D;
+const Message_Function Message::glTexParameterf;
+const Message_Function Message::glTexParameterfv;
+const Message_Function Message::glTexParameteri;
+const Message_Function Message::glTexParameteriv;
+const Message_Function Message::glTexSubImage2D;
+const Message_Function Message::glUniform1f;
+const Message_Function Message::glUniform1fv;
+const Message_Function Message::glUniform1i;
+const Message_Function Message::glUniform1iv;
+const Message_Function Message::glUniform2f;
+const Message_Function Message::glUniform2fv;
+const Message_Function Message::glUniform2i;
+const Message_Function Message::glUniform2iv;
+const Message_Function Message::glUniform3f;
+const Message_Function Message::glUniform3fv;
+const Message_Function Message::glUniform3i;
+const Message_Function Message::glUniform3iv;
+const Message_Function Message::glUniform4f;
+const Message_Function Message::glUniform4fv;
+const Message_Function Message::glUniform4i;
+const Message_Function Message::glUniform4iv;
+const Message_Function Message::glUniformMatrix2fv;
+const Message_Function Message::glUniformMatrix3fv;
+const Message_Function Message::glUniformMatrix4fv;
+const Message_Function Message::glUseProgram;
+const Message_Function Message::glValidateProgram;
+const Message_Function Message::glVertexAttrib1f;
+const Message_Function Message::glVertexAttrib1fv;
+const Message_Function Message::glVertexAttrib2f;
+const Message_Function Message::glVertexAttrib2fv;
+const Message_Function Message::glVertexAttrib3f;
+const Message_Function Message::glVertexAttrib3fv;
+const Message_Function Message::glVertexAttrib4f;
+const Message_Function Message::glVertexAttrib4fv;
+const Message_Function Message::glVertexAttribPointer;
+const Message_Function Message::glViewport;
+const Message_Function Message::ACK;
+const Message_Function Message::NEG;
+const Message_Function Message::CONTINUE;
+const Message_Function Message::SKIP;
+const Message_Function Message::Function_MIN;
+const Message_Function Message::Function_MAX;
+const int Message::Function_ARRAYSIZE;
+#endif // _MSC_VER
+const ::std::string Message::_default_data_;
+#ifndef _MSC_VER
+const int Message::kContextIdFieldNumber;
+const int Message::kFunctionFieldNumber;
+const int Message::kHasNextMessageFieldNumber;
+const int Message::kExpectResponseFieldNumber;
+const int Message::kRetFieldNumber;
+const int Message::kArg0FieldNumber;
+const int Message::kArg1FieldNumber;
+const int Message::kArg2FieldNumber;
+const int Message::kArg3FieldNumber;
+const int Message::kArg4FieldNumber;
+const int Message::kArg5FieldNumber;
+const int Message::kArg6FieldNumber;
+const int Message::kArg7FieldNumber;
+const int Message::kArg8FieldNumber;
+const int Message::kDataFieldNumber;
+const int Message::kTimeFieldNumber;
+#endif // !_MSC_VER
+
+Message::Message()
+ : ::google::protobuf::MessageLite() {
+ SharedCtor();
+}
+
+void Message::InitAsDefaultInstance() {
+}
+
+Message::Message(const Message& from)
+ : ::google::protobuf::MessageLite() {
+ SharedCtor();
+ MergeFrom(from);
+}
+
+void Message::SharedCtor() {
+ _cached_size_ = 0;
+ context_id_ = 0;
+ function_ = 143;
+ has_next_message_ = false;
+ expect_response_ = false;
+ ret_ = 0;
+ arg0_ = 0;
+ arg1_ = 0;
+ arg2_ = 0;
+ arg3_ = 0;
+ arg4_ = 0;
+ arg5_ = 0;
+ arg6_ = 0;
+ arg7_ = 0;
+ arg8_ = 0;
+ data_ = const_cast< ::std::string*>(&_default_data_);
+ time_ = 0;
+ ::memset(_has_bits_, 0, sizeof(_has_bits_));
+}
+
+Message::~Message() {
+ SharedDtor();
+}
+
+void Message::SharedDtor() {
+ if (data_ != &_default_data_) {
+ delete data_;
+ }
+ if (this != default_instance_) {
+ }
+}
+
+void Message::SetCachedSize(int size) const {
+ GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+ _cached_size_ = size;
+ GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const Message& Message::default_instance() {
+ if (default_instance_ == NULL) protobuf_AddDesc_DebuggerMessage_2eproto(); return *default_instance_;
+}
+
+Message* Message::default_instance_ = NULL;
+
+Message* Message::New() const {
+ return new Message;
+}
+
+void Message::Clear() {
+ if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+ context_id_ = 0;
+ function_ = 143;
+ has_next_message_ = false;
+ expect_response_ = false;
+ ret_ = 0;
+ arg0_ = 0;
+ arg1_ = 0;
+ arg2_ = 0;
+ }
+ if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
+ arg3_ = 0;
+ arg4_ = 0;
+ arg5_ = 0;
+ arg6_ = 0;
+ arg7_ = 0;
+ arg8_ = 0;
+ if (_has_bit(14)) {
+ if (data_ != &_default_data_) {
+ data_->clear();
+ }
+ }
+ time_ = 0;
+ }
+ ::memset(_has_bits_, 0, sizeof(_has_bits_));
+}
+
+bool Message::MergePartialFromCodedStream(
+ ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
+ ::google::protobuf::uint32 tag;
+ while ((tag = input->ReadTag()) != 0) {
+ switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+ // required int32 context_id = 1;
+ case 1: {
+ if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+ ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+ DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+ ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+ input, &context_id_)));
+ _set_bit(0);
+ } else {
+ goto handle_uninterpreted;
+ }
+ if (input->ExpectTag(16)) goto parse_function;
+ break;
+ }
+
+ // required .GLESv2Debugger.Message.Function function = 2 [default = NEG];
+ case 2: {
+ if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+ ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+ parse_function:
+ int value;
+ DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+ int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+ input, &value)));
+ if (::GLESv2Debugger::Message_Function_IsValid(value)) {
+ set_function(static_cast< ::GLESv2Debugger::Message_Function >(value));
+ }
+ } else {
+ goto handle_uninterpreted;
+ }
+ if (input->ExpectTag(24)) goto parse_has_next_message;
+ break;
+ }
+
+ // required bool has_next_message = 3;
+ case 3: {
+ if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+ ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+ parse_has_next_message:
+ DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+ bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+ input, &has_next_message_)));
+ _set_bit(2);
+ } else {
+ goto handle_uninterpreted;
+ }
+ if (input->ExpectTag(32)) goto parse_expect_response;
+ break;
+ }
+
+ // required bool expect_response = 4;
+ case 4: {
+ if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+ ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+ parse_expect_response:
+ DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+ bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+ input, &expect_response_)));
+ _set_bit(3);
+ } else {
+ goto handle_uninterpreted;
+ }
+ if (input->ExpectTag(40)) goto parse_ret;
+ break;
+ }
+
+ // optional int32 ret = 5;
+ case 5: {
+ if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+ ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+ parse_ret:
+ DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+ ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+ input, &ret_)));
+ _set_bit(4);
+ } else {
+ goto handle_uninterpreted;
+ }
+ if (input->ExpectTag(48)) goto parse_arg0;
+ break;
+ }
+
+ // optional int32 arg0 = 6;
+ case 6: {
+ if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+ ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+ parse_arg0:
+ DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+ ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+ input, &arg0_)));
+ _set_bit(5);
+ } else {
+ goto handle_uninterpreted;
+ }
+ if (input->ExpectTag(56)) goto parse_arg1;
+ break;
+ }
+
+ // optional int32 arg1 = 7;
+ case 7: {
+ if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+ ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+ parse_arg1:
+ DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+ ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+ input, &arg1_)));
+ _set_bit(6);
+ } else {
+ goto handle_uninterpreted;
+ }
+ if (input->ExpectTag(64)) goto parse_arg2;
+ break;
+ }
+
+ // optional int32 arg2 = 8;
+ case 8: {
+ if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+ ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+ parse_arg2:
+ DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+ ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+ input, &arg2_)));
+ _set_bit(7);
+ } else {
+ goto handle_uninterpreted;
+ }
+ if (input->ExpectTag(72)) goto parse_arg3;
+ break;
+ }
+
+ // optional int32 arg3 = 9;
+ case 9: {
+ if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+ ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+ parse_arg3:
+ DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+ ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+ input, &arg3_)));
+ _set_bit(8);
+ } else {
+ goto handle_uninterpreted;
+ }
+ if (input->ExpectTag(82)) goto parse_data;
+ break;
+ }
+
+ // optional bytes data = 10;
+ case 10: {
+ if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+ ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+ parse_data:
+ DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
+ input, this->mutable_data()));
+ } else {
+ goto handle_uninterpreted;
+ }
+ if (input->ExpectTag(93)) goto parse_time;
+ break;
+ }
+
+ // optional float time = 11;
+ case 11: {
+ if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+ ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
+ parse_time:
+ DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+ float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
+ input, &time_)));
+ _set_bit(15);
+ } else {
+ goto handle_uninterpreted;
+ }
+ if (input->ExpectTag(128)) goto parse_arg4;
+ break;
+ }
+
+ // optional int32 arg4 = 16;
+ case 16: {
+ if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+ ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+ parse_arg4:
+ DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+ ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+ input, &arg4_)));
+ _set_bit(9);
+ } else {
+ goto handle_uninterpreted;
+ }
+ if (input->ExpectTag(136)) goto parse_arg5;
+ break;
+ }
+
+ // optional int32 arg5 = 17;
+ case 17: {
+ if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+ ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+ parse_arg5:
+ DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+ ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+ input, &arg5_)));
+ _set_bit(10);
+ } else {
+ goto handle_uninterpreted;
+ }
+ if (input->ExpectTag(144)) goto parse_arg6;
+ break;
+ }
+
+ // optional int32 arg6 = 18;
+ case 18: {
+ if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+ ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+ parse_arg6:
+ DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+ ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+ input, &arg6_)));
+ _set_bit(11);
+ } else {
+ goto handle_uninterpreted;
+ }
+ if (input->ExpectTag(152)) goto parse_arg7;
+ break;
+ }
+
+ // optional int32 arg7 = 19;
+ case 19: {
+ if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+ ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+ parse_arg7:
+ DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+ ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+ input, &arg7_)));
+ _set_bit(12);
+ } else {
+ goto handle_uninterpreted;
+ }
+ if (input->ExpectTag(160)) goto parse_arg8;
+ break;
+ }
+
+ // optional int32 arg8 = 20;
+ case 20: {
+ if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+ ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+ parse_arg8:
+ DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+ ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+ input, &arg8_)));
+ _set_bit(13);
+ } else {
+ goto handle_uninterpreted;
+ }
+ if (input->ExpectAtEnd()) return true;
+ break;
+ }
+
+ default: {
+ handle_uninterpreted:
+ if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+ ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
+ return true;
+ }
+ DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
+ break;
+ }
+ }
+ }
+ return true;
+#undef DO_
+}
+
+void Message::SerializeWithCachedSizes(
+ ::google::protobuf::io::CodedOutputStream* output) const {
+ // required int32 context_id = 1;
+ if (_has_bit(0)) {
+ ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->context_id(), output);
+ }
+
+ // required .GLESv2Debugger.Message.Function function = 2 [default = NEG];
+ if (_has_bit(1)) {
+ ::google::protobuf::internal::WireFormatLite::WriteEnum(
+ 2, this->function(), output);
+ }
+
+ // required bool has_next_message = 3;
+ if (_has_bit(2)) {
+ ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->has_next_message(), output);
+ }
+
+ // required bool expect_response = 4;
+ if (_has_bit(3)) {
+ ::google::protobuf::internal::WireFormatLite::WriteBool(4, this->expect_response(), output);
+ }
+
+ // optional int32 ret = 5;
+ if (_has_bit(4)) {
+ ::google::protobuf::internal::WireFormatLite::WriteInt32(5, this->ret(), output);
+ }
+
+ // optional int32 arg0 = 6;
+ if (_has_bit(5)) {
+ ::google::protobuf::internal::WireFormatLite::WriteInt32(6, this->arg0(), output);
+ }
+
+ // optional int32 arg1 = 7;
+ if (_has_bit(6)) {
+ ::google::protobuf::internal::WireFormatLite::WriteInt32(7, this->arg1(), output);
+ }
+
+ // optional int32 arg2 = 8;
+ if (_has_bit(7)) {
+ ::google::protobuf::internal::WireFormatLite::WriteInt32(8, this->arg2(), output);
+ }
+
+ // optional int32 arg3 = 9;
+ if (_has_bit(8)) {
+ ::google::protobuf::internal::WireFormatLite::WriteInt32(9, this->arg3(), output);
+ }
+
+ // optional bytes data = 10;
+ if (_has_bit(14)) {
+ ::google::protobuf::internal::WireFormatLite::WriteBytes(
+ 10, this->data(), output);
+ }
+
+ // optional float time = 11;
+ if (_has_bit(15)) {
+ ::google::protobuf::internal::WireFormatLite::WriteFloat(11, this->time(), output);
+ }
+
+ // optional int32 arg4 = 16;
+ if (_has_bit(9)) {
+ ::google::protobuf::internal::WireFormatLite::WriteInt32(16, this->arg4(), output);
+ }
+
+ // optional int32 arg5 = 17;
+ if (_has_bit(10)) {
+ ::google::protobuf::internal::WireFormatLite::WriteInt32(17, this->arg5(), output);
+ }
+
+ // optional int32 arg6 = 18;
+ if (_has_bit(11)) {
+ ::google::protobuf::internal::WireFormatLite::WriteInt32(18, this->arg6(), output);
+ }
+
+ // optional int32 arg7 = 19;
+ if (_has_bit(12)) {
+ ::google::protobuf::internal::WireFormatLite::WriteInt32(19, this->arg7(), output);
+ }
+
+ // optional int32 arg8 = 20;
+ if (_has_bit(13)) {
+ ::google::protobuf::internal::WireFormatLite::WriteInt32(20, this->arg8(), output);
+ }
+
+}
+
+int Message::ByteSize() const {
+ int total_size = 0;
+
+ if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+ // required int32 context_id = 1;
+ if (has_context_id()) {
+ total_size += 1 +
+ ::google::protobuf::internal::WireFormatLite::Int32Size(
+ this->context_id());
+ }
+
+ // required .GLESv2Debugger.Message.Function function = 2 [default = NEG];
+ if (has_function()) {
+ total_size += 1 +
+ ::google::protobuf::internal::WireFormatLite::EnumSize(this->function());
+ }
+
+ // required bool has_next_message = 3;
+ if (has_has_next_message()) {
+ total_size += 1 + 1;
+ }
+
+ // required bool expect_response = 4;
+ if (has_expect_response()) {
+ total_size += 1 + 1;
+ }
+
+ // optional int32 ret = 5;
+ if (has_ret()) {
+ total_size += 1 +
+ ::google::protobuf::internal::WireFormatLite::Int32Size(
+ this->ret());
+ }
+
+ // optional int32 arg0 = 6;
+ if (has_arg0()) {
+ total_size += 1 +
+ ::google::protobuf::internal::WireFormatLite::Int32Size(
+ this->arg0());
+ }
+
+ // optional int32 arg1 = 7;
+ if (has_arg1()) {
+ total_size += 1 +
+ ::google::protobuf::internal::WireFormatLite::Int32Size(
+ this->arg1());
+ }
+
+ // optional int32 arg2 = 8;
+ if (has_arg2()) {
+ total_size += 1 +
+ ::google::protobuf::internal::WireFormatLite::Int32Size(
+ this->arg2());
+ }
+
+ }
+ if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
+ // optional int32 arg3 = 9;
+ if (has_arg3()) {
+ total_size += 1 +
+ ::google::protobuf::internal::WireFormatLite::Int32Size(
+ this->arg3());
+ }
+
+ // optional int32 arg4 = 16;
+ if (has_arg4()) {
+ total_size += 2 +
+ ::google::protobuf::internal::WireFormatLite::Int32Size(
+ this->arg4());
+ }
+
+ // optional int32 arg5 = 17;
+ if (has_arg5()) {
+ total_size += 2 +
+ ::google::protobuf::internal::WireFormatLite::Int32Size(
+ this->arg5());
+ }
+
+ // optional int32 arg6 = 18;
+ if (has_arg6()) {
+ total_size += 2 +
+ ::google::protobuf::internal::WireFormatLite::Int32Size(
+ this->arg6());
+ }
+
+ // optional int32 arg7 = 19;
+ if (has_arg7()) {
+ total_size += 2 +
+ ::google::protobuf::internal::WireFormatLite::Int32Size(
+ this->arg7());
+ }
+
+ // optional int32 arg8 = 20;
+ if (has_arg8()) {
+ total_size += 2 +
+ ::google::protobuf::internal::WireFormatLite::Int32Size(
+ this->arg8());
+ }
+
+ // optional bytes data = 10;
+ if (has_data()) {
+ total_size += 1 +
+ ::google::protobuf::internal::WireFormatLite::BytesSize(
+ this->data());
+ }
+
+ // optional float time = 11;
+ if (has_time()) {
+ total_size += 1 + 4;
+ }
+
+ }
+ GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+ _cached_size_ = total_size;
+ GOOGLE_SAFE_CONCURRENT_WRITES_END();
+ return total_size;
+}
+
+void Message::CheckTypeAndMergeFrom(
+ const ::google::protobuf::MessageLite& from) {
+ MergeFrom(*::google::protobuf::down_cast<const Message*>(&from));
+}
+
+void Message::MergeFrom(const Message& from) {
+ GOOGLE_CHECK_NE(&from, this);
+ if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+ if (from._has_bit(0)) {
+ set_context_id(from.context_id());
+ }
+ if (from._has_bit(1)) {
+ set_function(from.function());
+ }
+ if (from._has_bit(2)) {
+ set_has_next_message(from.has_next_message());
+ }
+ if (from._has_bit(3)) {
+ set_expect_response(from.expect_response());
+ }
+ if (from._has_bit(4)) {
+ set_ret(from.ret());
+ }
+ if (from._has_bit(5)) {
+ set_arg0(from.arg0());
+ }
+ if (from._has_bit(6)) {
+ set_arg1(from.arg1());
+ }
+ if (from._has_bit(7)) {
+ set_arg2(from.arg2());
+ }
+ }
+ if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) {
+ if (from._has_bit(8)) {
+ set_arg3(from.arg3());
+ }
+ if (from._has_bit(9)) {
+ set_arg4(from.arg4());
+ }
+ if (from._has_bit(10)) {
+ set_arg5(from.arg5());
+ }
+ if (from._has_bit(11)) {
+ set_arg6(from.arg6());
+ }
+ if (from._has_bit(12)) {
+ set_arg7(from.arg7());
+ }
+ if (from._has_bit(13)) {
+ set_arg8(from.arg8());
+ }
+ if (from._has_bit(14)) {
+ set_data(from.data());
+ }
+ if (from._has_bit(15)) {
+ set_time(from.time());
+ }
+ }
+}
+
+void Message::CopyFrom(const Message& from) {
+ if (&from == this) return;
+ Clear();
+ MergeFrom(from);
+}
+
+bool Message::IsInitialized() const {
+ if ((_has_bits_[0] & 0x0000000f) != 0x0000000f) return false;
+
+ return true;
+}
+
+void Message::Swap(Message* other) {
+ if (other != this) {
+ std::swap(context_id_, other->context_id_);
+ std::swap(function_, other->function_);
+ std::swap(has_next_message_, other->has_next_message_);
+ std::swap(expect_response_, other->expect_response_);
+ std::swap(ret_, other->ret_);
+ std::swap(arg0_, other->arg0_);
+ std::swap(arg1_, other->arg1_);
+ std::swap(arg2_, other->arg2_);
+ std::swap(arg3_, other->arg3_);
+ std::swap(arg4_, other->arg4_);
+ std::swap(arg5_, other->arg5_);
+ std::swap(arg6_, other->arg6_);
+ std::swap(arg7_, other->arg7_);
+ std::swap(arg8_, other->arg8_);
+ std::swap(data_, other->data_);
+ std::swap(time_, other->time_);
+ std::swap(_has_bits_[0], other->_has_bits_[0]);
+ std::swap(_cached_size_, other->_cached_size_);
+ }
+}
+
+::std::string Message::GetTypeName() const {
+ return "GLESv2Debugger.Message";
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+} // namespace GLESv2Debugger
+
+// @@protoc_insertion_point(global_scope)
diff --git a/opengl/libs/GLES2_dbg/src/DebuggerMessage.pb.h b/opengl/libs/GLES2_dbg/src/DebuggerMessage.pb.h
new file mode 100644
index 0000000..e9b4142
--- /dev/null
+++ b/opengl/libs/GLES2_dbg/src/DebuggerMessage.pb.h
@@ -0,0 +1,844 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: DebuggerMessage.proto
+
+#ifndef PROTOBUF_DebuggerMessage_2eproto__INCLUDED
+#define PROTOBUF_DebuggerMessage_2eproto__INCLUDED
+
+#include <string>
+
+#include <google/protobuf/stubs/common.h>
+
+#if GOOGLE_PROTOBUF_VERSION < 2003000
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 2003000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include <google/protobuf/generated_message_util.h>
+#include <google/protobuf/repeated_field.h>
+#include <google/protobuf/extension_set.h>
+// @@protoc_insertion_point(includes)
+
+namespace GLESv2Debugger {
+
+// Internal implementation detail -- do not call these.
+void protobuf_AddDesc_DebuggerMessage_2eproto();
+void protobuf_AssignDesc_DebuggerMessage_2eproto();
+void protobuf_ShutdownFile_DebuggerMessage_2eproto();
+
+class Message;
+
+enum Message_Function {
+ Message_Function_glActiveTexture = 0,
+ Message_Function_glAttachShader = 1,
+ Message_Function_glBindAttribLocation = 2,
+ Message_Function_glBindBuffer = 3,
+ Message_Function_glBindFramebuffer = 4,
+ Message_Function_glBindRenderbuffer = 5,
+ Message_Function_glBindTexture = 6,
+ Message_Function_glBlendColor = 7,
+ Message_Function_glBlendEquation = 8,
+ Message_Function_glBlendEquationSeparate = 9,
+ Message_Function_glBlendFunc = 10,
+ Message_Function_glBlendFuncSeparate = 11,
+ Message_Function_glBufferData = 12,
+ Message_Function_glBufferSubData = 13,
+ Message_Function_glCheckFramebufferStatus = 14,
+ Message_Function_glClear = 15,
+ Message_Function_glClearColor = 16,
+ Message_Function_glClearDepthf = 17,
+ Message_Function_glClearStencil = 18,
+ Message_Function_glColorMask = 19,
+ Message_Function_glCompileShader = 20,
+ Message_Function_glCompressedTexImage2D = 21,
+ Message_Function_glCompressedTexSubImage2D = 22,
+ Message_Function_glCopyTexImage2D = 23,
+ Message_Function_glCopyTexSubImage2D = 24,
+ Message_Function_glCreateProgram = 25,
+ Message_Function_glCreateShader = 26,
+ Message_Function_glCullFace = 27,
+ Message_Function_glDeleteBuffers = 28,
+ Message_Function_glDeleteFramebuffers = 29,
+ Message_Function_glDeleteProgram = 30,
+ Message_Function_glDeleteRenderbuffers = 31,
+ Message_Function_glDeleteShader = 32,
+ Message_Function_glDeleteTextures = 33,
+ Message_Function_glDepthFunc = 34,
+ Message_Function_glDepthMask = 35,
+ Message_Function_glDepthRangef = 36,
+ Message_Function_glDetachShader = 37,
+ Message_Function_glDisable = 38,
+ Message_Function_glDisableVertexAttribArray = 39,
+ Message_Function_glDrawArrays = 40,
+ Message_Function_glDrawElements = 41,
+ Message_Function_glEnable = 42,
+ Message_Function_glEnableVertexAttribArray = 43,
+ Message_Function_glFinish = 44,
+ Message_Function_glFlush = 45,
+ Message_Function_glFramebufferRenderbuffer = 46,
+ Message_Function_glFramebufferTexture2D = 47,
+ Message_Function_glFrontFace = 48,
+ Message_Function_glGenBuffers = 49,
+ Message_Function_glGenerateMipmap = 50,
+ Message_Function_glGenFramebuffers = 51,
+ Message_Function_glGenRenderbuffers = 52,
+ Message_Function_glGenTextures = 53,
+ Message_Function_glGetActiveAttrib = 54,
+ Message_Function_glGetActiveUniform = 55,
+ Message_Function_glGetAttachedShaders = 56,
+ Message_Function_glGetAttribLocation = 57,
+ Message_Function_glGetBooleanv = 58,
+ Message_Function_glGetBufferParameteriv = 59,
+ Message_Function_glGetError = 60,
+ Message_Function_glGetFloatv = 61,
+ Message_Function_glGetFramebufferAttachmentParameteriv = 62,
+ Message_Function_glGetIntegerv = 63,
+ Message_Function_glGetProgramiv = 64,
+ Message_Function_glGetProgramInfoLog = 65,
+ Message_Function_glGetRenderbufferParameteriv = 66,
+ Message_Function_glGetShaderiv = 67,
+ Message_Function_glGetShaderInfoLog = 68,
+ Message_Function_glGetShaderPrecisionFormat = 69,
+ Message_Function_glGetShaderSource = 70,
+ Message_Function_glGetString = 71,
+ Message_Function_glGetTexParameterfv = 72,
+ Message_Function_glGetTexParameteriv = 73,
+ Message_Function_glGetUniformfv = 74,
+ Message_Function_glGetUniformiv = 75,
+ Message_Function_glGetUniformLocation = 76,
+ Message_Function_glGetVertexAttribfv = 77,
+ Message_Function_glGetVertexAttribiv = 78,
+ Message_Function_glGetVertexAttribPointerv = 79,
+ Message_Function_glHint = 80,
+ Message_Function_glIsBuffer = 81,
+ Message_Function_glIsEnabled = 82,
+ Message_Function_glIsFramebuffer = 83,
+ Message_Function_glIsProgram = 84,
+ Message_Function_glIsRenderbuffer = 85,
+ Message_Function_glIsShader = 86,
+ Message_Function_glIsTexture = 87,
+ Message_Function_glLineWidth = 88,
+ Message_Function_glLinkProgram = 89,
+ Message_Function_glPixelStorei = 90,
+ Message_Function_glPolygonOffset = 91,
+ Message_Function_glReadPixels = 92,
+ Message_Function_glReleaseShaderCompiler = 93,
+ Message_Function_glRenderbufferStorage = 94,
+ Message_Function_glSampleCoverage = 95,
+ Message_Function_glScissor = 96,
+ Message_Function_glShaderBinary = 97,
+ Message_Function_glShaderSource = 98,
+ Message_Function_glStencilFunc = 99,
+ Message_Function_glStencilFuncSeparate = 100,
+ Message_Function_glStencilMask = 101,
+ Message_Function_glStencilMaskSeparate = 102,
+ Message_Function_glStencilOp = 103,
+ Message_Function_glStencilOpSeparate = 104,
+ Message_Function_glTexImage2D = 105,
+ Message_Function_glTexParameterf = 106,
+ Message_Function_glTexParameterfv = 107,
+ Message_Function_glTexParameteri = 108,
+ Message_Function_glTexParameteriv = 109,
+ Message_Function_glTexSubImage2D = 110,
+ Message_Function_glUniform1f = 111,
+ Message_Function_glUniform1fv = 112,
+ Message_Function_glUniform1i = 113,
+ Message_Function_glUniform1iv = 114,
+ Message_Function_glUniform2f = 115,
+ Message_Function_glUniform2fv = 116,
+ Message_Function_glUniform2i = 117,
+ Message_Function_glUniform2iv = 118,
+ Message_Function_glUniform3f = 119,
+ Message_Function_glUniform3fv = 120,
+ Message_Function_glUniform3i = 121,
+ Message_Function_glUniform3iv = 122,
+ Message_Function_glUniform4f = 123,
+ Message_Function_glUniform4fv = 124,
+ Message_Function_glUniform4i = 125,
+ Message_Function_glUniform4iv = 126,
+ Message_Function_glUniformMatrix2fv = 127,
+ Message_Function_glUniformMatrix3fv = 128,
+ Message_Function_glUniformMatrix4fv = 129,
+ Message_Function_glUseProgram = 130,
+ Message_Function_glValidateProgram = 131,
+ Message_Function_glVertexAttrib1f = 132,
+ Message_Function_glVertexAttrib1fv = 133,
+ Message_Function_glVertexAttrib2f = 134,
+ Message_Function_glVertexAttrib2fv = 135,
+ Message_Function_glVertexAttrib3f = 136,
+ Message_Function_glVertexAttrib3fv = 137,
+ Message_Function_glVertexAttrib4f = 138,
+ Message_Function_glVertexAttrib4fv = 139,
+ Message_Function_glVertexAttribPointer = 140,
+ Message_Function_glViewport = 141,
+ Message_Function_ACK = 142,
+ Message_Function_NEG = 143,
+ Message_Function_CONTINUE = 144,
+ Message_Function_SKIP = 145
+};
+bool Message_Function_IsValid(int value);
+const Message_Function Message_Function_Function_MIN = Message_Function_glActiveTexture;
+const Message_Function Message_Function_Function_MAX = Message_Function_SKIP;
+const int Message_Function_Function_ARRAYSIZE = Message_Function_Function_MAX + 1;
+
+// ===================================================================
+
+class Message : public ::google::protobuf::MessageLite {
+ public:
+ Message();
+ virtual ~Message();
+
+ Message(const Message& from);
+
+ inline Message& operator=(const Message& from) {
+ CopyFrom(from);
+ return *this;
+ }
+
+ static const Message& default_instance();
+
+ void Swap(Message* other);
+
+ // implements Message ----------------------------------------------
+
+ Message* New() const;
+ void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
+ void CopyFrom(const Message& from);
+ void MergeFrom(const Message& from);
+ void Clear();
+ bool IsInitialized() const;
+
+ int ByteSize() const;
+ bool MergePartialFromCodedStream(
+ ::google::protobuf::io::CodedInputStream* input);
+ void SerializeWithCachedSizes(
+ ::google::protobuf::io::CodedOutputStream* output) const;
+ int GetCachedSize() const { return _cached_size_; }
+ private:
+ void SharedCtor();
+ void SharedDtor();
+ void SetCachedSize(int size) const;
+ public:
+
+ ::std::string GetTypeName() const;
+
+ // nested types ----------------------------------------------------
+
+ typedef Message_Function Function;
+ static const Function glActiveTexture = Message_Function_glActiveTexture;
+ static const Function glAttachShader = Message_Function_glAttachShader;
+ static const Function glBindAttribLocation = Message_Function_glBindAttribLocation;
+ static const Function glBindBuffer = Message_Function_glBindBuffer;
+ static const Function glBindFramebuffer = Message_Function_glBindFramebuffer;
+ static const Function glBindRenderbuffer = Message_Function_glBindRenderbuffer;
+ static const Function glBindTexture = Message_Function_glBindTexture;
+ static const Function glBlendColor = Message_Function_glBlendColor;
+ static const Function glBlendEquation = Message_Function_glBlendEquation;
+ static const Function glBlendEquationSeparate = Message_Function_glBlendEquationSeparate;
+ static const Function glBlendFunc = Message_Function_glBlendFunc;
+ static const Function glBlendFuncSeparate = Message_Function_glBlendFuncSeparate;
+ static const Function glBufferData = Message_Function_glBufferData;
+ static const Function glBufferSubData = Message_Function_glBufferSubData;
+ static const Function glCheckFramebufferStatus = Message_Function_glCheckFramebufferStatus;
+ static const Function glClear = Message_Function_glClear;
+ static const Function glClearColor = Message_Function_glClearColor;
+ static const Function glClearDepthf = Message_Function_glClearDepthf;
+ static const Function glClearStencil = Message_Function_glClearStencil;
+ static const Function glColorMask = Message_Function_glColorMask;
+ static const Function glCompileShader = Message_Function_glCompileShader;
+ static const Function glCompressedTexImage2D = Message_Function_glCompressedTexImage2D;
+ static const Function glCompressedTexSubImage2D = Message_Function_glCompressedTexSubImage2D;
+ static const Function glCopyTexImage2D = Message_Function_glCopyTexImage2D;
+ static const Function glCopyTexSubImage2D = Message_Function_glCopyTexSubImage2D;
+ static const Function glCreateProgram = Message_Function_glCreateProgram;
+ static const Function glCreateShader = Message_Function_glCreateShader;
+ static const Function glCullFace = Message_Function_glCullFace;
+ static const Function glDeleteBuffers = Message_Function_glDeleteBuffers;
+ static const Function glDeleteFramebuffers = Message_Function_glDeleteFramebuffers;
+ static const Function glDeleteProgram = Message_Function_glDeleteProgram;
+ static const Function glDeleteRenderbuffers = Message_Function_glDeleteRenderbuffers;
+ static const Function glDeleteShader = Message_Function_glDeleteShader;
+ static const Function glDeleteTextures = Message_Function_glDeleteTextures;
+ static const Function glDepthFunc = Message_Function_glDepthFunc;
+ static const Function glDepthMask = Message_Function_glDepthMask;
+ static const Function glDepthRangef = Message_Function_glDepthRangef;
+ static const Function glDetachShader = Message_Function_glDetachShader;
+ static const Function glDisable = Message_Function_glDisable;
+ static const Function glDisableVertexAttribArray = Message_Function_glDisableVertexAttribArray;
+ static const Function glDrawArrays = Message_Function_glDrawArrays;
+ static const Function glDrawElements = Message_Function_glDrawElements;
+ static const Function glEnable = Message_Function_glEnable;
+ static const Function glEnableVertexAttribArray = Message_Function_glEnableVertexAttribArray;
+ static const Function glFinish = Message_Function_glFinish;
+ static const Function glFlush = Message_Function_glFlush;
+ static const Function glFramebufferRenderbuffer = Message_Function_glFramebufferRenderbuffer;
+ static const Function glFramebufferTexture2D = Message_Function_glFramebufferTexture2D;
+ static const Function glFrontFace = Message_Function_glFrontFace;
+ static const Function glGenBuffers = Message_Function_glGenBuffers;
+ static const Function glGenerateMipmap = Message_Function_glGenerateMipmap;
+ static const Function glGenFramebuffers = Message_Function_glGenFramebuffers;
+ static const Function glGenRenderbuffers = Message_Function_glGenRenderbuffers;
+ static const Function glGenTextures = Message_Function_glGenTextures;
+ static const Function glGetActiveAttrib = Message_Function_glGetActiveAttrib;
+ static const Function glGetActiveUniform = Message_Function_glGetActiveUniform;
+ static const Function glGetAttachedShaders = Message_Function_glGetAttachedShaders;
+ static const Function glGetAttribLocation = Message_Function_glGetAttribLocation;
+ static const Function glGetBooleanv = Message_Function_glGetBooleanv;
+ static const Function glGetBufferParameteriv = Message_Function_glGetBufferParameteriv;
+ static const Function glGetError = Message_Function_glGetError;
+ static const Function glGetFloatv = Message_Function_glGetFloatv;
+ static const Function glGetFramebufferAttachmentParameteriv = Message_Function_glGetFramebufferAttachmentParameteriv;
+ static const Function glGetIntegerv = Message_Function_glGetIntegerv;
+ static const Function glGetProgramiv = Message_Function_glGetProgramiv;
+ static const Function glGetProgramInfoLog = Message_Function_glGetProgramInfoLog;
+ static const Function glGetRenderbufferParameteriv = Message_Function_glGetRenderbufferParameteriv;
+ static const Function glGetShaderiv = Message_Function_glGetShaderiv;
+ static const Function glGetShaderInfoLog = Message_Function_glGetShaderInfoLog;
+ static const Function glGetShaderPrecisionFormat = Message_Function_glGetShaderPrecisionFormat;
+ static const Function glGetShaderSource = Message_Function_glGetShaderSource;
+ static const Function glGetString = Message_Function_glGetString;
+ static const Function glGetTexParameterfv = Message_Function_glGetTexParameterfv;
+ static const Function glGetTexParameteriv = Message_Function_glGetTexParameteriv;
+ static const Function glGetUniformfv = Message_Function_glGetUniformfv;
+ static const Function glGetUniformiv = Message_Function_glGetUniformiv;
+ static const Function glGetUniformLocation = Message_Function_glGetUniformLocation;
+ static const Function glGetVertexAttribfv = Message_Function_glGetVertexAttribfv;
+ static const Function glGetVertexAttribiv = Message_Function_glGetVertexAttribiv;
+ static const Function glGetVertexAttribPointerv = Message_Function_glGetVertexAttribPointerv;
+ static const Function glHint = Message_Function_glHint;
+ static const Function glIsBuffer = Message_Function_glIsBuffer;
+ static const Function glIsEnabled = Message_Function_glIsEnabled;
+ static const Function glIsFramebuffer = Message_Function_glIsFramebuffer;
+ static const Function glIsProgram = Message_Function_glIsProgram;
+ static const Function glIsRenderbuffer = Message_Function_glIsRenderbuffer;
+ static const Function glIsShader = Message_Function_glIsShader;
+ static const Function glIsTexture = Message_Function_glIsTexture;
+ static const Function glLineWidth = Message_Function_glLineWidth;
+ static const Function glLinkProgram = Message_Function_glLinkProgram;
+ static const Function glPixelStorei = Message_Function_glPixelStorei;
+ static const Function glPolygonOffset = Message_Function_glPolygonOffset;
+ static const Function glReadPixels = Message_Function_glReadPixels;
+ static const Function glReleaseShaderCompiler = Message_Function_glReleaseShaderCompiler;
+ static const Function glRenderbufferStorage = Message_Function_glRenderbufferStorage;
+ static const Function glSampleCoverage = Message_Function_glSampleCoverage;
+ static const Function glScissor = Message_Function_glScissor;
+ static const Function glShaderBinary = Message_Function_glShaderBinary;
+ static const Function glShaderSource = Message_Function_glShaderSource;
+ static const Function glStencilFunc = Message_Function_glStencilFunc;
+ static const Function glStencilFuncSeparate = Message_Function_glStencilFuncSeparate;
+ static const Function glStencilMask = Message_Function_glStencilMask;
+ static const Function glStencilMaskSeparate = Message_Function_glStencilMaskSeparate;
+ static const Function glStencilOp = Message_Function_glStencilOp;
+ static const Function glStencilOpSeparate = Message_Function_glStencilOpSeparate;
+ static const Function glTexImage2D = Message_Function_glTexImage2D;
+ static const Function glTexParameterf = Message_Function_glTexParameterf;
+ static const Function glTexParameterfv = Message_Function_glTexParameterfv;
+ static const Function glTexParameteri = Message_Function_glTexParameteri;
+ static const Function glTexParameteriv = Message_Function_glTexParameteriv;
+ static const Function glTexSubImage2D = Message_Function_glTexSubImage2D;
+ static const Function glUniform1f = Message_Function_glUniform1f;
+ static const Function glUniform1fv = Message_Function_glUniform1fv;
+ static const Function glUniform1i = Message_Function_glUniform1i;
+ static const Function glUniform1iv = Message_Function_glUniform1iv;
+ static const Function glUniform2f = Message_Function_glUniform2f;
+ static const Function glUniform2fv = Message_Function_glUniform2fv;
+ static const Function glUniform2i = Message_Function_glUniform2i;
+ static const Function glUniform2iv = Message_Function_glUniform2iv;
+ static const Function glUniform3f = Message_Function_glUniform3f;
+ static const Function glUniform3fv = Message_Function_glUniform3fv;
+ static const Function glUniform3i = Message_Function_glUniform3i;
+ static const Function glUniform3iv = Message_Function_glUniform3iv;
+ static const Function glUniform4f = Message_Function_glUniform4f;
+ static const Function glUniform4fv = Message_Function_glUniform4fv;
+ static const Function glUniform4i = Message_Function_glUniform4i;
+ static const Function glUniform4iv = Message_Function_glUniform4iv;
+ static const Function glUniformMatrix2fv = Message_Function_glUniformMatrix2fv;
+ static const Function glUniformMatrix3fv = Message_Function_glUniformMatrix3fv;
+ static const Function glUniformMatrix4fv = Message_Function_glUniformMatrix4fv;
+ static const Function glUseProgram = Message_Function_glUseProgram;
+ static const Function glValidateProgram = Message_Function_glValidateProgram;
+ static const Function glVertexAttrib1f = Message_Function_glVertexAttrib1f;
+ static const Function glVertexAttrib1fv = Message_Function_glVertexAttrib1fv;
+ static const Function glVertexAttrib2f = Message_Function_glVertexAttrib2f;
+ static const Function glVertexAttrib2fv = Message_Function_glVertexAttrib2fv;
+ static const Function glVertexAttrib3f = Message_Function_glVertexAttrib3f;
+ static const Function glVertexAttrib3fv = Message_Function_glVertexAttrib3fv;
+ static const Function glVertexAttrib4f = Message_Function_glVertexAttrib4f;
+ static const Function glVertexAttrib4fv = Message_Function_glVertexAttrib4fv;
+ static const Function glVertexAttribPointer = Message_Function_glVertexAttribPointer;
+ static const Function glViewport = Message_Function_glViewport;
+ static const Function ACK = Message_Function_ACK;
+ static const Function NEG = Message_Function_NEG;
+ static const Function CONTINUE = Message_Function_CONTINUE;
+ static const Function SKIP = Message_Function_SKIP;
+ static inline bool Function_IsValid(int value) {
+ return Message_Function_IsValid(value);
+ }
+ static const Function Function_MIN =
+ Message_Function_Function_MIN;
+ static const Function Function_MAX =
+ Message_Function_Function_MAX;
+ static const int Function_ARRAYSIZE =
+ Message_Function_Function_ARRAYSIZE;
+
+ // accessors -------------------------------------------------------
+
+ // required int32 context_id = 1;
+ inline bool has_context_id() const;
+ inline void clear_context_id();
+ static const int kContextIdFieldNumber = 1;
+ inline ::google::protobuf::int32 context_id() const;
+ inline void set_context_id(::google::protobuf::int32 value);
+
+ // required .GLESv2Debugger.Message.Function function = 2 [default = NEG];
+ inline bool has_function() const;
+ inline void clear_function();
+ static const int kFunctionFieldNumber = 2;
+ inline ::GLESv2Debugger::Message_Function function() const;
+ inline void set_function(::GLESv2Debugger::Message_Function value);
+
+ // required bool has_next_message = 3;
+ inline bool has_has_next_message() const;
+ inline void clear_has_next_message();
+ static const int kHasNextMessageFieldNumber = 3;
+ inline bool has_next_message() const;
+ inline void set_has_next_message(bool value);
+
+ // required bool expect_response = 4;
+ inline bool has_expect_response() const;
+ inline void clear_expect_response();
+ static const int kExpectResponseFieldNumber = 4;
+ inline bool expect_response() const;
+ inline void set_expect_response(bool value);
+
+ // optional int32 ret = 5;
+ inline bool has_ret() const;
+ inline void clear_ret();
+ static const int kRetFieldNumber = 5;
+ inline ::google::protobuf::int32 ret() const;
+ inline void set_ret(::google::protobuf::int32 value);
+
+ // optional int32 arg0 = 6;
+ inline bool has_arg0() const;
+ inline void clear_arg0();
+ static const int kArg0FieldNumber = 6;
+ inline ::google::protobuf::int32 arg0() const;
+ inline void set_arg0(::google::protobuf::int32 value);
+
+ // optional int32 arg1 = 7;
+ inline bool has_arg1() const;
+ inline void clear_arg1();
+ static const int kArg1FieldNumber = 7;
+ inline ::google::protobuf::int32 arg1() const;
+ inline void set_arg1(::google::protobuf::int32 value);
+
+ // optional int32 arg2 = 8;
+ inline bool has_arg2() const;
+ inline void clear_arg2();
+ static const int kArg2FieldNumber = 8;
+ inline ::google::protobuf::int32 arg2() const;
+ inline void set_arg2(::google::protobuf::int32 value);
+
+ // optional int32 arg3 = 9;
+ inline bool has_arg3() const;
+ inline void clear_arg3();
+ static const int kArg3FieldNumber = 9;
+ inline ::google::protobuf::int32 arg3() const;
+ inline void set_arg3(::google::protobuf::int32 value);
+
+ // optional int32 arg4 = 16;
+ inline bool has_arg4() const;
+ inline void clear_arg4();
+ static const int kArg4FieldNumber = 16;
+ inline ::google::protobuf::int32 arg4() const;
+ inline void set_arg4(::google::protobuf::int32 value);
+
+ // optional int32 arg5 = 17;
+ inline bool has_arg5() const;
+ inline void clear_arg5();
+ static const int kArg5FieldNumber = 17;
+ inline ::google::protobuf::int32 arg5() const;
+ inline void set_arg5(::google::protobuf::int32 value);
+
+ // optional int32 arg6 = 18;
+ inline bool has_arg6() const;
+ inline void clear_arg6();
+ static const int kArg6FieldNumber = 18;
+ inline ::google::protobuf::int32 arg6() const;
+ inline void set_arg6(::google::protobuf::int32 value);
+
+ // optional int32 arg7 = 19;
+ inline bool has_arg7() const;
+ inline void clear_arg7();
+ static const int kArg7FieldNumber = 19;
+ inline ::google::protobuf::int32 arg7() const;
+ inline void set_arg7(::google::protobuf::int32 value);
+
+ // optional int32 arg8 = 20;
+ inline bool has_arg8() const;
+ inline void clear_arg8();
+ static const int kArg8FieldNumber = 20;
+ inline ::google::protobuf::int32 arg8() const;
+ inline void set_arg8(::google::protobuf::int32 value);
+
+ // optional bytes data = 10;
+ inline bool has_data() const;
+ inline void clear_data();
+ static const int kDataFieldNumber = 10;
+ inline const ::std::string& data() const;
+ inline void set_data(const ::std::string& value);
+ inline void set_data(const char* value);
+ inline void set_data(const void* value, size_t size);
+ inline ::std::string* mutable_data();
+
+ // optional float time = 11;
+ inline bool has_time() const;
+ inline void clear_time();
+ static const int kTimeFieldNumber = 11;
+ inline float time() const;
+ inline void set_time(float value);
+
+ // @@protoc_insertion_point(class_scope:GLESv2Debugger.Message)
+ private:
+ mutable int _cached_size_;
+
+ ::google::protobuf::int32 context_id_;
+ int function_;
+ bool has_next_message_;
+ bool expect_response_;
+ ::google::protobuf::int32 ret_;
+ ::google::protobuf::int32 arg0_;
+ ::google::protobuf::int32 arg1_;
+ ::google::protobuf::int32 arg2_;
+ ::google::protobuf::int32 arg3_;
+ ::google::protobuf::int32 arg4_;
+ ::google::protobuf::int32 arg5_;
+ ::google::protobuf::int32 arg6_;
+ ::google::protobuf::int32 arg7_;
+ ::google::protobuf::int32 arg8_;
+ ::std::string* data_;
+ static const ::std::string _default_data_;
+ float time_;
+ friend void protobuf_AddDesc_DebuggerMessage_2eproto();
+ friend void protobuf_AssignDesc_DebuggerMessage_2eproto();
+ friend void protobuf_ShutdownFile_DebuggerMessage_2eproto();
+
+ ::google::protobuf::uint32 _has_bits_[(16 + 31) / 32];
+
+ // WHY DOES & HAVE LOWER PRECEDENCE THAN != !?
+ inline bool _has_bit(int index) const {
+ return (_has_bits_[index / 32] & (1u << (index % 32))) != 0;
+ }
+ inline void _set_bit(int index) {
+ _has_bits_[index / 32] |= (1u << (index % 32));
+ }
+ inline void _clear_bit(int index) {
+ _has_bits_[index / 32] &= ~(1u << (index % 32));
+ }
+
+ void InitAsDefaultInstance();
+ static Message* default_instance_;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+// Message
+
+// required int32 context_id = 1;
+inline bool Message::has_context_id() const {
+ return _has_bit(0);
+}
+inline void Message::clear_context_id() {
+ context_id_ = 0;
+ _clear_bit(0);
+}
+inline ::google::protobuf::int32 Message::context_id() const {
+ return context_id_;
+}
+inline void Message::set_context_id(::google::protobuf::int32 value) {
+ _set_bit(0);
+ context_id_ = value;
+}
+
+// required .GLESv2Debugger.Message.Function function = 2 [default = NEG];
+inline bool Message::has_function() const {
+ return _has_bit(1);
+}
+inline void Message::clear_function() {
+ function_ = 143;
+ _clear_bit(1);
+}
+inline ::GLESv2Debugger::Message_Function Message::function() const {
+ return static_cast< ::GLESv2Debugger::Message_Function >(function_);
+}
+inline void Message::set_function(::GLESv2Debugger::Message_Function value) {
+ GOOGLE_DCHECK(::GLESv2Debugger::Message_Function_IsValid(value));
+ _set_bit(1);
+ function_ = value;
+}
+
+// required bool has_next_message = 3;
+inline bool Message::has_has_next_message() const {
+ return _has_bit(2);
+}
+inline void Message::clear_has_next_message() {
+ has_next_message_ = false;
+ _clear_bit(2);
+}
+inline bool Message::has_next_message() const {
+ return has_next_message_;
+}
+inline void Message::set_has_next_message(bool value) {
+ _set_bit(2);
+ has_next_message_ = value;
+}
+
+// required bool expect_response = 4;
+inline bool Message::has_expect_response() const {
+ return _has_bit(3);
+}
+inline void Message::clear_expect_response() {
+ expect_response_ = false;
+ _clear_bit(3);
+}
+inline bool Message::expect_response() const {
+ return expect_response_;
+}
+inline void Message::set_expect_response(bool value) {
+ _set_bit(3);
+ expect_response_ = value;
+}
+
+// optional int32 ret = 5;
+inline bool Message::has_ret() const {
+ return _has_bit(4);
+}
+inline void Message::clear_ret() {
+ ret_ = 0;
+ _clear_bit(4);
+}
+inline ::google::protobuf::int32 Message::ret() const {
+ return ret_;
+}
+inline void Message::set_ret(::google::protobuf::int32 value) {
+ _set_bit(4);
+ ret_ = value;
+}
+
+// optional int32 arg0 = 6;
+inline bool Message::has_arg0() const {
+ return _has_bit(5);
+}
+inline void Message::clear_arg0() {
+ arg0_ = 0;
+ _clear_bit(5);
+}
+inline ::google::protobuf::int32 Message::arg0() const {
+ return arg0_;
+}
+inline void Message::set_arg0(::google::protobuf::int32 value) {
+ _set_bit(5);
+ arg0_ = value;
+}
+
+// optional int32 arg1 = 7;
+inline bool Message::has_arg1() const {
+ return _has_bit(6);
+}
+inline void Message::clear_arg1() {
+ arg1_ = 0;
+ _clear_bit(6);
+}
+inline ::google::protobuf::int32 Message::arg1() const {
+ return arg1_;
+}
+inline void Message::set_arg1(::google::protobuf::int32 value) {
+ _set_bit(6);
+ arg1_ = value;
+}
+
+// optional int32 arg2 = 8;
+inline bool Message::has_arg2() const {
+ return _has_bit(7);
+}
+inline void Message::clear_arg2() {
+ arg2_ = 0;
+ _clear_bit(7);
+}
+inline ::google::protobuf::int32 Message::arg2() const {
+ return arg2_;
+}
+inline void Message::set_arg2(::google::protobuf::int32 value) {
+ _set_bit(7);
+ arg2_ = value;
+}
+
+// optional int32 arg3 = 9;
+inline bool Message::has_arg3() const {
+ return _has_bit(8);
+}
+inline void Message::clear_arg3() {
+ arg3_ = 0;
+ _clear_bit(8);
+}
+inline ::google::protobuf::int32 Message::arg3() const {
+ return arg3_;
+}
+inline void Message::set_arg3(::google::protobuf::int32 value) {
+ _set_bit(8);
+ arg3_ = value;
+}
+
+// optional int32 arg4 = 16;
+inline bool Message::has_arg4() const {
+ return _has_bit(9);
+}
+inline void Message::clear_arg4() {
+ arg4_ = 0;
+ _clear_bit(9);
+}
+inline ::google::protobuf::int32 Message::arg4() const {
+ return arg4_;
+}
+inline void Message::set_arg4(::google::protobuf::int32 value) {
+ _set_bit(9);
+ arg4_ = value;
+}
+
+// optional int32 arg5 = 17;
+inline bool Message::has_arg5() const {
+ return _has_bit(10);
+}
+inline void Message::clear_arg5() {
+ arg5_ = 0;
+ _clear_bit(10);
+}
+inline ::google::protobuf::int32 Message::arg5() const {
+ return arg5_;
+}
+inline void Message::set_arg5(::google::protobuf::int32 value) {
+ _set_bit(10);
+ arg5_ = value;
+}
+
+// optional int32 arg6 = 18;
+inline bool Message::has_arg6() const {
+ return _has_bit(11);
+}
+inline void Message::clear_arg6() {
+ arg6_ = 0;
+ _clear_bit(11);
+}
+inline ::google::protobuf::int32 Message::arg6() const {
+ return arg6_;
+}
+inline void Message::set_arg6(::google::protobuf::int32 value) {
+ _set_bit(11);
+ arg6_ = value;
+}
+
+// optional int32 arg7 = 19;
+inline bool Message::has_arg7() const {
+ return _has_bit(12);
+}
+inline void Message::clear_arg7() {
+ arg7_ = 0;
+ _clear_bit(12);
+}
+inline ::google::protobuf::int32 Message::arg7() const {
+ return arg7_;
+}
+inline void Message::set_arg7(::google::protobuf::int32 value) {
+ _set_bit(12);
+ arg7_ = value;
+}
+
+// optional int32 arg8 = 20;
+inline bool Message::has_arg8() const {
+ return _has_bit(13);
+}
+inline void Message::clear_arg8() {
+ arg8_ = 0;
+ _clear_bit(13);
+}
+inline ::google::protobuf::int32 Message::arg8() const {
+ return arg8_;
+}
+inline void Message::set_arg8(::google::protobuf::int32 value) {
+ _set_bit(13);
+ arg8_ = value;
+}
+
+// optional bytes data = 10;
+inline bool Message::has_data() const {
+ return _has_bit(14);
+}
+inline void Message::clear_data() {
+ if (data_ != &_default_data_) {
+ data_->clear();
+ }
+ _clear_bit(14);
+}
+inline const ::std::string& Message::data() const {
+ return *data_;
+}
+inline void Message::set_data(const ::std::string& value) {
+ _set_bit(14);
+ if (data_ == &_default_data_) {
+ data_ = new ::std::string;
+ }
+ data_->assign(value);
+}
+inline void Message::set_data(const char* value) {
+ _set_bit(14);
+ if (data_ == &_default_data_) {
+ data_ = new ::std::string;
+ }
+ data_->assign(value);
+}
+inline void Message::set_data(const void* value, size_t size) {
+ _set_bit(14);
+ if (data_ == &_default_data_) {
+ data_ = new ::std::string;
+ }
+ data_->assign(reinterpret_cast<const char*>(value), size);
+}
+inline ::std::string* Message::mutable_data() {
+ _set_bit(14);
+ if (data_ == &_default_data_) {
+ data_ = new ::std::string;
+ }
+ return data_;
+}
+
+// optional float time = 11;
+inline bool Message::has_time() const {
+ return _has_bit(15);
+}
+inline void Message::clear_time() {
+ time_ = 0;
+ _clear_bit(15);
+}
+inline float Message::time() const {
+ return time_;
+}
+inline void Message::set_time(float value) {
+ _set_bit(15);
+ time_ = value;
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+} // namespace GLESv2Debugger
+
+// @@protoc_insertion_point(global_scope)
+
+#endif // PROTOBUF_DebuggerMessage_2eproto__INCLUDED
diff --git a/opengl/libs/GLES2_dbg/src/api.cpp b/opengl/libs/GLES2_dbg/src/api.cpp
new file mode 100644
index 0000000..b2b8ec0
--- /dev/null
+++ b/opengl/libs/GLES2_dbg/src/api.cpp
@@ -0,0 +1,5730 @@
+// auto generated by generate_api_cpp.py
+
+#include "src/header.h"
+
+template<typename T> static int ToInt(const T & t) { STATIC_ASSERT(sizeof(T) == sizeof(int), bitcast); return (int &)t; }
+
+template<typename T> static T FromInt(const int & t) { STATIC_ASSERT(sizeof(T) == sizeof(int), bitcast); return (T &)t; }
+
+void Debug_glActiveTexture(GLenum texture)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glActiveTexture);
+ msg.set_arg0(texture);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glActiveTexture(texture);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glActiveTexture);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glAttachShader(GLuint program, GLuint shader)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glAttachShader);
+ msg.set_arg0(program);
+ msg.set_arg1(shader);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glAttachShader(program, shader);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glAttachShader);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glBindAttribLocation(GLuint program, GLuint index, const GLchar* name)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glBindAttribLocation);
+ msg.set_arg0(program);
+ msg.set_arg1(index);
+ msg.set_arg2(ToInt(name));
+ std::string data;
+ // FIXME: check for pointer usage
+ data.reserve(strlen(name) * sizeof(GLchar));
+ for (unsigned i = 0; i < (strlen(name)); i++)
+ data.append((const char *)(name + i), sizeof(*name));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glBindAttribLocation(program, index, name);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glBindAttribLocation);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glBindBuffer(GLenum target, GLuint buffer)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glBindBuffer);
+ msg.set_arg0(target);
+ msg.set_arg1(buffer);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glBindBuffer(target, buffer);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glBindBuffer);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glBindFramebuffer(GLenum target, GLuint framebuffer)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glBindFramebuffer);
+ msg.set_arg0(target);
+ msg.set_arg1(framebuffer);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glBindFramebuffer(target, framebuffer);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glBindFramebuffer);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glBindRenderbuffer(GLenum target, GLuint renderbuffer)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glBindRenderbuffer);
+ msg.set_arg0(target);
+ msg.set_arg1(renderbuffer);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glBindRenderbuffer(target, renderbuffer);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glBindRenderbuffer);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glBindTexture(GLenum target, GLuint texture)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glBindTexture);
+ msg.set_arg0(target);
+ msg.set_arg1(texture);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glBindTexture(target, texture);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glBindTexture);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glBlendColor);
+ msg.set_arg0(ToInt(red));
+ msg.set_arg1(ToInt(green));
+ msg.set_arg2(ToInt(blue));
+ msg.set_arg3(ToInt(alpha));
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glBlendColor(red, green, blue, alpha);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glBlendColor);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glBlendEquation( GLenum mode )
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glBlendEquation);
+ msg.set_arg0(mode);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glBlendEquation(mode);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glBlendEquation);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glBlendEquationSeparate);
+ msg.set_arg0(modeRGB);
+ msg.set_arg1(modeAlpha);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glBlendEquationSeparate(modeRGB, modeAlpha);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glBlendEquationSeparate);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glBlendFunc(GLenum sfactor, GLenum dfactor)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glBlendFunc);
+ msg.set_arg0(sfactor);
+ msg.set_arg1(dfactor);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glBlendFunc(sfactor, dfactor);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glBlendFunc);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glBlendFuncSeparate);
+ msg.set_arg0(srcRGB);
+ msg.set_arg1(dstRGB);
+ msg.set_arg2(srcAlpha);
+ msg.set_arg3(dstAlpha);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glBlendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glBlendFuncSeparate);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: this function has pointers, it should be hand written
+void Debug_glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glBufferData);
+ msg.set_arg0(target);
+ msg.set_arg1(size);
+ msg.set_arg2(ToInt(data));
+ msg.set_arg3(usage);
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glBufferData(target, size, data, usage);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glBufferData);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: this function has pointers, it should be hand written
+void Debug_glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glBufferSubData);
+ msg.set_arg0(target);
+ msg.set_arg1(offset);
+ msg.set_arg2(size);
+ msg.set_arg3(ToInt(data));
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glBufferSubData(target, offset, size, data);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glBufferSubData);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+GLenum Debug_glCheckFramebufferStatus(GLenum target)
+{
+ GLenum ret = 0;
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glCheckFramebufferStatus);
+ msg.set_arg0(target);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ ret = _c->glCheckFramebufferStatus(target);
+ msg.set_ret(ToInt(ret));
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glCheckFramebufferStatus);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ if (cmd.has_ret())
+ ret = FromInt<GLenum>(cmd.ret());
+ return ret;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glClear(GLbitfield mask)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glClear);
+ msg.set_arg0(mask);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glClear(mask);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glClear);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glClearColor);
+ msg.set_arg0(ToInt(red));
+ msg.set_arg1(ToInt(green));
+ msg.set_arg2(ToInt(blue));
+ msg.set_arg3(ToInt(alpha));
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glClearColor(red, green, blue, alpha);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glClearColor);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glClearDepthf(GLclampf depth)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glClearDepthf);
+ msg.set_arg0(ToInt(depth));
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glClearDepthf(depth);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glClearDepthf);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glClearStencil(GLint s)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glClearStencil);
+ msg.set_arg0(s);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glClearStencil(s);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glClearStencil);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glColorMask);
+ msg.set_arg0(red);
+ msg.set_arg1(green);
+ msg.set_arg2(blue);
+ msg.set_arg3(alpha);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glColorMask(red, green, blue, alpha);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glColorMask);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glCompileShader(GLuint shader)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glCompileShader);
+ msg.set_arg0(shader);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glCompileShader(shader);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glCompileShader);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: this function has pointers, it should be hand written
+void Debug_glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glCompressedTexImage2D);
+ msg.set_arg0(target);
+ msg.set_arg1(level);
+ msg.set_arg2(internalformat);
+ msg.set_arg3(width);
+ msg.set_arg4(height);
+ msg.set_arg5(border);
+ msg.set_arg6(imageSize);
+ msg.set_arg7(ToInt(data));
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glCompressedTexImage2D);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: this function has pointers, it should be hand written
+void Debug_glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glCompressedTexSubImage2D);
+ msg.set_arg0(target);
+ msg.set_arg1(level);
+ msg.set_arg2(xoffset);
+ msg.set_arg3(yoffset);
+ msg.set_arg4(width);
+ msg.set_arg5(height);
+ msg.set_arg6(format);
+ msg.set_arg7(imageSize);
+ msg.set_arg8(ToInt(data));
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glCompressedTexSubImage2D);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glCopyTexImage2D);
+ msg.set_arg0(target);
+ msg.set_arg1(level);
+ msg.set_arg2(internalformat);
+ msg.set_arg3(x);
+ msg.set_arg4(y);
+ msg.set_arg5(width);
+ msg.set_arg6(height);
+ msg.set_arg7(border);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glCopyTexImage2D(target, level, internalformat, x, y, width, height, border);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glCopyTexImage2D);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glCopyTexSubImage2D);
+ msg.set_arg0(target);
+ msg.set_arg1(level);
+ msg.set_arg2(xoffset);
+ msg.set_arg3(yoffset);
+ msg.set_arg4(x);
+ msg.set_arg5(y);
+ msg.set_arg6(width);
+ msg.set_arg7(height);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glCopyTexSubImage2D);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+GLuint Debug_glCreateProgram(void)
+{
+ GLuint ret = 0;
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glCreateProgram);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ ret = _c->glCreateProgram();
+ msg.set_ret(ToInt(ret));
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glCreateProgram);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ if (cmd.has_ret())
+ ret = FromInt<GLuint>(cmd.ret());
+ return ret;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+GLuint Debug_glCreateShader(GLenum type)
+{
+ GLuint ret = 0;
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glCreateShader);
+ msg.set_arg0(type);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ ret = _c->glCreateShader(type);
+ msg.set_ret(ToInt(ret));
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glCreateShader);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ if (cmd.has_ret())
+ ret = FromInt<GLuint>(cmd.ret());
+ return ret;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glCullFace(GLenum mode)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glCullFace);
+ msg.set_arg0(mode);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glCullFace(mode);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glCullFace);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glDeleteBuffers(GLsizei n, const GLuint* buffers)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glDeleteBuffers);
+ msg.set_arg0(n);
+ msg.set_arg1(ToInt(buffers));
+ std::string data;
+ // FIXME: check for pointer usage
+ data.reserve(n * sizeof(GLuint));
+ for (unsigned i = 0; i < (n); i++)
+ data.append((const char *)(buffers + i), sizeof(*buffers));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glDeleteBuffers(n, buffers);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glDeleteBuffers);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glDeleteFramebuffers);
+ msg.set_arg0(n);
+ msg.set_arg1(ToInt(framebuffers));
+ std::string data;
+ // FIXME: check for pointer usage
+ data.reserve(n * sizeof(GLuint));
+ for (unsigned i = 0; i < (n); i++)
+ data.append((const char *)(framebuffers + i), sizeof(*framebuffers));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glDeleteFramebuffers(n, framebuffers);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glDeleteFramebuffers);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glDeleteProgram(GLuint program)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glDeleteProgram);
+ msg.set_arg0(program);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glDeleteProgram(program);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glDeleteProgram);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glDeleteRenderbuffers);
+ msg.set_arg0(n);
+ msg.set_arg1(ToInt(renderbuffers));
+ std::string data;
+ // FIXME: check for pointer usage
+ data.reserve(n * sizeof(GLuint));
+ for (unsigned i = 0; i < (n); i++)
+ data.append((const char *)(renderbuffers + i), sizeof(*renderbuffers));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glDeleteRenderbuffers(n, renderbuffers);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glDeleteRenderbuffers);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glDeleteShader(GLuint shader)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glDeleteShader);
+ msg.set_arg0(shader);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glDeleteShader(shader);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glDeleteShader);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glDeleteTextures(GLsizei n, const GLuint* textures)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glDeleteTextures);
+ msg.set_arg0(n);
+ msg.set_arg1(ToInt(textures));
+ std::string data;
+ // FIXME: check for pointer usage
+ data.reserve(n * sizeof(GLuint));
+ for (unsigned i = 0; i < (n); i++)
+ data.append((const char *)(textures + i), sizeof(*textures));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glDeleteTextures(n, textures);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glDeleteTextures);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glDepthFunc(GLenum func)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glDepthFunc);
+ msg.set_arg0(func);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glDepthFunc(func);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glDepthFunc);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glDepthMask(GLboolean flag)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glDepthMask);
+ msg.set_arg0(flag);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glDepthMask(flag);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glDepthMask);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glDepthRangef(GLclampf zNear, GLclampf zFar)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glDepthRangef);
+ msg.set_arg0(ToInt(zNear));
+ msg.set_arg1(ToInt(zFar));
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glDepthRangef(zNear, zFar);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glDepthRangef);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glDetachShader(GLuint program, GLuint shader)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glDetachShader);
+ msg.set_arg0(program);
+ msg.set_arg1(shader);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glDetachShader(program, shader);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glDetachShader);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glDisable(GLenum cap)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glDisable);
+ msg.set_arg0(cap);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glDisable(cap);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glDisable);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glDisableVertexAttribArray(GLuint index)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glDisableVertexAttribArray);
+ msg.set_arg0(index);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glDisableVertexAttribArray(index);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glDisableVertexAttribArray);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glDrawArrays(GLenum mode, GLint first, GLsizei count)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glDrawArrays);
+ msg.set_arg0(mode);
+ msg.set_arg1(first);
+ msg.set_arg2(count);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glDrawArrays(mode, first, count);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glDrawArrays);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: this function has pointers, it should be hand written
+void Debug_glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glDrawElements);
+ msg.set_arg0(mode);
+ msg.set_arg1(count);
+ msg.set_arg2(type);
+ msg.set_arg3(ToInt(indices));
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glDrawElements(mode, count, type, indices);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glDrawElements);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glEnable(GLenum cap)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glEnable);
+ msg.set_arg0(cap);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glEnable(cap);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glEnable);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glEnableVertexAttribArray(GLuint index)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glEnableVertexAttribArray);
+ msg.set_arg0(index);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glEnableVertexAttribArray(index);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glEnableVertexAttribArray);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glFinish(void)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glFinish);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glFinish();
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glFinish);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glFlush(void)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glFlush);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glFlush();
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glFlush);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glFramebufferRenderbuffer);
+ msg.set_arg0(target);
+ msg.set_arg1(attachment);
+ msg.set_arg2(renderbuffertarget);
+ msg.set_arg3(renderbuffer);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glFramebufferRenderbuffer);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glFramebufferTexture2D);
+ msg.set_arg0(target);
+ msg.set_arg1(attachment);
+ msg.set_arg2(textarget);
+ msg.set_arg3(texture);
+ msg.set_arg4(level);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glFramebufferTexture2D(target, attachment, textarget, texture, level);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glFramebufferTexture2D);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glFrontFace(GLenum mode)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glFrontFace);
+ msg.set_arg0(mode);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glFrontFace(mode);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glFrontFace);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glGenBuffers(GLsizei n, GLuint* buffers)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glGenBuffers);
+ msg.set_arg0(n);
+ msg.set_arg1(ToInt(buffers));
+ std::string data;
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glGenBuffers(n, buffers);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glGenBuffers);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ data.reserve(n * sizeof(GLuint));
+ for (unsigned i = 0; i < (n); i++)
+ data.append((const char *)(buffers + i), sizeof(*buffers));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glGenerateMipmap(GLenum target)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glGenerateMipmap);
+ msg.set_arg0(target);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glGenerateMipmap(target);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glGenerateMipmap);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glGenFramebuffers(GLsizei n, GLuint* framebuffers)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glGenFramebuffers);
+ msg.set_arg0(n);
+ msg.set_arg1(ToInt(framebuffers));
+ std::string data;
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glGenFramebuffers(n, framebuffers);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glGenFramebuffers);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ data.reserve(n * sizeof(GLuint));
+ for (unsigned i = 0; i < (n); i++)
+ data.append((const char *)(framebuffers + i), sizeof(*framebuffers));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glGenRenderbuffers(GLsizei n, GLuint* renderbuffers)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glGenRenderbuffers);
+ msg.set_arg0(n);
+ msg.set_arg1(ToInt(renderbuffers));
+ std::string data;
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glGenRenderbuffers(n, renderbuffers);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glGenRenderbuffers);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ data.reserve(n * sizeof(GLuint));
+ for (unsigned i = 0; i < (n); i++)
+ data.append((const char *)(renderbuffers + i), sizeof(*renderbuffers));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glGenTextures(GLsizei n, GLuint* textures)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glGenTextures);
+ msg.set_arg0(n);
+ msg.set_arg1(ToInt(textures));
+ std::string data;
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glGenTextures(n, textures);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glGenTextures);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ data.reserve(n * sizeof(GLuint));
+ for (unsigned i = 0; i < (n); i++)
+ data.append((const char *)(textures + i), sizeof(*textures));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: this function has pointers, it should be hand written
+void Debug_glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetActiveAttrib);
+ msg.set_arg0(program);
+ msg.set_arg1(index);
+ msg.set_arg2(bufsize);
+ msg.set_arg3(ToInt(length));
+ msg.set_arg4(ToInt(size));
+ msg.set_arg5(ToInt(type));
+ msg.set_arg6(ToInt(name));
+ std::string data;
+ // FIXME: check for pointer usage
+ data.reserve(strlen(name) * sizeof(GLchar));
+ for (unsigned i = 0; i < (strlen(name)); i++)
+ data.append((const char *)(name + i), sizeof(*name));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glGetActiveAttrib(program, index, bufsize, length, size, type, name);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetActiveAttrib);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: this function has pointers, it should be hand written
+void Debug_glGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetActiveUniform);
+ msg.set_arg0(program);
+ msg.set_arg1(index);
+ msg.set_arg2(bufsize);
+ msg.set_arg3(ToInt(length));
+ msg.set_arg4(ToInt(size));
+ msg.set_arg5(ToInt(type));
+ msg.set_arg6(ToInt(name));
+ std::string data;
+ // FIXME: check for pointer usage
+ data.reserve(strlen(name) * sizeof(GLchar));
+ for (unsigned i = 0; i < (strlen(name)); i++)
+ data.append((const char *)(name + i), sizeof(*name));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glGetActiveUniform(program, index, bufsize, length, size, type, name);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetActiveUniform);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: this function has pointers, it should be hand written
+void Debug_glGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetAttachedShaders);
+ msg.set_arg0(program);
+ msg.set_arg1(maxcount);
+ msg.set_arg2(ToInt(count));
+ msg.set_arg3(ToInt(shaders));
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glGetAttachedShaders(program, maxcount, count, shaders);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetAttachedShaders);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+int Debug_glGetAttribLocation(GLuint program, const GLchar* name)
+{
+ int ret = 0;
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetAttribLocation);
+ msg.set_arg0(program);
+ msg.set_arg1(ToInt(name));
+ std::string data;
+ // FIXME: check for pointer usage
+ data.reserve(strlen(name) * sizeof(GLchar));
+ for (unsigned i = 0; i < (strlen(name)); i++)
+ data.append((const char *)(name + i), sizeof(*name));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ ret = _c->glGetAttribLocation(program, name);
+ msg.set_ret(ToInt(ret));
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetAttribLocation);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ if (cmd.has_ret())
+ ret = FromInt<int>(cmd.ret());
+ return ret;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: this function has pointers, it should be hand written
+void Debug_glGetBooleanv(GLenum pname, GLboolean* params)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetBooleanv);
+ msg.set_arg0(pname);
+ msg.set_arg1(ToInt(params));
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glGetBooleanv(pname, params);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetBooleanv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: this function has pointers, it should be hand written
+void Debug_glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetBufferParameteriv);
+ msg.set_arg0(target);
+ msg.set_arg1(pname);
+ msg.set_arg2(ToInt(params));
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glGetBufferParameteriv(target, pname, params);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetBufferParameteriv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+GLenum Debug_glGetError(void)
+{
+ GLenum ret = 0;
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetError);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ ret = _c->glGetError();
+ msg.set_ret(ToInt(ret));
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetError);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ if (cmd.has_ret())
+ ret = FromInt<GLenum>(cmd.ret());
+ return ret;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: this function has pointers, it should be hand written
+void Debug_glGetFloatv(GLenum pname, GLfloat* params)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetFloatv);
+ msg.set_arg0(pname);
+ msg.set_arg1(ToInt(params));
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glGetFloatv(pname, params);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetFloatv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: this function has pointers, it should be hand written
+void Debug_glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetFramebufferAttachmentParameteriv);
+ msg.set_arg0(target);
+ msg.set_arg1(attachment);
+ msg.set_arg2(pname);
+ msg.set_arg3(ToInt(params));
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glGetFramebufferAttachmentParameteriv(target, attachment, pname, params);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetFramebufferAttachmentParameteriv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: this function has pointers, it should be hand written
+void Debug_glGetIntegerv(GLenum pname, GLint* params)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetIntegerv);
+ msg.set_arg0(pname);
+ msg.set_arg1(ToInt(params));
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glGetIntegerv(pname, params);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetIntegerv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glGetProgramiv(GLuint program, GLenum pname, GLint* params)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetProgramiv);
+ msg.set_arg0(program);
+ msg.set_arg1(pname);
+ msg.set_arg2(ToInt(params));
+ std::string data;
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glGetProgramiv(program, pname, params);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetProgramiv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ data.reserve(1 * sizeof(GLint));
+ for (unsigned i = 0; i < (1); i++)
+ data.append((const char *)(params + i), sizeof(*params));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: this function has pointers, it should be hand written
+void Debug_glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetProgramInfoLog);
+ msg.set_arg0(program);
+ msg.set_arg1(bufsize);
+ msg.set_arg2(ToInt(length));
+ msg.set_arg3(ToInt(infolog));
+ std::string data;
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glGetProgramInfoLog(program, bufsize, length, infolog);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetProgramInfoLog);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ data.reserve(strlen(infolog) * sizeof(GLchar));
+ for (unsigned i = 0; i < (strlen(infolog)); i++)
+ data.append((const char *)(infolog + i), sizeof(*infolog));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: this function has pointers, it should be hand written
+void Debug_glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetRenderbufferParameteriv);
+ msg.set_arg0(target);
+ msg.set_arg1(pname);
+ msg.set_arg2(ToInt(params));
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glGetRenderbufferParameteriv(target, pname, params);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetRenderbufferParameteriv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glGetShaderiv(GLuint shader, GLenum pname, GLint* params)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetShaderiv);
+ msg.set_arg0(shader);
+ msg.set_arg1(pname);
+ msg.set_arg2(ToInt(params));
+ std::string data;
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glGetShaderiv(shader, pname, params);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetShaderiv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ data.reserve(1 * sizeof(GLint));
+ for (unsigned i = 0; i < (1); i++)
+ data.append((const char *)(params + i), sizeof(*params));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: this function has pointers, it should be hand written
+void Debug_glGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetShaderInfoLog);
+ msg.set_arg0(shader);
+ msg.set_arg1(bufsize);
+ msg.set_arg2(ToInt(length));
+ msg.set_arg3(ToInt(infolog));
+ std::string data;
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glGetShaderInfoLog(shader, bufsize, length, infolog);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetShaderInfoLog);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ data.reserve(strlen(infolog) * sizeof(GLchar));
+ for (unsigned i = 0; i < (strlen(infolog)); i++)
+ data.append((const char *)(infolog + i), sizeof(*infolog));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: this function has pointers, it should be hand written
+void Debug_glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetShaderPrecisionFormat);
+ msg.set_arg0(shadertype);
+ msg.set_arg1(precisiontype);
+ msg.set_arg2(ToInt(range));
+ msg.set_arg3(ToInt(precision));
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glGetShaderPrecisionFormat(shadertype, precisiontype, range, precision);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetShaderPrecisionFormat);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: this function has pointers, it should be hand written
+void Debug_glGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetShaderSource);
+ msg.set_arg0(shader);
+ msg.set_arg1(bufsize);
+ msg.set_arg2(ToInt(length));
+ msg.set_arg3(ToInt(source));
+ std::string data;
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glGetShaderSource(shader, bufsize, length, source);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetShaderSource);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ data.reserve(strlen(source) * sizeof(GLchar));
+ for (unsigned i = 0; i < (strlen(source)); i++)
+ data.append((const char *)(source + i), sizeof(*source));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: this function has pointers, it should be hand written
+const GLubyte* Debug_glGetString(GLenum name)
+{
+ const GLubyte* ret = 0;
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetString);
+ msg.set_arg0(name);
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ ret = _c->glGetString(name);
+ msg.set_ret(ToInt(ret));
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetString);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ if (cmd.has_ret())
+ ret = FromInt<const GLubyte*>(cmd.ret());
+ return ret;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: this function has pointers, it should be hand written
+void Debug_glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetTexParameterfv);
+ msg.set_arg0(target);
+ msg.set_arg1(pname);
+ msg.set_arg2(ToInt(params));
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glGetTexParameterfv(target, pname, params);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetTexParameterfv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: this function has pointers, it should be hand written
+void Debug_glGetTexParameteriv(GLenum target, GLenum pname, GLint* params)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetTexParameteriv);
+ msg.set_arg0(target);
+ msg.set_arg1(pname);
+ msg.set_arg2(ToInt(params));
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glGetTexParameteriv(target, pname, params);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetTexParameteriv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: this function has pointers, it should be hand written
+void Debug_glGetUniformfv(GLuint program, GLint location, GLfloat* params)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetUniformfv);
+ msg.set_arg0(program);
+ msg.set_arg1(location);
+ msg.set_arg2(ToInt(params));
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glGetUniformfv(program, location, params);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetUniformfv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: this function has pointers, it should be hand written
+void Debug_glGetUniformiv(GLuint program, GLint location, GLint* params)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetUniformiv);
+ msg.set_arg0(program);
+ msg.set_arg1(location);
+ msg.set_arg2(ToInt(params));
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glGetUniformiv(program, location, params);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetUniformiv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+int Debug_glGetUniformLocation(GLuint program, const GLchar* name)
+{
+ int ret = 0;
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetUniformLocation);
+ msg.set_arg0(program);
+ msg.set_arg1(ToInt(name));
+ std::string data;
+ // FIXME: check for pointer usage
+ data.reserve(strlen(name) * sizeof(GLchar));
+ for (unsigned i = 0; i < (strlen(name)); i++)
+ data.append((const char *)(name + i), sizeof(*name));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ ret = _c->glGetUniformLocation(program, name);
+ msg.set_ret(ToInt(ret));
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetUniformLocation);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ if (cmd.has_ret())
+ ret = FromInt<int>(cmd.ret());
+ return ret;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: this function has pointers, it should be hand written
+void Debug_glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetVertexAttribfv);
+ msg.set_arg0(index);
+ msg.set_arg1(pname);
+ msg.set_arg2(ToInt(params));
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glGetVertexAttribfv(index, pname, params);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetVertexAttribfv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: this function has pointers, it should be hand written
+void Debug_glGetVertexAttribiv(GLuint index, GLenum pname, GLint* params)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetVertexAttribiv);
+ msg.set_arg0(index);
+ msg.set_arg1(pname);
+ msg.set_arg2(ToInt(params));
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glGetVertexAttribiv(index, pname, params);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetVertexAttribiv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: this function has pointers, it should be hand written
+void Debug_glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid** pointer)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetVertexAttribPointerv);
+ msg.set_arg0(index);
+ msg.set_arg1(pname);
+ msg.set_arg2(ToInt(pointer));
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glGetVertexAttribPointerv(index, pname, pointer);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glGetVertexAttribPointerv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glHint(GLenum target, GLenum mode)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glHint);
+ msg.set_arg0(target);
+ msg.set_arg1(mode);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glHint(target, mode);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glHint);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+GLboolean Debug_glIsBuffer(GLuint buffer)
+{
+ GLboolean ret = 0;
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glIsBuffer);
+ msg.set_arg0(buffer);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ ret = _c->glIsBuffer(buffer);
+ msg.set_ret(ret);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glIsBuffer);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ if (cmd.has_ret())
+ ret = cmd.ret();
+ return ret;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+GLboolean Debug_glIsEnabled(GLenum cap)
+{
+ GLboolean ret = 0;
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glIsEnabled);
+ msg.set_arg0(cap);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ ret = _c->glIsEnabled(cap);
+ msg.set_ret(ret);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glIsEnabled);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ if (cmd.has_ret())
+ ret = cmd.ret();
+ return ret;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+GLboolean Debug_glIsFramebuffer(GLuint framebuffer)
+{
+ GLboolean ret = 0;
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glIsFramebuffer);
+ msg.set_arg0(framebuffer);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ ret = _c->glIsFramebuffer(framebuffer);
+ msg.set_ret(ret);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glIsFramebuffer);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ if (cmd.has_ret())
+ ret = cmd.ret();
+ return ret;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+GLboolean Debug_glIsProgram(GLuint program)
+{
+ GLboolean ret = 0;
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glIsProgram);
+ msg.set_arg0(program);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ ret = _c->glIsProgram(program);
+ msg.set_ret(ret);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glIsProgram);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ if (cmd.has_ret())
+ ret = cmd.ret();
+ return ret;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+GLboolean Debug_glIsRenderbuffer(GLuint renderbuffer)
+{
+ GLboolean ret = 0;
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glIsRenderbuffer);
+ msg.set_arg0(renderbuffer);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ ret = _c->glIsRenderbuffer(renderbuffer);
+ msg.set_ret(ret);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glIsRenderbuffer);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ if (cmd.has_ret())
+ ret = cmd.ret();
+ return ret;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+GLboolean Debug_glIsShader(GLuint shader)
+{
+ GLboolean ret = 0;
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glIsShader);
+ msg.set_arg0(shader);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ ret = _c->glIsShader(shader);
+ msg.set_ret(ret);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glIsShader);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ if (cmd.has_ret())
+ ret = cmd.ret();
+ return ret;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+GLboolean Debug_glIsTexture(GLuint texture)
+{
+ GLboolean ret = 0;
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glIsTexture);
+ msg.set_arg0(texture);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ ret = _c->glIsTexture(texture);
+ msg.set_ret(ret);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glIsTexture);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ if (cmd.has_ret())
+ ret = cmd.ret();
+ return ret;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glLineWidth(GLfloat width)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glLineWidth);
+ msg.set_arg0(ToInt(width));
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glLineWidth(width);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glLineWidth);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glLinkProgram(GLuint program)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glLinkProgram);
+ msg.set_arg0(program);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glLinkProgram(program);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glLinkProgram);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glPixelStorei(GLenum pname, GLint param)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glPixelStorei);
+ msg.set_arg0(pname);
+ msg.set_arg1(param);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glPixelStorei(pname, param);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glPixelStorei);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glPolygonOffset(GLfloat factor, GLfloat units)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glPolygonOffset);
+ msg.set_arg0(ToInt(factor));
+ msg.set_arg1(ToInt(units));
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glPolygonOffset(factor, units);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glPolygonOffset);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: this function has pointers, it should be hand written
+void Debug_glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glReadPixels);
+ msg.set_arg0(x);
+ msg.set_arg1(y);
+ msg.set_arg2(width);
+ msg.set_arg3(height);
+ msg.set_arg4(format);
+ msg.set_arg5(type);
+ msg.set_arg6(ToInt(pixels));
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glReadPixels(x, y, width, height, format, type, pixels);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glReadPixels);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glReleaseShaderCompiler(void)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glReleaseShaderCompiler);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glReleaseShaderCompiler();
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glReleaseShaderCompiler);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glRenderbufferStorage);
+ msg.set_arg0(target);
+ msg.set_arg1(internalformat);
+ msg.set_arg2(width);
+ msg.set_arg3(height);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glRenderbufferStorage(target, internalformat, width, height);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glRenderbufferStorage);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glSampleCoverage(GLclampf value, GLboolean invert)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glSampleCoverage);
+ msg.set_arg0(ToInt(value));
+ msg.set_arg1(invert);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glSampleCoverage(value, invert);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glSampleCoverage);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glScissor(GLint x, GLint y, GLsizei width, GLsizei height)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glScissor);
+ msg.set_arg0(x);
+ msg.set_arg1(y);
+ msg.set_arg2(width);
+ msg.set_arg3(height);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glScissor(x, y, width, height);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glScissor);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: this function has pointers, it should be hand written
+void Debug_glShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glShaderBinary);
+ msg.set_arg0(n);
+ msg.set_arg1(ToInt(shaders));
+ msg.set_arg2(binaryformat);
+ msg.set_arg3(ToInt(binary));
+ msg.set_arg4(length);
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glShaderBinary(n, shaders, binaryformat, binary, length);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glShaderBinary);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glStencilFunc(GLenum func, GLint ref, GLuint mask)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glStencilFunc);
+ msg.set_arg0(func);
+ msg.set_arg1(ref);
+ msg.set_arg2(mask);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glStencilFunc(func, ref, mask);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glStencilFunc);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glStencilFuncSeparate);
+ msg.set_arg0(face);
+ msg.set_arg1(func);
+ msg.set_arg2(ref);
+ msg.set_arg3(mask);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glStencilFuncSeparate(face, func, ref, mask);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glStencilFuncSeparate);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glStencilMask(GLuint mask)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glStencilMask);
+ msg.set_arg0(mask);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glStencilMask(mask);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glStencilMask);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glStencilMaskSeparate(GLenum face, GLuint mask)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glStencilMaskSeparate);
+ msg.set_arg0(face);
+ msg.set_arg1(mask);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glStencilMaskSeparate(face, mask);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glStencilMaskSeparate);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glStencilOp(GLenum fail, GLenum zfail, GLenum zpass)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glStencilOp);
+ msg.set_arg0(fail);
+ msg.set_arg1(zfail);
+ msg.set_arg2(zpass);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glStencilOp(fail, zfail, zpass);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glStencilOp);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glStencilOpSeparate);
+ msg.set_arg0(face);
+ msg.set_arg1(fail);
+ msg.set_arg2(zfail);
+ msg.set_arg3(zpass);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glStencilOpSeparate(face, fail, zfail, zpass);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glStencilOpSeparate);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glTexParameterf(GLenum target, GLenum pname, GLfloat param)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glTexParameterf);
+ msg.set_arg0(target);
+ msg.set_arg1(pname);
+ msg.set_arg2(ToInt(param));
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glTexParameterf(target, pname, param);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glTexParameterf);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: this function has pointers, it should be hand written
+void Debug_glTexParameterfv(GLenum target, GLenum pname, const GLfloat* params)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glTexParameterfv);
+ msg.set_arg0(target);
+ msg.set_arg1(pname);
+ msg.set_arg2(ToInt(params));
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glTexParameterfv(target, pname, params);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glTexParameterfv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glTexParameteri(GLenum target, GLenum pname, GLint param)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glTexParameteri);
+ msg.set_arg0(target);
+ msg.set_arg1(pname);
+ msg.set_arg2(param);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glTexParameteri(target, pname, param);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glTexParameteri);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: this function has pointers, it should be hand written
+void Debug_glTexParameteriv(GLenum target, GLenum pname, const GLint* params)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glTexParameteriv);
+ msg.set_arg0(target);
+ msg.set_arg1(pname);
+ msg.set_arg2(ToInt(params));
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glTexParameteriv(target, pname, params);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glTexParameteriv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glUniform1f(GLint location, GLfloat x)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform1f);
+ msg.set_arg0(location);
+ msg.set_arg1(ToInt(x));
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glUniform1f(location, x);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform1f);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glUniform1fv(GLint location, GLsizei count, const GLfloat* v)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform1fv);
+ msg.set_arg0(location);
+ msg.set_arg1(count);
+ msg.set_arg2(ToInt(v));
+ std::string data;
+ // FIXME: check for pointer usage
+ data.reserve(1*count * sizeof(GLfloat));
+ for (unsigned i = 0; i < (1*count); i++)
+ data.append((const char *)(v + i), sizeof(*v));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glUniform1fv(location, count, v);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform1fv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glUniform1i(GLint location, GLint x)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform1i);
+ msg.set_arg0(location);
+ msg.set_arg1(x);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glUniform1i(location, x);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform1i);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glUniform1iv(GLint location, GLsizei count, const GLint* v)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform1iv);
+ msg.set_arg0(location);
+ msg.set_arg1(count);
+ msg.set_arg2(ToInt(v));
+ std::string data;
+ // FIXME: check for pointer usage
+ data.reserve(1*count * sizeof(GLint));
+ for (unsigned i = 0; i < (1*count); i++)
+ data.append((const char *)(v + i), sizeof(*v));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glUniform1iv(location, count, v);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform1iv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glUniform2f(GLint location, GLfloat x, GLfloat y)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform2f);
+ msg.set_arg0(location);
+ msg.set_arg1(ToInt(x));
+ msg.set_arg2(ToInt(y));
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glUniform2f(location, x, y);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform2f);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glUniform2fv(GLint location, GLsizei count, const GLfloat* v)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform2fv);
+ msg.set_arg0(location);
+ msg.set_arg1(count);
+ msg.set_arg2(ToInt(v));
+ std::string data;
+ // FIXME: check for pointer usage
+ data.reserve(2*count * sizeof(GLfloat));
+ for (unsigned i = 0; i < (2*count); i++)
+ data.append((const char *)(v + i), sizeof(*v));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glUniform2fv(location, count, v);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform2fv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glUniform2i(GLint location, GLint x, GLint y)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform2i);
+ msg.set_arg0(location);
+ msg.set_arg1(x);
+ msg.set_arg2(y);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glUniform2i(location, x, y);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform2i);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glUniform2iv(GLint location, GLsizei count, const GLint* v)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform2iv);
+ msg.set_arg0(location);
+ msg.set_arg1(count);
+ msg.set_arg2(ToInt(v));
+ std::string data;
+ // FIXME: check for pointer usage
+ data.reserve(2*count * sizeof(GLint));
+ for (unsigned i = 0; i < (2*count); i++)
+ data.append((const char *)(v + i), sizeof(*v));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glUniform2iv(location, count, v);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform2iv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glUniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform3f);
+ msg.set_arg0(location);
+ msg.set_arg1(ToInt(x));
+ msg.set_arg2(ToInt(y));
+ msg.set_arg3(ToInt(z));
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glUniform3f(location, x, y, z);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform3f);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glUniform3fv(GLint location, GLsizei count, const GLfloat* v)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform3fv);
+ msg.set_arg0(location);
+ msg.set_arg1(count);
+ msg.set_arg2(ToInt(v));
+ std::string data;
+ // FIXME: check for pointer usage
+ data.reserve(3*count * sizeof(GLfloat));
+ for (unsigned i = 0; i < (3*count); i++)
+ data.append((const char *)(v + i), sizeof(*v));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glUniform3fv(location, count, v);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform3fv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glUniform3i(GLint location, GLint x, GLint y, GLint z)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform3i);
+ msg.set_arg0(location);
+ msg.set_arg1(x);
+ msg.set_arg2(y);
+ msg.set_arg3(z);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glUniform3i(location, x, y, z);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform3i);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glUniform3iv(GLint location, GLsizei count, const GLint* v)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform3iv);
+ msg.set_arg0(location);
+ msg.set_arg1(count);
+ msg.set_arg2(ToInt(v));
+ std::string data;
+ // FIXME: check for pointer usage
+ data.reserve(3*count * sizeof(GLint));
+ for (unsigned i = 0; i < (3*count); i++)
+ data.append((const char *)(v + i), sizeof(*v));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glUniform3iv(location, count, v);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform3iv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glUniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform4f);
+ msg.set_arg0(location);
+ msg.set_arg1(ToInt(x));
+ msg.set_arg2(ToInt(y));
+ msg.set_arg3(ToInt(z));
+ msg.set_arg4(ToInt(w));
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glUniform4f(location, x, y, z, w);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform4f);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glUniform4fv(GLint location, GLsizei count, const GLfloat* v)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform4fv);
+ msg.set_arg0(location);
+ msg.set_arg1(count);
+ msg.set_arg2(ToInt(v));
+ std::string data;
+ // FIXME: check for pointer usage
+ data.reserve(4*count * sizeof(GLfloat));
+ for (unsigned i = 0; i < (4*count); i++)
+ data.append((const char *)(v + i), sizeof(*v));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glUniform4fv(location, count, v);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform4fv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glUniform4i(GLint location, GLint x, GLint y, GLint z, GLint w)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform4i);
+ msg.set_arg0(location);
+ msg.set_arg1(x);
+ msg.set_arg2(y);
+ msg.set_arg3(z);
+ msg.set_arg4(w);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glUniform4i(location, x, y, z, w);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform4i);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glUniform4iv(GLint location, GLsizei count, const GLint* v)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform4iv);
+ msg.set_arg0(location);
+ msg.set_arg1(count);
+ msg.set_arg2(ToInt(v));
+ std::string data;
+ // FIXME: check for pointer usage
+ data.reserve(4*count * sizeof(GLint));
+ for (unsigned i = 0; i < (4*count); i++)
+ data.append((const char *)(v + i), sizeof(*v));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glUniform4iv(location, count, v);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniform4iv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniformMatrix2fv);
+ msg.set_arg0(location);
+ msg.set_arg1(count);
+ msg.set_arg2(transpose);
+ msg.set_arg3(ToInt(value));
+ std::string data;
+ // FIXME: check for pointer usage
+ data.reserve(4*count * sizeof(GLfloat));
+ for (unsigned i = 0; i < (4*count); i++)
+ data.append((const char *)(value + i), sizeof(*value));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glUniformMatrix2fv(location, count, transpose, value);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniformMatrix2fv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniformMatrix3fv);
+ msg.set_arg0(location);
+ msg.set_arg1(count);
+ msg.set_arg2(transpose);
+ msg.set_arg3(ToInt(value));
+ std::string data;
+ // FIXME: check for pointer usage
+ data.reserve(9*count * sizeof(GLfloat));
+ for (unsigned i = 0; i < (9*count); i++)
+ data.append((const char *)(value + i), sizeof(*value));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glUniformMatrix3fv(location, count, transpose, value);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniformMatrix3fv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniformMatrix4fv);
+ msg.set_arg0(location);
+ msg.set_arg1(count);
+ msg.set_arg2(transpose);
+ msg.set_arg3(ToInt(value));
+ std::string data;
+ // FIXME: check for pointer usage
+ data.reserve(16*count * sizeof(GLfloat));
+ for (unsigned i = 0; i < (16*count); i++)
+ data.append((const char *)(value + i), sizeof(*value));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glUniformMatrix4fv(location, count, transpose, value);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glUniformMatrix4fv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glUseProgram(GLuint program)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glUseProgram);
+ msg.set_arg0(program);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glUseProgram(program);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glUseProgram);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glValidateProgram(GLuint program)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glValidateProgram);
+ msg.set_arg0(program);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glValidateProgram(program);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glValidateProgram);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glVertexAttrib1f(GLuint indx, GLfloat x)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glVertexAttrib1f);
+ msg.set_arg0(indx);
+ msg.set_arg1(ToInt(x));
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glVertexAttrib1f(indx, x);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glVertexAttrib1f);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glVertexAttrib1fv(GLuint indx, const GLfloat* values)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glVertexAttrib1fv);
+ msg.set_arg0(indx);
+ msg.set_arg1(ToInt(values));
+ std::string data;
+ // FIXME: check for pointer usage
+ data.reserve(1 * sizeof(GLfloat));
+ for (unsigned i = 0; i < (1); i++)
+ data.append((const char *)(values + i), sizeof(*values));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glVertexAttrib1fv(indx, values);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glVertexAttrib1fv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glVertexAttrib2f(GLuint indx, GLfloat x, GLfloat y)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glVertexAttrib2f);
+ msg.set_arg0(indx);
+ msg.set_arg1(ToInt(x));
+ msg.set_arg2(ToInt(y));
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glVertexAttrib2f(indx, x, y);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glVertexAttrib2f);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glVertexAttrib2fv(GLuint indx, const GLfloat* values)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glVertexAttrib2fv);
+ msg.set_arg0(indx);
+ msg.set_arg1(ToInt(values));
+ std::string data;
+ // FIXME: check for pointer usage
+ data.reserve(2 * sizeof(GLfloat));
+ for (unsigned i = 0; i < (2); i++)
+ data.append((const char *)(values + i), sizeof(*values));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glVertexAttrib2fv(indx, values);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glVertexAttrib2fv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glVertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glVertexAttrib3f);
+ msg.set_arg0(indx);
+ msg.set_arg1(ToInt(x));
+ msg.set_arg2(ToInt(y));
+ msg.set_arg3(ToInt(z));
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glVertexAttrib3f(indx, x, y, z);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glVertexAttrib3f);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glVertexAttrib3fv(GLuint indx, const GLfloat* values)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glVertexAttrib3fv);
+ msg.set_arg0(indx);
+ msg.set_arg1(ToInt(values));
+ std::string data;
+ // FIXME: check for pointer usage
+ data.reserve(3 * sizeof(GLfloat));
+ for (unsigned i = 0; i < (3); i++)
+ data.append((const char *)(values + i), sizeof(*values));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glVertexAttrib3fv(indx, values);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glVertexAttrib3fv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glVertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glVertexAttrib4f);
+ msg.set_arg0(indx);
+ msg.set_arg1(ToInt(x));
+ msg.set_arg2(ToInt(y));
+ msg.set_arg3(ToInt(z));
+ msg.set_arg4(ToInt(w));
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glVertexAttrib4f(indx, x, y, z, w);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glVertexAttrib4f);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glVertexAttrib4fv(GLuint indx, const GLfloat* values)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glVertexAttrib4fv);
+ msg.set_arg0(indx);
+ msg.set_arg1(ToInt(values));
+ std::string data;
+ // FIXME: check for pointer usage
+ data.reserve(4 * sizeof(GLfloat));
+ for (unsigned i = 0; i < (4); i++)
+ data.append((const char *)(values + i), sizeof(*values));
+ msg.set_data(data);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glVertexAttrib4fv(indx, values);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glVertexAttrib4fv);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: this function has pointers, it should be hand written
+void Debug_glVertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glVertexAttribPointer);
+ msg.set_arg0(indx);
+ msg.set_arg1(size);
+ msg.set_arg2(type);
+ msg.set_arg3(normalized);
+ msg.set_arg4(stride);
+ msg.set_arg5(ToInt(ptr));
+ // FIXME: check for pointer usage
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glVertexAttribPointer(indx, size, type, normalized, stride, ptr);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glVertexAttribPointer);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void Debug_glViewport(GLint x, GLint y, GLsizei width, GLsizei height)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glViewport);
+ msg.set_arg0(x);
+ msg.set_arg1(y);
+ msg.set_arg2(width);
+ msg.set_arg3(height);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glViewport(x, y, width, height);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glViewport);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+// FIXME: the following functions should be written by hand
+void Debug_glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage);
+void Debug_glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data);
+void Debug_glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data);
+void Debug_glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data);
+void Debug_glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices);
+void Debug_glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
+void Debug_glGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
+void Debug_glGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders);
+void Debug_glGetBooleanv(GLenum pname, GLboolean* params);
+void Debug_glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params);
+void Debug_glGetFloatv(GLenum pname, GLfloat* params);
+void Debug_glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params);
+void Debug_glGetIntegerv(GLenum pname, GLint* params);
+void Debug_glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog);
+void Debug_glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params);
+void Debug_glGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog);
+void Debug_glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision);
+void Debug_glGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source);
+const GLubyte* Debug_glGetString(GLenum name);
+void Debug_glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params);
+void Debug_glGetTexParameteriv(GLenum target, GLenum pname, GLint* params);
+void Debug_glGetUniformfv(GLuint program, GLint location, GLfloat* params);
+void Debug_glGetUniformiv(GLuint program, GLint location, GLint* params);
+void Debug_glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params);
+void Debug_glGetVertexAttribiv(GLuint index, GLenum pname, GLint* params);
+void Debug_glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid** pointer);
+void Debug_glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);
+void Debug_glShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length);
+void Debug_glTexParameterfv(GLenum target, GLenum pname, const GLfloat* params);
+void Debug_glTexParameteriv(GLenum target, GLenum pname, const GLint* params);
+void Debug_glVertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr);
diff --git a/opengl/libs/GLES2_dbg/src/header.h b/opengl/libs/GLES2_dbg/src/header.h
new file mode 100644
index 0000000..e1b194d
--- /dev/null
+++ b/opengl/libs/GLES2_dbg/src/header.h
@@ -0,0 +1,65 @@
+/*
+ ** Copyright 2011, The Android Open Source Project
+ **
+ ** Licensed under the Apache License, Version 2.0 (the "License");
+ ** you may not use this file except in compliance with the License.
+ ** You may obtain a copy of the License at
+ **
+ ** http://www.apache.org/licenses/LICENSE-2.0
+ **
+ ** Unless required by applicable law or agreed to in writing, software
+ ** distributed under the License is distributed on an "AS IS" BASIS,
+ ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ** See the License for the specific language governing permissions and
+ ** limitations under the License.
+ */
+
+#include <stdlib.h>
+#include <ctype.h>
+#include <string.h>
+#include <errno.h>
+
+#include <sys/ioctl.h>
+#include <unistd.h>
+#include <sys/socket.h>
+
+#include <GLES2/gl2.h>
+#include <GLES2/gl2ext.h>
+
+#include <cutils/log.h>
+#include <cutils/properties.h>
+#include <../../../libcore/include/StaticAssert.h>
+
+#define EGL_TRACE 1
+#include "hooks.h"
+
+#define GL_ENTRY(_r, _api, ...) _r Debug_##_api ( __VA_ARGS__ );
+#include "../include/glesv2_dbg.h"
+
+#include "DebuggerMessage.pb.h"
+
+using namespace android;
+
+#define API_ENTRY(_api) Debug_##_api
+
+#ifndef __location__
+#define __HIERALLOC_STRING_0__(s) #s
+#define __HIERALLOC_STRING_1__(s) __HIERALLOC_STRING_0__(s)
+#define __HIERALLOC_STRING_2__ __HIERALLOC_STRING_1__(__LINE__)
+#define __location__ __FILE__ ":" __HIERALLOC_STRING_2__
+#endif
+
+#define ASSERT(expr) if (!(expr)) { LOGD("\n*\n*\n* ASSERT FAILED: %s at %s \n*\n*", #expr, __location__); exit(1); }
+#undef assert
+#define assert(expr) ASSERT(expr)
+//#undef LOGD
+//#define LOGD(...)
+
+namespace android
+{
+extern int clientSock, serverSock;
+#define BUFFSIZE 256
+extern char sockBuff [BUFFSIZE];
+
+void Send(const GLESv2Debugger::Message & msg, GLESv2Debugger::Message & cmd);
+}; // namespace android {
diff --git a/opengl/libs/GLES2_dbg/src/server.cpp b/opengl/libs/GLES2_dbg/src/server.cpp
new file mode 100644
index 0000000..33f78e4
--- /dev/null
+++ b/opengl/libs/GLES2_dbg/src/server.cpp
@@ -0,0 +1,158 @@
+/*
+ ** Copyright 2011, The Android Open Source Project
+ **
+ ** Licensed under the Apache License, Version 2.0 (the "License");
+ ** you may not use this file except in compliance with the License.
+ ** You may obtain a copy of the License at
+ **
+ ** http://www.apache.org/licenses/LICENSE-2.0
+ **
+ ** Unless required by applicable law or agreed to in writing, software
+ ** distributed under the License is distributed on an "AS IS" BASIS,
+ ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ** See the License for the specific language governing permissions and
+ ** limitations under the License.
+ */
+
+#include <fcntl.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <pthread.h>
+
+#include "header.h"
+
+namespace android
+{
+
+char sockBuff [BUFFSIZE];
+
+int serverSock = -1, clientSock = -1;
+
+void StopDebugServer();
+
+static void Die(const char * msg)
+{
+ LOGD("\n*\n*\n* GLESv2_dbg: Die: %s \n*\n*", msg);
+ StopDebugServer();
+ exit(1);
+}
+
+void StartDebugServer()
+{
+ LOGD("GLESv2_dbg: StartDebugServer");
+ if (serverSock >= 0)
+ return;
+
+ LOGD("GLESv2_dbg: StartDebugServer create socket");
+ struct sockaddr_in server = {}, client = {};
+
+ /* Create the TCP socket */
+ if ((serverSock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {
+ Die("Failed to create socket");
+ }
+ /* Construct the server sockaddr_in structure */
+ server.sin_family = AF_INET; /* Internet/IP */
+ server.sin_addr.s_addr = htonl(INADDR_ANY); /* Incoming addr */
+ server.sin_port = htons(5039); /* server port */
+
+ /* Bind the server socket */
+ socklen_t sizeofSockaddr_in = sizeof(sockaddr_in);
+ if (bind(serverSock, (struct sockaddr *) &server,
+ sizeof(server)) < 0) {
+ Die("Failed to bind the server socket");
+ }
+ /* Listen on the server socket */
+ if (listen(serverSock, 1) < 0) {
+ Die("Failed to listen on server socket");
+ }
+
+ LOGD("server started on %d \n", server.sin_port);
+
+
+ /* Wait for client connection */
+ if ((clientSock =
+ accept(serverSock, (struct sockaddr *) &client,
+ &sizeofSockaddr_in)) < 0) {
+ Die("Failed to accept client connection");
+ }
+
+ LOGD("Client connected: %s\n", inet_ntoa(client.sin_addr));
+// fcntl(clientSock, F_SETFL, O_NONBLOCK);
+
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_ACK);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(true);
+ Send(msg, cmd);
+}
+
+void StopDebugServer()
+{
+ LOGD("GLESv2_dbg: StopDebugServer");
+ if (clientSock > 0) {
+ close(clientSock);
+ clientSock = -1;
+ }
+ if (serverSock > 0) {
+ close(serverSock);
+ serverSock = -1;
+ }
+
+}
+
+void Send(const GLESv2Debugger::Message & msg, GLESv2Debugger::Message & cmd)
+{
+ static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
+ pthread_mutex_lock(&mutex); // TODO: this is just temporary
+
+ static std::string str;
+ const_cast<GLESv2Debugger::Message &>(msg).set_context_id(pthread_self());
+ msg.SerializeToString(&str);
+ unsigned len = str.length();
+ len = htonl(len);
+ int sent = -1;
+ sent = send(clientSock, (const char *)&len, sizeof(len), 0);
+ if (sent != sizeof(len)) {
+ LOGD("actual sent=%d expected=%d clientSock=%d", sent, sizeof(len), clientSock);
+ Die("Failed to send message length");
+ }
+ sent = send(clientSock, str.c_str(), str.length(), 0);
+ if (sent != str.length()) {
+ LOGD("actual sent=%d expected=%d clientSock=%d", sent, str.length(), clientSock);
+ Die("Failed to send message");
+ }
+
+ if (!msg.expect_response()) {
+ pthread_mutex_unlock(&mutex);
+ return;
+ }
+
+ int received = recv(clientSock, sockBuff, 4, MSG_WAITALL);
+ if (received < 0)
+ Die("Failed to receive response");
+ else if (4 != received) {
+ LOGD("received %dB: %.8X", received, *(unsigned *)sockBuff);
+ Die("Received length mismatch, expected 4");
+ }
+ len = ntohl(*(unsigned *)sockBuff);
+ static void * buffer = NULL;
+ static unsigned bufferSize = 0;
+ if (bufferSize < len) {
+ buffer = realloc(buffer, len);
+ ASSERT(buffer);
+ bufferSize = len;
+ }
+ received = recv(clientSock, buffer, len, MSG_WAITALL);
+ if (received < 0)
+ Die("Failed to receive response");
+ else if (len != received)
+ Die("Received length mismatch");
+ cmd.Clear();
+ cmd.ParseFromArray(buffer, len);
+
+ //LOGD("Message sent tid=%lu len=%d", pthread_self(), str.length());
+ pthread_mutex_unlock(&mutex);
+}
+
+}; // namespace android {
diff --git a/opengl/libs/GLES2_dbg/src/shader.cpp b/opengl/libs/GLES2_dbg/src/shader.cpp
new file mode 100644
index 0000000..c2b2557
--- /dev/null
+++ b/opengl/libs/GLES2_dbg/src/shader.cpp
@@ -0,0 +1,66 @@
+/*
+ ** Copyright 2011, The Android Open Source Project
+ **
+ ** Licensed under the Apache License, Version 2.0 (the "License");
+ ** you may not use this file except in compliance with the License.
+ ** You may obtain a copy of the License at
+ **
+ ** http://www.apache.org/licenses/LICENSE-2.0
+ **
+ ** Unless required by applicable law or agreed to in writing, software
+ ** distributed under the License is distributed on an "AS IS" BASIS,
+ ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ** See the License for the specific language governing permissions and
+ ** limitations under the License.
+ */
+
+#include "header.h"
+
+void API_ENTRY(glShaderSource)(GLuint shader, GLsizei count, const GLchar** string, const GLint* length)
+{
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glShaderSource);
+ msg.set_arg0(shader);
+ msg.set_arg1(count);
+ msg.set_arg2((int)string);
+ msg.set_arg3((int)length);
+
+ std::string data;
+ for (unsigned i = 0; i < count; i++)
+ if (!length || length[i] < 0)
+ data.append(string[i]);
+ else
+ data.append(string[i], length[i]);
+ msg.set_data(data);
+
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glShaderSource(shader, count, string, length);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glShaderSource);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
diff --git a/opengl/libs/GLES2_dbg/src/texture.cpp b/opengl/libs/GLES2_dbg/src/texture.cpp
new file mode 100644
index 0000000..a149487
--- /dev/null
+++ b/opengl/libs/GLES2_dbg/src/texture.cpp
@@ -0,0 +1,300 @@
+/*
+ ** Copyright 2011, The Android Open Source Project
+ **
+ ** Licensed under the Apache License, Version 2.0 (the "License");
+ ** you may not use this file except in compliance with the License.
+ ** You may obtain a copy of the License at
+ **
+ ** http://www.apache.org/licenses/LICENSE-2.0
+ **
+ ** Unless required by applicable law or agreed to in writing, software
+ ** distributed under the License is distributed on an "AS IS" BASIS,
+ ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ** See the License for the specific language governing permissions and
+ ** limitations under the License.
+ */
+
+#include "header.h"
+
+static inline void GetFormatAndBytesPerPixel(const GLenum format, unsigned & bytesPerPixel)
+{
+ switch (format) {
+ case GL_ALPHA:
+ bytesPerPixel = 1;
+ break;
+ case GL_LUMINANCE:
+ bytesPerPixel = 1;
+ break;
+ case GL_LUMINANCE_ALPHA:
+ bytesPerPixel = 2;
+ break;
+ case GL_RGB:
+ bytesPerPixel = 3;
+ break;
+ case GL_RGBA:
+ bytesPerPixel = 4;
+ break;
+
+ // internal formats to avoid conversion
+ case GL_UNSIGNED_SHORT_5_6_5:
+ bytesPerPixel = 2;
+ break;
+ case GL_UNSIGNED_SHORT_4_4_4_4:
+ bytesPerPixel = 2;
+ break;
+ case GL_UNSIGNED_SHORT_5_5_5_1:
+ bytesPerPixel = 2;
+ break;
+ default:
+ assert(0);
+ return;
+ }
+}
+
+#define USE_RLE 0
+#if USE_RLE
+template<typename T>
+void * RLEEncode(const void * pixels, unsigned count, unsigned * encodedSize)
+{
+ // first is a byte indicating data size [1,2,4] bytes
+ // then an unsigned indicating decompressed size
+ // then a byte of header: MSB == 1 indicates run, else literal
+ // LSB7 is run or literal length (actual length - 1)
+
+ const T * data = (T *)pixels;
+ unsigned bufferSize = sizeof(T) * count / 2 + 8;
+ unsigned char * buffer = (unsigned char *)malloc(bufferSize);
+ buffer[0] = sizeof(T);
+ unsigned bufferWritten = 1; // number of bytes written
+ *(unsigned *)(buffer + bufferWritten) = count;
+ bufferWritten += sizeof(count);
+ while (count) {
+ unsigned char run = 1;
+ bool repeat = true;
+ for (run = 1; run < count; run++)
+ if (data[0] != data[run]) {
+ repeat = false;
+ break;
+ } else if (run > 127)
+ break;
+ if (!repeat) {
+ // find literal length
+ for (run = 1; run < count; run++)
+ if (data[run - 1] == data[run])
+ break;
+ else if (run > 127)
+ break;
+ unsigned bytesToWrite = 1 + sizeof(T) * run;
+ if (bufferWritten + bytesToWrite > bufferSize) {
+ bufferSize += sizeof(T) * run + 256;
+ buffer = (unsigned char *)realloc(buffer, bufferSize);
+ }
+ buffer[bufferWritten++] = run - 1;
+ for (unsigned i = 0; i < run; i++) {
+ *(T *)(buffer + bufferWritten) = *data;
+ bufferWritten += sizeof(T);
+ data++;
+ }
+ count -= run;
+ } else {
+ unsigned bytesToWrite = 1 + sizeof(T);
+ if (bufferWritten + bytesToWrite > bufferSize) {
+ bufferSize += 256;
+ buffer = (unsigned char *)realloc(buffer, bufferSize);
+ }
+ buffer[bufferWritten++] = (run - 1) | 0x80;
+ *(T *)(buffer + bufferWritten) = data[0];
+ bufferWritten += sizeof(T);
+ data += run;
+ count -= run;
+ }
+ }
+ if (encodedSize)
+ *encodedSize = bufferWritten;
+ return buffer;
+}
+
+void * RLEEncode(const void * pixels, const unsigned bytesPerPixel, const unsigned count, unsigned * encodedSize)
+{
+ switch (bytesPerPixel) {
+ case 4:
+ return RLEEncode<int>(pixels, count, encodedSize);
+ case 2:
+ return RLEEncode<short>(pixels, count, encodedSize);
+ case 1:
+ return RLEEncode<char>(pixels, count, encodedSize);
+ default:
+ assert(0);
+ return NULL;
+ }
+}
+#endif
+
+void API_ENTRY(glTexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width,
+ GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid * pixels)
+{
+// LOGD("\n*\n* GLESv2_dbg: %s \n*", "glTexImage2D");
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glTexImage2D);
+
+ msg.set_arg0(target);
+ msg.set_arg1(level);
+ msg.set_arg2(internalformat);
+ msg.set_arg3(width);
+ msg.set_arg4(height);
+ msg.set_arg5(border);
+ msg.set_arg6(format);
+ msg.set_arg7(type);
+
+ if (pixels) {
+ assert(internalformat == format);
+ assert(0 == border);
+
+ GLenum newFormat = internalformat;
+ switch (type) {
+ case GL_UNSIGNED_BYTE:
+ break;
+ case GL_UNSIGNED_SHORT_5_6_5:
+ case GL_UNSIGNED_SHORT_4_4_4_4:
+ case GL_UNSIGNED_SHORT_5_5_5_1:
+ newFormat = type;
+ break;
+ default:
+ LOGD("GLESv2_dbg: glTexImage2D type=0x%.4X", type);
+ assert(0);
+ }
+ unsigned bytesPerPixel = 0;
+ GetFormatAndBytesPerPixel(newFormat, bytesPerPixel);
+ assert(0 < bytesPerPixel);
+
+// LOGD("GLESv2_dbg: glTexImage2D width=%d height=%d level=%d bytesPerPixel=%d",
+// width, height, level, bytesPerPixel);
+#if USE_RLE
+ unsigned encodedSize = 0;
+ void * data = RLEEncode(pixels, bytesPerPixel, width * height, &encodedSize);
+ msg.set_data(data, encodedSize);
+ free(data);
+ if (encodedSize > bytesPerPixel * width * height)
+ LOGD("GLESv2_dbg: glTexImage2D sending data encodedSize=%d size=%d", encodedSize, bytesPerPixel * width * height);
+#else
+ msg.set_data(pixels, bytesPerPixel * width * height);
+#endif
+ }
+ assert(msg.has_arg3());
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_context_id(0);
+ msg.set_function(GLESv2Debugger::Message_Function_glTexImage2D);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ assert(!msg.has_arg3());
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
+
+void API_ENTRY(glTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset,
+ GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels)
+{
+// LOGD("\n*\n* GLESv2_dbg: %s \n*", "glTexSubImage2D");
+ gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl;
+
+ GLESv2Debugger::Message msg, cmd;
+ msg.set_context_id(0);
+ msg.set_has_next_message(true);
+ const bool expectResponse = false;
+ msg.set_expect_response(expectResponse);
+ msg.set_function(GLESv2Debugger::Message_Function_glTexSubImage2D);
+
+ msg.set_arg0(target);
+ msg.set_arg1(level);
+ msg.set_arg2(xoffset);
+ msg.set_arg3(yoffset);
+ msg.set_arg4(width);
+ msg.set_arg5(height);
+ msg.set_arg6(format);
+ msg.set_arg7(type);
+
+ assert(pixels);
+ if (pixels) {
+ GLenum newFormat = format;
+ switch (type) {
+ case GL_UNSIGNED_BYTE:
+ break;
+ case GL_UNSIGNED_SHORT_5_6_5:
+ case GL_UNSIGNED_SHORT_4_4_4_4:
+ case GL_UNSIGNED_SHORT_5_5_5_1:
+ newFormat = type;
+ break;
+ default:
+ assert(0);
+ }
+ unsigned bytesPerPixel = 0;
+ GetFormatAndBytesPerPixel(newFormat, bytesPerPixel);
+ assert(0 < bytesPerPixel);
+
+// LOGD("GLESv2_dbg: glTexSubImage2D width=%d height=%d level=%d bytesPerPixel=%d",
+// width, height, level, bytesPerPixel);
+
+#if USE_RLE
+ unsigned encodedSize = 0;
+ void * data = RLEEncode(pixels, bytesPerPixel, width * height, &encodedSize);
+ msg.set_data(data, encodedSize);
+ free(data);
+ if (encodedSize > bytesPerPixel * width * height)
+ LOGD("GLESv2_dbg: glTexImage2D sending data encodedSize=%d size=%d", encodedSize, bytesPerPixel * width * height);
+#else
+ msg.set_data(pixels, bytesPerPixel * width * height);
+#endif
+ }
+
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE);
+
+ while (true) {
+ msg.Clear();
+ clock_t c0 = clock();
+ switch (cmd.function()) {
+ case GLESv2Debugger::Message_Function_CONTINUE:
+ _c->glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
+ msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC);
+ msg.set_function(GLESv2Debugger::Message_Function_glTexImage2D);
+ msg.set_context_id(0);
+ msg.set_has_next_message(false);
+ msg.set_expect_response(expectResponse);
+ Send(msg, cmd);
+ if (!expectResponse)
+ cmd.set_function(GLESv2Debugger::Message_Function_SKIP);
+ break;
+ case GLESv2Debugger::Message_Function_SKIP:
+ return;
+ default:
+ ASSERT(0); //GenerateCall(msg, cmd);
+ break;
+ }
+ }
+}
diff --git a/opengl/libs/debug.in b/opengl/libs/debug.in
new file mode 100644
index 0000000..882b2da
--- /dev/null
+++ b/opengl/libs/debug.in
@@ -0,0 +1,235 @@
+// the following functions are not defined in GLESv2_dbg
+TRACE_GL_VOID(glAlphaFunc, (GLenum func, GLclampf ref), (func, ref), 2, "GLenum", func, "GLclampf", ref)
+TRACE_GL_VOID(glAlphaFuncx, (GLenum func, GLclampx ref), (func, ref), 2, "GLenum", func, "GLclampx", ref)
+TRACE_GL_VOID(glAlphaFuncxOES, (GLenum func, GLclampx ref), (func, ref), 2, "GLenum", func, "GLclampx", ref)
+TRACE_GL_VOID(glBeginPerfMonitorAMD, (GLuint monitor), (monitor), 1, "GLuint", monitor)
+TRACE_GL_VOID(glBindFramebufferOES, (GLenum target, GLuint framebuffer), (target, framebuffer), 2, "GLenum", target, "GLuint", framebuffer)
+TRACE_GL_VOID(glBindRenderbufferOES, (GLenum target, GLuint renderbuffer), (target, renderbuffer), 2, "GLenum", target, "GLuint", renderbuffer)
+TRACE_GL_VOID(glBindVertexArrayOES, (GLuint array), (array), 1, "GLuint", array)
+TRACE_GL_VOID(glBlendEquationOES, (GLenum mode), (mode), 1, "GLenum", mode)
+TRACE_GL_VOID(glBlendEquationSeparateOES, (GLenum modeRGB, GLenum modeAlpha), (modeRGB, modeAlpha), 2, "GLenum", modeRGB, "GLenum", modeAlpha)
+TRACE_GL_VOID(glBlendFuncSeparateOES, (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha), (srcRGB, dstRGB, srcAlpha, dstAlpha), 4, "GLenum", srcRGB, "GLenum", dstRGB, "GLenum", srcAlpha, "GLenum", dstAlpha)
+TRACE_GL(GLenum, glCheckFramebufferStatusOES, (GLenum target), (target), 1, "GLenum", target)
+TRACE_GL_VOID(glClearColorx, (GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha), (red, green, blue, alpha), 4, "GLclampx", red, "GLclampx", green, "GLclampx", blue, "GLclampx", alpha)
+TRACE_GL_VOID(glClearColorxOES, (GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha), (red, green, blue, alpha), 4, "GLclampx", red, "GLclampx", green, "GLclampx", blue, "GLclampx", alpha)
+TRACE_GL_VOID(glClearDepthfOES, (GLclampf depth), (depth), 1, "GLclampf", depth)
+TRACE_GL_VOID(glClearDepthx, (GLclampx depth), (depth), 1, "GLclampx", depth)
+TRACE_GL_VOID(glClearDepthxOES, (GLclampx depth), (depth), 1, "GLclampx", depth)
+TRACE_GL_VOID(glClientActiveTexture, (GLenum texture), (texture), 1, "GLenum", texture)
+TRACE_GL_VOID(glClipPlanef, (GLenum plane, const GLfloat *equation), (plane, equation), 2, "GLenum", plane, "const GLfloat *", equation)
+TRACE_GL_VOID(glClipPlanefIMG, (GLenum p, const GLfloat *eqn), (p, eqn), 2, "GLenum", p, "const GLfloat *", eqn)
+TRACE_GL_VOID(glClipPlanefOES, (GLenum plane, const GLfloat *equation), (plane, equation), 2, "GLenum", plane, "const GLfloat *", equation)
+TRACE_GL_VOID(glClipPlanex, (GLenum plane, const GLfixed *equation), (plane, equation), 2, "GLenum", plane, "const GLfixed *", equation)
+TRACE_GL_VOID(glClipPlanexIMG, (GLenum p, const GLfixed *eqn), (p, eqn), 2, "GLenum", p, "const GLfixed *", eqn)
+TRACE_GL_VOID(glClipPlanexOES, (GLenum plane, const GLfixed *equation), (plane, equation), 2, "GLenum", plane, "const GLfixed *", equation)
+TRACE_GL_VOID(glColor4f, (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha), (red, green, blue, alpha), 4, "GLfloat", red, "GLfloat", green, "GLfloat", blue, "GLfloat", alpha)
+TRACE_GL_VOID(glColor4ub, (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha), (red, green, blue, alpha), 4, "GLubyte", red, "GLubyte", green, "GLubyte", blue, "GLubyte", alpha)
+TRACE_GL_VOID(glColor4x, (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha), (red, green, blue, alpha), 4, "GLfixed", red, "GLfixed", green, "GLfixed", blue, "GLfixed", alpha)
+TRACE_GL_VOID(glColor4xOES, (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha), (red, green, blue, alpha), 4, "GLfixed", red, "GLfixed", green, "GLfixed", blue, "GLfixed", alpha)
+TRACE_GL_VOID(glColorPointer, (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer), (size, type, stride, pointer), 4, "GLint", size, "GLenum", type, "GLsizei", stride, "const GLvoid *", pointer)
+TRACE_GL_VOID(glCompressedTexImage3DOES, (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data), (target, level, internalformat, width, height, depth, border, imageSize, data), 9, "GLenum", target, "GLint", level, "GLenum", internalformat, "GLsizei", width, "GLsizei", height, "GLsizei", depth, "GLint", border, "GLsizei", imageSize, "const GLvoid*", data)
+TRACE_GL_VOID(glCompressedTexSubImage3DOES, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data), (target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data), 11, "GLenum", target, "GLint", level, "GLint", xoffset, "GLint", yoffset, "GLint", zoffset, "GLsizei", width, "GLsizei", height, "GLsizei", depth, "GLenum", format, "GLsizei", imageSize, "const GLvoid*", data)
+TRACE_GL_VOID(glCopyTexSubImage3DOES, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height), (target, level, xoffset, yoffset, zoffset, x, y, width, height), 9, "GLenum", target, "GLint", level, "GLint", xoffset, "GLint", yoffset, "GLint", zoffset, "GLint", x, "GLint", y, "GLsizei", width, "GLsizei", height)
+TRACE_GL_VOID(glCoverageMaskNV, (GLboolean mask), (mask), 1, "GLboolean", mask)
+TRACE_GL_VOID(glCoverageOperationNV, (GLenum operation), (operation), 1, "GLenum", operation)
+TRACE_GL_VOID(glCurrentPaletteMatrixOES, (GLuint matrixpaletteindex), (matrixpaletteindex), 1, "GLuint", matrixpaletteindex)
+TRACE_GL_VOID(glDeleteFencesNV, (GLsizei n, const GLuint *fences), (n, fences), 2, "GLsizei", n, "const GLuint *", fences)
+TRACE_GL_VOID(glDeleteFramebuffersOES, (GLsizei n, const GLuint* framebuffers), (n, framebuffers), 2, "GLsizei", n, "const GLuint*", framebuffers)
+TRACE_GL_VOID(glDeletePerfMonitorsAMD, (GLsizei n, GLuint *monitors), (n, monitors), 2, "GLsizei", n, "GLuint *", monitors)
+TRACE_GL_VOID(glDeleteRenderbuffersOES, (GLsizei n, const GLuint* renderbuffers), (n, renderbuffers), 2, "GLsizei", n, "const GLuint*", renderbuffers)
+TRACE_GL_VOID(glDeleteVertexArraysOES, (GLsizei n, const GLuint *arrays), (n, arrays), 2, "GLsizei", n, "const GLuint *", arrays)
+TRACE_GL_VOID(glDepthRangefOES, (GLclampf zNear, GLclampf zFar), (zNear, zFar), 2, "GLclampf", zNear, "GLclampf", zFar)
+TRACE_GL_VOID(glDepthRangex, (GLclampx zNear, GLclampx zFar), (zNear, zFar), 2, "GLclampx", zNear, "GLclampx", zFar)
+TRACE_GL_VOID(glDepthRangexOES, (GLclampx zNear, GLclampx zFar), (zNear, zFar), 2, "GLclampx", zNear, "GLclampx", zFar)
+TRACE_GL_VOID(glDisableClientState, (GLenum array), (array), 1, "GLenum", array)
+TRACE_GL_VOID(glDisableDriverControlQCOM, (GLuint driverControl), (driverControl), 1, "GLuint", driverControl)
+TRACE_GL_VOID(glDiscardFramebufferEXT, (GLenum target, GLsizei numAttachments, const GLenum *attachments), (target, numAttachments, attachments), 3, "GLenum", target, "GLsizei", numAttachments, "const GLenum *", attachments)
+TRACE_GL_VOID(glDrawTexfOES, (GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height), (x, y, z, width, height), 5, "GLfloat", x, "GLfloat", y, "GLfloat", z, "GLfloat", width, "GLfloat", height)
+TRACE_GL_VOID(glDrawTexfvOES, (const GLfloat *coords), (coords), 1, "const GLfloat *", coords)
+TRACE_GL_VOID(glDrawTexiOES, (GLint x, GLint y, GLint z, GLint width, GLint height), (x, y, z, width, height), 5, "GLint", x, "GLint", y, "GLint", z, "GLint", width, "GLint", height)
+TRACE_GL_VOID(glDrawTexivOES, (const GLint *coords), (coords), 1, "const GLint *", coords)
+TRACE_GL_VOID(glDrawTexsOES, (GLshort x, GLshort y, GLshort z, GLshort width, GLshort height), (x, y, z, width, height), 5, "GLshort", x, "GLshort", y, "GLshort", z, "GLshort", width, "GLshort", height)
+TRACE_GL_VOID(glDrawTexsvOES, (const GLshort *coords), (coords), 1, "const GLshort *", coords)
+TRACE_GL_VOID(glDrawTexxOES, (GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height), (x, y, z, width, height), 5, "GLfixed", x, "GLfixed", y, "GLfixed", z, "GLfixed", width, "GLfixed", height)
+TRACE_GL_VOID(glDrawTexxvOES, (const GLfixed *coords), (coords), 1, "const GLfixed *", coords)
+TRACE_GL_VOID(glEGLImageTargetRenderbufferStorageOES, (GLenum target, GLeglImageOES image), (target, image), 2, "GLenum", target, "GLeglImageOES", image)
+TRACE_GL_VOID(glEGLImageTargetTexture2DOES, (GLenum target, GLeglImageOES image), (target, image), 2, "GLenum", target, "GLeglImageOES", image)
+TRACE_GL_VOID(glEnableClientState, (GLenum array), (array), 1, "GLenum", array)
+TRACE_GL_VOID(glEnableDriverControlQCOM, (GLuint driverControl), (driverControl), 1, "GLuint", driverControl)
+TRACE_GL_VOID(glEndPerfMonitorAMD, (GLuint monitor), (monitor), 1, "GLuint", monitor)
+TRACE_GL_VOID(glEndTilingQCOM, (GLbitfield preserveMask), (preserveMask), 1, "GLbitfield", preserveMask)
+TRACE_GL_VOID(glExtGetBufferPointervQCOM, (GLenum target, GLvoid **params), (target, params), 2, "GLenum", target, "GLvoid **", params)
+TRACE_GL_VOID(glExtGetBuffersQCOM, (GLuint *buffers, GLint maxBuffers, GLint *numBuffers), (buffers, maxBuffers, numBuffers), 3, "GLuint *", buffers, "GLint", maxBuffers, "GLint *", numBuffers)
+TRACE_GL_VOID(glExtGetFramebuffersQCOM, (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers), (framebuffers, maxFramebuffers, numFramebuffers), 3, "GLuint *", framebuffers, "GLint", maxFramebuffers, "GLint *", numFramebuffers)
+TRACE_GL_VOID(glExtGetProgramBinarySourceQCOM, (GLuint program, GLenum shadertype, GLchar *source, GLint *length), (program, shadertype, source, length), 4, "GLuint", program, "GLenum", shadertype, "GLchar *", source, "GLint *", length)
+TRACE_GL_VOID(glExtGetProgramsQCOM, (GLuint *programs, GLint maxPrograms, GLint *numPrograms), (programs, maxPrograms, numPrograms), 3, "GLuint *", programs, "GLint", maxPrograms, "GLint *", numPrograms)
+TRACE_GL_VOID(glExtGetRenderbuffersQCOM, (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers), (renderbuffers, maxRenderbuffers, numRenderbuffers), 3, "GLuint *", renderbuffers, "GLint", maxRenderbuffers, "GLint *", numRenderbuffers)
+TRACE_GL_VOID(glExtGetShadersQCOM, (GLuint *shaders, GLint maxShaders, GLint *numShaders), (shaders, maxShaders, numShaders), 3, "GLuint *", shaders, "GLint", maxShaders, "GLint *", numShaders)
+TRACE_GL_VOID(glExtGetTexLevelParameterivQCOM, (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params), (texture, face, level, pname, params), 5, "GLuint", texture, "GLenum", face, "GLint", level, "GLenum", pname, "GLint *", params)
+TRACE_GL_VOID(glExtGetTexSubImageQCOM, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels), (target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, texels), 11, "GLenum", target, "GLint", level, "GLint", xoffset, "GLint", yoffset, "GLint", zoffset, "GLsizei", width, "GLsizei", height, "GLsizei", depth, "GLenum", format, "GLenum", type, "GLvoid *", texels)
+TRACE_GL_VOID(glExtGetTexturesQCOM, (GLuint *textures, GLint maxTextures, GLint *numTextures), (textures, maxTextures, numTextures), 3, "GLuint *", textures, "GLint", maxTextures, "GLint *", numTextures)
+TRACE_GL(GLboolean, glExtIsProgramBinaryQCOM, (GLuint program), (program), 1, "GLuint", program)
+TRACE_GL_VOID(glExtTexObjectStateOverrideiQCOM, (GLenum target, GLenum pname, GLint param), (target, pname, param), 3, "GLenum", target, "GLenum", pname, "GLint", param)
+TRACE_GL_VOID(glFinishFenceNV, (GLuint fence), (fence), 1, "GLuint", fence)
+TRACE_GL_VOID(glFogf, (GLenum pname, GLfloat param), (pname, param), 2, "GLenum", pname, "GLfloat", param)
+TRACE_GL_VOID(glFogfv, (GLenum pname, const GLfloat *params), (pname, params), 2, "GLenum", pname, "const GLfloat *", params)
+TRACE_GL_VOID(glFogx, (GLenum pname, GLfixed param), (pname, param), 2, "GLenum", pname, "GLfixed", param)
+TRACE_GL_VOID(glFogxOES, (GLenum pname, GLfixed param), (pname, param), 2, "GLenum", pname, "GLfixed", param)
+TRACE_GL_VOID(glFogxv, (GLenum pname, const GLfixed *params), (pname, params), 2, "GLenum", pname, "const GLfixed *", params)
+TRACE_GL_VOID(glFogxvOES, (GLenum pname, const GLfixed *params), (pname, params), 2, "GLenum", pname, "const GLfixed *", params)
+TRACE_GL_VOID(glFramebufferRenderbufferOES, (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer), (target, attachment, renderbuffertarget, renderbuffer), 4, "GLenum", target, "GLenum", attachment, "GLenum", renderbuffertarget, "GLuint", renderbuffer)
+TRACE_GL_VOID(glFramebufferTexture2DMultisampleIMG, (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples), (target, attachment, textarget, texture, level, samples), 6, "GLenum", target, "GLenum", attachment, "GLenum", textarget, "GLuint", texture, "GLint", level, "GLsizei", samples)
+TRACE_GL_VOID(glFramebufferTexture2DOES, (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level), (target, attachment, textarget, texture, level), 5, "GLenum", target, "GLenum", attachment, "GLenum", textarget, "GLuint", texture, "GLint", level)
+TRACE_GL_VOID(glFramebufferTexture3DOES, (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset), (target, attachment, textarget, texture, level, zoffset), 6, "GLenum", target, "GLenum", attachment, "GLenum", textarget, "GLuint", texture, "GLint", level, "GLint", zoffset)
+TRACE_GL_VOID(glFrustumf, (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar), (left, right, bottom, top, zNear, zFar), 6, "GLfloat", left, "GLfloat", right, "GLfloat", bottom, "GLfloat", top, "GLfloat", zNear, "GLfloat", zFar)
+TRACE_GL_VOID(glFrustumfOES, (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar), (left, right, bottom, top, zNear, zFar), 6, "GLfloat", left, "GLfloat", right, "GLfloat", bottom, "GLfloat", top, "GLfloat", zNear, "GLfloat", zFar)
+TRACE_GL_VOID(glFrustumx, (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar), (left, right, bottom, top, zNear, zFar), 6, "GLfixed", left, "GLfixed", right, "GLfixed", bottom, "GLfixed", top, "GLfixed", zNear, "GLfixed", zFar)
+TRACE_GL_VOID(glFrustumxOES, (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar), (left, right, bottom, top, zNear, zFar), 6, "GLfixed", left, "GLfixed", right, "GLfixed", bottom, "GLfixed", top, "GLfixed", zNear, "GLfixed", zFar)
+TRACE_GL_VOID(glGenFencesNV, (GLsizei n, GLuint *fences), (n, fences), 2, "GLsizei", n, "GLuint *", fences)
+TRACE_GL_VOID(glGenFramebuffersOES, (GLsizei n, GLuint* framebuffers), (n, framebuffers), 2, "GLsizei", n, "GLuint*", framebuffers)
+TRACE_GL_VOID(glGenPerfMonitorsAMD, (GLsizei n, GLuint *monitors), (n, monitors), 2, "GLsizei", n, "GLuint *", monitors)
+TRACE_GL_VOID(glGenRenderbuffersOES, (GLsizei n, GLuint* renderbuffers), (n, renderbuffers), 2, "GLsizei", n, "GLuint*", renderbuffers)
+TRACE_GL_VOID(glGenVertexArraysOES, (GLsizei n, GLuint *arrays), (n, arrays), 2, "GLsizei", n, "GLuint *", arrays)
+TRACE_GL_VOID(glGenerateMipmapOES, (GLenum target), (target), 1, "GLenum", target)
+TRACE_GL_VOID(glGetBufferPointervOES, (GLenum target, GLenum pname, GLvoid ** params), (target, pname, params), 3, "GLenum", target, "GLenum", pname, "GLvoid **", params)
+TRACE_GL_VOID(glGetClipPlanef, (GLenum pname, GLfloat eqn[4]), (pname, eqn), 2, "GLenum", pname, "GLfloat", eqn)
+TRACE_GL_VOID(glGetClipPlanefOES, (GLenum pname, GLfloat eqn[4]), (pname, eqn), 2, "GLenum", pname, "GLfloat", eqn)
+TRACE_GL_VOID(glGetClipPlanex, (GLenum pname, GLfixed eqn[4]), (pname, eqn), 2, "GLenum", pname, "GLfixed", eqn)
+TRACE_GL_VOID(glGetClipPlanexOES, (GLenum pname, GLfixed eqn[4]), (pname, eqn), 2, "GLenum", pname, "GLfixed", eqn)
+TRACE_GL_VOID(glGetDriverControlStringQCOM, (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString), (driverControl, bufSize, length, driverControlString), 4, "GLuint", driverControl, "GLsizei", bufSize, "GLsizei *", length, "GLchar *", driverControlString)
+TRACE_GL_VOID(glGetDriverControlsQCOM, (GLint *num, GLsizei size, GLuint *driverControls), (num, size, driverControls), 3, "GLint *", num, "GLsizei", size, "GLuint *", driverControls)
+TRACE_GL_VOID(glGetFenceivNV, (GLuint fence, GLenum pname, GLint *params), (fence, pname, params), 3, "GLuint", fence, "GLenum", pname, "GLint *", params)
+TRACE_GL_VOID(glGetFixedv, (GLenum pname, GLfixed *params), (pname, params), 2, "GLenum", pname, "GLfixed *", params)
+TRACE_GL_VOID(glGetFixedvOES, (GLenum pname, GLfixed *params), (pname, params), 2, "GLenum", pname, "GLfixed *", params)
+TRACE_GL_VOID(glGetFramebufferAttachmentParameterivOES, (GLenum target, GLenum attachment, GLenum pname, GLint* params), (target, attachment, pname, params), 4, "GLenum", target, "GLenum", attachment, "GLenum", pname, "GLint*", params)
+TRACE_GL_VOID(glGetLightfv, (GLenum light, GLenum pname, GLfloat *params), (light, pname, params), 3, "GLenum", light, "GLenum", pname, "GLfloat *", params)
+TRACE_GL_VOID(glGetLightxv, (GLenum light, GLenum pname, GLfixed *params), (light, pname, params), 3, "GLenum", light, "GLenum", pname, "GLfixed *", params)
+TRACE_GL_VOID(glGetLightxvOES, (GLenum light, GLenum pname, GLfixed *params), (light, pname, params), 3, "GLenum", light, "GLenum", pname, "GLfixed *", params)
+TRACE_GL_VOID(glGetMaterialfv, (GLenum face, GLenum pname, GLfloat *params), (face, pname, params), 3, "GLenum", face, "GLenum", pname, "GLfloat *", params)
+TRACE_GL_VOID(glGetMaterialxv, (GLenum face, GLenum pname, GLfixed *params), (face, pname, params), 3, "GLenum", face, "GLenum", pname, "GLfixed *", params)
+TRACE_GL_VOID(glGetMaterialxvOES, (GLenum face, GLenum pname, GLfixed *params), (face, pname, params), 3, "GLenum", face, "GLenum", pname, "GLfixed *", params)
+TRACE_GL_VOID(glGetPerfMonitorCounterDataAMD, (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten), (monitor, pname, dataSize, data, bytesWritten), 5, "GLuint", monitor, "GLenum", pname, "GLsizei", dataSize, "GLuint *", data, "GLint *", bytesWritten)
+TRACE_GL_VOID(glGetPerfMonitorCounterInfoAMD, (GLuint group, GLuint counter, GLenum pname, GLvoid *data), (group, counter, pname, data), 4, "GLuint", group, "GLuint", counter, "GLenum", pname, "GLvoid *", data)
+TRACE_GL_VOID(glGetPerfMonitorCounterStringAMD, (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString), (group, counter, bufSize, length, counterString), 5, "GLuint", group, "GLuint", counter, "GLsizei", bufSize, "GLsizei *", length, "GLchar *", counterString)
+TRACE_GL_VOID(glGetPerfMonitorCountersAMD, (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters), (group, numCounters, maxActiveCounters, counterSize, counters), 5, "GLuint", group, "GLint *", numCounters, "GLint *", maxActiveCounters, "GLsizei", counterSize, "GLuint *", counters)
+TRACE_GL_VOID(glGetPerfMonitorGroupStringAMD, (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString), (group, bufSize, length, groupString), 4, "GLuint", group, "GLsizei", bufSize, "GLsizei *", length, "GLchar *", groupString)
+TRACE_GL_VOID(glGetPerfMonitorGroupsAMD, (GLint *numGroups, GLsizei groupsSize, GLuint *groups), (numGroups, groupsSize, groups), 3, "GLint *", numGroups, "GLsizei", groupsSize, "GLuint *", groups)
+TRACE_GL_VOID(glGetPointerv, (GLenum pname, GLvoid **params), (pname, params), 2, "GLenum", pname, "GLvoid **", params)
+TRACE_GL_VOID(glGetProgramBinaryOES, (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary), (program, bufSize, length, binaryFormat, binary), 5, "GLuint", program, "GLsizei", bufSize, "GLsizei *", length, "GLenum *", binaryFormat, "GLvoid *", binary)
+TRACE_GL_VOID(glGetRenderbufferParameterivOES, (GLenum target, GLenum pname, GLint* params), (target, pname, params), 3, "GLenum", target, "GLenum", pname, "GLint*", params)
+TRACE_GL_VOID(glGetTexEnvfv, (GLenum env, GLenum pname, GLfloat *params), (env, pname, params), 3, "GLenum", env, "GLenum", pname, "GLfloat *", params)
+TRACE_GL_VOID(glGetTexEnviv, (GLenum env, GLenum pname, GLint *params), (env, pname, params), 3, "GLenum", env, "GLenum", pname, "GLint *", params)
+TRACE_GL_VOID(glGetTexEnvxv, (GLenum env, GLenum pname, GLfixed *params), (env, pname, params), 3, "GLenum", env, "GLenum", pname, "GLfixed *", params)
+TRACE_GL_VOID(glGetTexEnvxvOES, (GLenum env, GLenum pname, GLfixed *params), (env, pname, params), 3, "GLenum", env, "GLenum", pname, "GLfixed *", params)
+TRACE_GL_VOID(glGetTexGenfvOES, (GLenum coord, GLenum pname, GLfloat *params), (coord, pname, params), 3, "GLenum", coord, "GLenum", pname, "GLfloat *", params)
+TRACE_GL_VOID(glGetTexGenivOES, (GLenum coord, GLenum pname, GLint *params), (coord, pname, params), 3, "GLenum", coord, "GLenum", pname, "GLint *", params)
+TRACE_GL_VOID(glGetTexGenxvOES, (GLenum coord, GLenum pname, GLfixed *params), (coord, pname, params), 3, "GLenum", coord, "GLenum", pname, "GLfixed *", params)
+TRACE_GL_VOID(glGetTexParameterxv, (GLenum target, GLenum pname, GLfixed *params), (target, pname, params), 3, "GLenum", target, "GLenum", pname, "GLfixed *", params)
+TRACE_GL_VOID(glGetTexParameterxvOES, (GLenum target, GLenum pname, GLfixed *params), (target, pname, params), 3, "GLenum", target, "GLenum", pname, "GLfixed *", params)
+TRACE_GL(GLboolean, glIsFenceNV, (GLuint fence), (fence), 1, "GLuint", fence)
+TRACE_GL(GLboolean, glIsFramebufferOES, (GLuint framebuffer), (framebuffer), 1, "GLuint", framebuffer)
+TRACE_GL(GLboolean, glIsRenderbufferOES, (GLuint renderbuffer), (renderbuffer), 1, "GLuint", renderbuffer)
+TRACE_GL(GLboolean, glIsVertexArrayOES, (GLuint array), (array), 1, "GLuint", array)
+TRACE_GL_VOID(glLightModelf, (GLenum pname, GLfloat param), (pname, param), 2, "GLenum", pname, "GLfloat", param)
+TRACE_GL_VOID(glLightModelfv, (GLenum pname, const GLfloat *params), (pname, params), 2, "GLenum", pname, "const GLfloat *", params)
+TRACE_GL_VOID(glLightModelx, (GLenum pname, GLfixed param), (pname, param), 2, "GLenum", pname, "GLfixed", param)
+TRACE_GL_VOID(glLightModelxOES, (GLenum pname, GLfixed param), (pname, param), 2, "GLenum", pname, "GLfixed", param)
+TRACE_GL_VOID(glLightModelxv, (GLenum pname, const GLfixed *params), (pname, params), 2, "GLenum", pname, "const GLfixed *", params)
+TRACE_GL_VOID(glLightModelxvOES, (GLenum pname, const GLfixed *params), (pname, params), 2, "GLenum", pname, "const GLfixed *", params)
+TRACE_GL_VOID(glLightf, (GLenum light, GLenum pname, GLfloat param), (light, pname, param), 3, "GLenum", light, "GLenum", pname, "GLfloat", param)
+TRACE_GL_VOID(glLightfv, (GLenum light, GLenum pname, const GLfloat *params), (light, pname, params), 3, "GLenum", light, "GLenum", pname, "const GLfloat *", params)
+TRACE_GL_VOID(glLightx, (GLenum light, GLenum pname, GLfixed param), (light, pname, param), 3, "GLenum", light, "GLenum", pname, "GLfixed", param)
+TRACE_GL_VOID(glLightxOES, (GLenum light, GLenum pname, GLfixed param), (light, pname, param), 3, "GLenum", light, "GLenum", pname, "GLfixed", param)
+TRACE_GL_VOID(glLightxv, (GLenum light, GLenum pname, const GLfixed *params), (light, pname, params), 3, "GLenum", light, "GLenum", pname, "const GLfixed *", params)
+TRACE_GL_VOID(glLightxvOES, (GLenum light, GLenum pname, const GLfixed *params), (light, pname, params), 3, "GLenum", light, "GLenum", pname, "const GLfixed *", params)
+TRACE_GL_VOID(glLineWidthx, (GLfixed width), (width), 1, "GLfixed", width)
+TRACE_GL_VOID(glLineWidthxOES, (GLfixed width), (width), 1, "GLfixed", width)
+TRACE_GL_VOID(glLoadIdentity, (void), (), 0)
+TRACE_GL_VOID(glLoadMatrixf, (const GLfloat *m), (m), 1, "const GLfloat *", m)
+TRACE_GL_VOID(glLoadMatrixx, (const GLfixed *m), (m), 1, "const GLfixed *", m)
+TRACE_GL_VOID(glLoadMatrixxOES, (const GLfixed *m), (m), 1, "const GLfixed *", m)
+TRACE_GL_VOID(glLoadPaletteFromModelViewMatrixOES, (void), (), 0)
+TRACE_GL_VOID(glLogicOp, (GLenum opcode), (opcode), 1, "GLenum", opcode)
+TRACE_GL(void*, glMapBufferOES, (GLenum target, GLenum access), (target, access), 2, "GLenum", target, "GLenum", access)
+TRACE_GL_VOID(glMaterialf, (GLenum face, GLenum pname, GLfloat param), (face, pname, param), 3, "GLenum", face, "GLenum", pname, "GLfloat", param)
+TRACE_GL_VOID(glMaterialfv, (GLenum face, GLenum pname, const GLfloat *params), (face, pname, params), 3, "GLenum", face, "GLenum", pname, "const GLfloat *", params)
+TRACE_GL_VOID(glMaterialx, (GLenum face, GLenum pname, GLfixed param), (face, pname, param), 3, "GLenum", face, "GLenum", pname, "GLfixed", param)
+TRACE_GL_VOID(glMaterialxOES, (GLenum face, GLenum pname, GLfixed param), (face, pname, param), 3, "GLenum", face, "GLenum", pname, "GLfixed", param)
+TRACE_GL_VOID(glMaterialxv, (GLenum face, GLenum pname, const GLfixed *params), (face, pname, params), 3, "GLenum", face, "GLenum", pname, "const GLfixed *", params)
+TRACE_GL_VOID(glMaterialxvOES, (GLenum face, GLenum pname, const GLfixed *params), (face, pname, params), 3, "GLenum", face, "GLenum", pname, "const GLfixed *", params)
+TRACE_GL_VOID(glMatrixIndexPointerOES, (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer), (size, type, stride, pointer), 4, "GLint", size, "GLenum", type, "GLsizei", stride, "const GLvoid *", pointer)
+TRACE_GL_VOID(glMatrixMode, (GLenum mode), (mode), 1, "GLenum", mode)
+TRACE_GL_VOID(glMultMatrixf, (const GLfloat *m), (m), 1, "const GLfloat *", m)
+TRACE_GL_VOID(glMultMatrixx, (const GLfixed *m), (m), 1, "const GLfixed *", m)
+TRACE_GL_VOID(glMultMatrixxOES, (const GLfixed *m), (m), 1, "const GLfixed *", m)
+TRACE_GL_VOID(glMultiDrawArraysEXT, (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount), (mode, first, count, primcount), 4, "GLenum", mode, "GLint *", first, "GLsizei *", count, "GLsizei", primcount)
+TRACE_GL_VOID(glMultiDrawElementsEXT, (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount), (mode, count, type, indices, primcount), 5, "GLenum", mode, "const GLsizei *", count, "GLenum", type, "const GLvoid* *", indices, "GLsizei", primcount)
+TRACE_GL_VOID(glMultiTexCoord4f, (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q), (target, s, t, r, q), 5, "GLenum", target, "GLfloat", s, "GLfloat", t, "GLfloat", r, "GLfloat", q)
+TRACE_GL_VOID(glMultiTexCoord4x, (GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q), (target, s, t, r, q), 5, "GLenum", target, "GLfixed", s, "GLfixed", t, "GLfixed", r, "GLfixed", q)
+TRACE_GL_VOID(glMultiTexCoord4xOES, (GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q), (target, s, t, r, q), 5, "GLenum", target, "GLfixed", s, "GLfixed", t, "GLfixed", r, "GLfixed", q)
+TRACE_GL_VOID(glNormal3f, (GLfloat nx, GLfloat ny, GLfloat nz), (nx, ny, nz), 3, "GLfloat", nx, "GLfloat", ny, "GLfloat", nz)
+TRACE_GL_VOID(glNormal3x, (GLfixed nx, GLfixed ny, GLfixed nz), (nx, ny, nz), 3, "GLfixed", nx, "GLfixed", ny, "GLfixed", nz)
+TRACE_GL_VOID(glNormal3xOES, (GLfixed nx, GLfixed ny, GLfixed nz), (nx, ny, nz), 3, "GLfixed", nx, "GLfixed", ny, "GLfixed", nz)
+TRACE_GL_VOID(glNormalPointer, (GLenum type, GLsizei stride, const GLvoid *pointer), (type, stride, pointer), 3, "GLenum", type, "GLsizei", stride, "const GLvoid *", pointer)
+TRACE_GL_VOID(glOrthof, (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar), (left, right, bottom, top, zNear, zFar), 6, "GLfloat", left, "GLfloat", right, "GLfloat", bottom, "GLfloat", top, "GLfloat", zNear, "GLfloat", zFar)
+TRACE_GL_VOID(glOrthofOES, (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar), (left, right, bottom, top, zNear, zFar), 6, "GLfloat", left, "GLfloat", right, "GLfloat", bottom, "GLfloat", top, "GLfloat", zNear, "GLfloat", zFar)
+TRACE_GL_VOID(glOrthox, (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar), (left, right, bottom, top, zNear, zFar), 6, "GLfixed", left, "GLfixed", right, "GLfixed", bottom, "GLfixed", top, "GLfixed", zNear, "GLfixed", zFar)
+TRACE_GL_VOID(glOrthoxOES, (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar), (left, right, bottom, top, zNear, zFar), 6, "GLfixed", left, "GLfixed", right, "GLfixed", bottom, "GLfixed", top, "GLfixed", zNear, "GLfixed", zFar)
+TRACE_GL_VOID(glPointParameterf, (GLenum pname, GLfloat param), (pname, param), 2, "GLenum", pname, "GLfloat", param)
+TRACE_GL_VOID(glPointParameterfv, (GLenum pname, const GLfloat *params), (pname, params), 2, "GLenum", pname, "const GLfloat *", params)
+TRACE_GL_VOID(glPointParameterx, (GLenum pname, GLfixed param), (pname, param), 2, "GLenum", pname, "GLfixed", param)
+TRACE_GL_VOID(glPointParameterxOES, (GLenum pname, GLfixed param), (pname, param), 2, "GLenum", pname, "GLfixed", param)
+TRACE_GL_VOID(glPointParameterxv, (GLenum pname, const GLfixed *params), (pname, params), 2, "GLenum", pname, "const GLfixed *", params)
+TRACE_GL_VOID(glPointParameterxvOES, (GLenum pname, const GLfixed *params), (pname, params), 2, "GLenum", pname, "const GLfixed *", params)
+TRACE_GL_VOID(glPointSize, (GLfloat size), (size), 1, "GLfloat", size)
+TRACE_GL_VOID(glPointSizePointerOES, (GLenum type, GLsizei stride, const GLvoid *pointer), (type, stride, pointer), 3, "GLenum", type, "GLsizei", stride, "const GLvoid *", pointer)
+TRACE_GL_VOID(glPointSizex, (GLfixed size), (size), 1, "GLfixed", size)
+TRACE_GL_VOID(glPointSizexOES, (GLfixed size), (size), 1, "GLfixed", size)
+TRACE_GL_VOID(glPolygonOffsetx, (GLfixed factor, GLfixed units), (factor, units), 2, "GLfixed", factor, "GLfixed", units)
+TRACE_GL_VOID(glPolygonOffsetxOES, (GLfixed factor, GLfixed units), (factor, units), 2, "GLfixed", factor, "GLfixed", units)
+TRACE_GL_VOID(glPopMatrix, (void), (), 0)
+TRACE_GL_VOID(glProgramBinaryOES, (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length), (program, binaryFormat, binary, length), 4, "GLuint", program, "GLenum", binaryFormat, "const GLvoid *", binary, "GLint", length)
+TRACE_GL_VOID(glPushMatrix, (void), (), 0)
+TRACE_GL(GLbitfield, glQueryMatrixxOES, (GLfixed mantissa[16], GLint exponent[16]), (mantissa, exponent), 2, "GLfixed", mantissa, "GLint", exponent)
+TRACE_GL_VOID(glRenderbufferStorageMultisampleIMG, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height), (target, samples, internalformat, width, height), 5, "GLenum", target, "GLsizei", samples, "GLenum", internalformat, "GLsizei", width, "GLsizei", height)
+TRACE_GL_VOID(glRenderbufferStorageOES, (GLenum target, GLenum internalformat, GLsizei width, GLsizei height), (target, internalformat, width, height), 4, "GLenum", target, "GLenum", internalformat, "GLsizei", width, "GLsizei", height)
+TRACE_GL_VOID(glRotatef, (GLfloat angle, GLfloat x, GLfloat y, GLfloat z), (angle, x, y, z), 4, "GLfloat", angle, "GLfloat", x, "GLfloat", y, "GLfloat", z)
+TRACE_GL_VOID(glRotatex, (GLfixed angle, GLfixed x, GLfixed y, GLfixed z), (angle, x, y, z), 4, "GLfixed", angle, "GLfixed", x, "GLfixed", y, "GLfixed", z)
+TRACE_GL_VOID(glRotatexOES, (GLfixed angle, GLfixed x, GLfixed y, GLfixed z), (angle, x, y, z), 4, "GLfixed", angle, "GLfixed", x, "GLfixed", y, "GLfixed", z)
+TRACE_GL_VOID(glSampleCoveragex, (GLclampx value, GLboolean invert), (value, invert), 2, "GLclampx", value, "GLboolean", invert)
+TRACE_GL_VOID(glSampleCoveragexOES, (GLclampx value, GLboolean invert), (value, invert), 2, "GLclampx", value, "GLboolean", invert)
+TRACE_GL_VOID(glScalef, (GLfloat x, GLfloat y, GLfloat z), (x, y, z), 3, "GLfloat", x, "GLfloat", y, "GLfloat", z)
+TRACE_GL_VOID(glScalex, (GLfixed x, GLfixed y, GLfixed z), (x, y, z), 3, "GLfixed", x, "GLfixed", y, "GLfixed", z)
+TRACE_GL_VOID(glScalexOES, (GLfixed x, GLfixed y, GLfixed z), (x, y, z), 3, "GLfixed", x, "GLfixed", y, "GLfixed", z)
+TRACE_GL_VOID(glSelectPerfMonitorCountersAMD, (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList), (monitor, enable, group, numCounters, countersList), 5, "GLuint", monitor, "GLboolean", enable, "GLuint", group, "GLint", numCounters, "GLuint *", countersList)
+TRACE_GL_VOID(glSetFenceNV, (GLuint fence, GLenum condition), (fence, condition), 2, "GLuint", fence, "GLenum", condition)
+TRACE_GL_VOID(glShadeModel, (GLenum mode), (mode), 1, "GLenum", mode)
+TRACE_GL_VOID(glStartTilingQCOM, (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask), (x, y, width, height, preserveMask), 5, "GLuint", x, "GLuint", y, "GLuint", width, "GLuint", height, "GLbitfield", preserveMask)
+TRACE_GL(GLboolean, glTestFenceNV, (GLuint fence), (fence), 1, "GLuint", fence)
+TRACE_GL_VOID(glTexCoordPointer, (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer), (size, type, stride, pointer), 4, "GLint", size, "GLenum", type, "GLsizei", stride, "const GLvoid *", pointer)
+TRACE_GL_VOID(glTexEnvf, (GLenum target, GLenum pname, GLfloat param), (target, pname, param), 3, "GLenum", target, "GLenum", pname, "GLfloat", param)
+TRACE_GL_VOID(glTexEnvfv, (GLenum target, GLenum pname, const GLfloat *params), (target, pname, params), 3, "GLenum", target, "GLenum", pname, "const GLfloat *", params)
+TRACE_GL_VOID(glTexEnvi, (GLenum target, GLenum pname, GLint param), (target, pname, param), 3, "GLenum", target, "GLenum", pname, "GLint", param)
+TRACE_GL_VOID(glTexEnviv, (GLenum target, GLenum pname, const GLint *params), (target, pname, params), 3, "GLenum", target, "GLenum", pname, "const GLint *", params)
+TRACE_GL_VOID(glTexEnvx, (GLenum target, GLenum pname, GLfixed param), (target, pname, param), 3, "GLenum", target, "GLenum", pname, "GLfixed", param)
+TRACE_GL_VOID(glTexEnvxOES, (GLenum target, GLenum pname, GLfixed param), (target, pname, param), 3, "GLenum", target, "GLenum", pname, "GLfixed", param)
+TRACE_GL_VOID(glTexEnvxv, (GLenum target, GLenum pname, const GLfixed *params), (target, pname, params), 3, "GLenum", target, "GLenum", pname, "const GLfixed *", params)
+TRACE_GL_VOID(glTexEnvxvOES, (GLenum target, GLenum pname, const GLfixed *params), (target, pname, params), 3, "GLenum", target, "GLenum", pname, "const GLfixed *", params)
+TRACE_GL_VOID(glTexGenfOES, (GLenum coord, GLenum pname, GLfloat param), (coord, pname, param), 3, "GLenum", coord, "GLenum", pname, "GLfloat", param)
+TRACE_GL_VOID(glTexGenfvOES, (GLenum coord, GLenum pname, const GLfloat *params), (coord, pname, params), 3, "GLenum", coord, "GLenum", pname, "const GLfloat *", params)
+TRACE_GL_VOID(glTexGeniOES, (GLenum coord, GLenum pname, GLint param), (coord, pname, param), 3, "GLenum", coord, "GLenum", pname, "GLint", param)
+TRACE_GL_VOID(glTexGenivOES, (GLenum coord, GLenum pname, const GLint *params), (coord, pname, params), 3, "GLenum", coord, "GLenum", pname, "const GLint *", params)
+TRACE_GL_VOID(glTexGenxOES, (GLenum coord, GLenum pname, GLfixed param), (coord, pname, param), 3, "GLenum", coord, "GLenum", pname, "GLfixed", param)
+TRACE_GL_VOID(glTexGenxvOES, (GLenum coord, GLenum pname, const GLfixed *params), (coord, pname, params), 3, "GLenum", coord, "GLenum", pname, "const GLfixed *", params)
+TRACE_GL_VOID(glTexImage3DOES, (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels), (target, level, internalformat, width, height, depth, border, format, type, pixels), 10, "GLenum", target, "GLint", level, "GLenum", internalformat, "GLsizei", width, "GLsizei", height, "GLsizei", depth, "GLint", border, "GLenum", format, "GLenum", type, "const GLvoid*", pixels)
+TRACE_GL_VOID(glTexParameterx, (GLenum target, GLenum pname, GLfixed param), (target, pname, param), 3, "GLenum", target, "GLenum", pname, "GLfixed", param)
+TRACE_GL_VOID(glTexParameterxOES, (GLenum target, GLenum pname, GLfixed param), (target, pname, param), 3, "GLenum", target, "GLenum", pname, "GLfixed", param)
+TRACE_GL_VOID(glTexParameterxv, (GLenum target, GLenum pname, const GLfixed *params), (target, pname, params), 3, "GLenum", target, "GLenum", pname, "const GLfixed *", params)
+TRACE_GL_VOID(glTexParameterxvOES, (GLenum target, GLenum pname, const GLfixed *params), (target, pname, params), 3, "GLenum", target, "GLenum", pname, "const GLfixed *", params)
+TRACE_GL_VOID(glTexSubImage3DOES, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels), (target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels), 11, "GLenum", target, "GLint", level, "GLint", xoffset, "GLint", yoffset, "GLint", zoffset, "GLsizei", width, "GLsizei", height, "GLsizei", depth, "GLenum", format, "GLenum", type, "const GLvoid*", pixels)
+TRACE_GL_VOID(glTranslatef, (GLfloat x, GLfloat y, GLfloat z), (x, y, z), 3, "GLfloat", x, "GLfloat", y, "GLfloat", z)
+TRACE_GL_VOID(glTranslatex, (GLfixed x, GLfixed y, GLfixed z), (x, y, z), 3, "GLfixed", x, "GLfixed", y, "GLfixed", z)
+TRACE_GL_VOID(glTranslatexOES, (GLfixed x, GLfixed y, GLfixed z), (x, y, z), 3, "GLfixed", x, "GLfixed", y, "GLfixed", z)
+TRACE_GL(GLboolean, glUnmapBufferOES, (GLenum target), (target), 1, "GLenum", target)
+TRACE_GL_VOID(glVertexPointer, (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer), (size, type, stride, pointer), 4, "GLint", size, "GLenum", type, "GLsizei", stride, "const GLvoid *", pointer)
+TRACE_GL_VOID(glWeightPointerOES, (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer), (size, type, stride, pointer), 4, "GLint", size, "GLenum", type, "GLsizei", stride, "const GLvoid *", pointer)