summaryrefslogtreecommitdiffstats
path: root/opengl/libs/GLES2_dbg
diff options
context:
space:
mode:
Diffstat (limited to 'opengl/libs/GLES2_dbg')
-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
16 files changed, 9681 insertions, 0 deletions
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;
+ }
+ }
+}