aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSiva Velusamy <vsiva@google.com>2011-09-06 13:58:27 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-09-06 13:58:27 -0700
commit047c65d0982149f47975a004c320ae85eae47e8e (patch)
tree0d65bd71720d6b5025603c27c2be6427fe1db19b
parent4ef781614055685c864c3cdd586f7f5af9b826c7 (diff)
parentffecfc592fb81d0a5fdbe412aa3b9c1e2559327a (diff)
downloadsdk-047c65d0982149f47975a004c320ae85eae47e8e.zip
sdk-047c65d0982149f47975a004c320ae85eae47e8e.tar.gz
sdk-047c65d0982149f47975a004c320ae85eae47e8e.tar.bz2
Merge "GLES2Dbg: Initial commit of OpenGL ES 2.0 Debugger Client"
-rwxr-xr-xeclipse/plugins/com.android.ide.eclipse.gldebugger/.classpath8
-rwxr-xr-xeclipse/plugins/com.android.ide.eclipse.gldebugger/.project28
-rwxr-xr-xeclipse/plugins/com.android.ide.eclipse.gldebugger/META-INF/MANIFEST.MF12
-rwxr-xr-xeclipse/plugins/com.android.ide.eclipse.gldebugger/build.properties8
-rwxr-xr-xeclipse/plugins/com.android.ide.eclipse.gldebugger/contexts.xml12
-rwxr-xr-xeclipse/plugins/com.android.ide.eclipse.gldebugger/generate_GLEnum_java.py73
-rwxr-xr-xeclipse/plugins/com.android.ide.eclipse.gldebugger/generate_GLFunction_java.py67
-rwxr-xr-xeclipse/plugins/com.android.ide.eclipse.gldebugger/generate_MessageFormatter_java.py249
-rwxr-xr-xeclipse/plugins/com.android.ide.eclipse.gldebugger/icons/sample.gifbin0 -> 983 bytes
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.gldebugger/lib/host-libprotobuf-java-2.3.0-lite.jarbin0 -> 50437 bytes
-rwxr-xr-xeclipse/plugins/com.android.ide.eclipse.gldebugger/plugin.xml34
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.gldebugger/src/META-INF/MANIFEST.MF3
-rwxr-xr-xeclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/Activator.java81
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/DebuggerMessage.java1463
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/GLEnum.java632
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/GLFunction.java173
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/MessageData.java89
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/MessageFormatter.java396
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/MessageProcessor.java148
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/MessageQueue.java263
-rwxr-xr-xeclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/SampleView.java587
21 files changed, 4326 insertions, 0 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.gldebugger/.classpath b/eclipse/plugins/com.android.ide.eclipse.gldebugger/.classpath
new file mode 100755
index 0000000..1ef2c20
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.gldebugger/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry exported="true" kind="lib" path="lib/host-libprotobuf-java-2.3.0-lite.jar"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/eclipse/plugins/com.android.ide.eclipse.gldebugger/.project b/eclipse/plugins/com.android.ide.eclipse.gldebugger/.project
new file mode 100755
index 0000000..0c974ca
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.gldebugger/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>GLESv2DebuggerClient</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/eclipse/plugins/com.android.ide.eclipse.gldebugger/META-INF/MANIFEST.MF b/eclipse/plugins/com.android.ide.eclipse.gldebugger/META-INF/MANIFEST.MF
new file mode 100755
index 0000000..70b330f
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.gldebugger/META-INF/MANIFEST.MF
@@ -0,0 +1,12 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: GLESv2DebuggerClient
+Bundle-SymbolicName: GLESv2DebuggerClient; singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: com.android.glesv2debugger.Activator
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-ClassPath: lib/host-libprotobuf-java-2.3.0-lite.jar,
+ .
diff --git a/eclipse/plugins/com.android.ide.eclipse.gldebugger/build.properties b/eclipse/plugins/com.android.ide.eclipse.gldebugger/build.properties
new file mode 100755
index 0000000..6272a36
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.gldebugger/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = bin/
+bin.includes = plugin.xml,\
+ META-INF/,\
+ .,\
+ icons/,\
+ contexts.xml,\
+ lib/host-libprotobuf-java-2.3.0-lite.jar
diff --git a/eclipse/plugins/com.android.ide.eclipse.gldebugger/contexts.xml b/eclipse/plugins/com.android.ide.eclipse.gldebugger/contexts.xml
new file mode 100755
index 0000000..02e26e4
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.gldebugger/contexts.xml
@@ -0,0 +1,12 @@
+<contexts>
+ <context id="viewer" title="Sample View">
+ <description>This is the context help for the sample view with a table viewer. It was generated by a PDE template.</description>
+ <topic href="/PLUGINS_ROOT/org.eclipse.platform.doc.isv/guide/ua_help_context.htm" label="Context-sensitive help">
+ <enablement>
+ <with variable="platform">
+ <test property="org.eclipse.core.runtime.isBundleInstalled" args="org.eclipse.platform.doc.isv"/>
+ </with>
+ </enablement>
+ </topic>
+ </context>
+</contexts>
diff --git a/eclipse/plugins/com.android.ide.eclipse.gldebugger/generate_GLEnum_java.py b/eclipse/plugins/com.android.ide.eclipse.gldebugger/generate_GLEnum_java.py
new file mode 100755
index 0000000..cf543c8
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.gldebugger/generate_GLEnum_java.py
@@ -0,0 +1,73 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+#
+# 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.
+#
+
+if __name__ == "__main__":
+ externs = []
+ lines = open("../../../frameworks/base/opengl/libs/enums.in").readlines()
+ output = open("src/com/android/glesv2debugger/GLEnum.java", "w")
+ i = 0
+ output.write(
+"""/*
+ ** 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.
+ */
+
+// auto generated by generate_GLEnum_java.py"
+
+package com.android.glesv2debugger;
+
+public enum GLEnum {
+""")
+
+ index = 0
+ for line in lines:
+ value = line[line.find("(") + 1: line.find(",")]
+ name = line[line.find(",") + 1: line.find(")")]
+ output.write(" %s(%s),\n" % (name, value))
+
+ output.write(""" ;
+
+ public final int value;
+ GLEnum(final int value) {
+ this.value = value;
+ }
+
+ private static final java.util.HashMap<Integer, GLEnum> reverseMap = new java.util.HashMap<Integer, GLEnum>();
+ static {
+ for (GLEnum e : GLEnum.values())
+ reverseMap.put(e.value, e);
+ }
+
+ public static GLEnum valueOf(final int value) {
+ return reverseMap.get(value);
+ }
+}""")
+
+
diff --git a/eclipse/plugins/com.android.ide.eclipse.gldebugger/generate_GLFunction_java.py b/eclipse/plugins/com.android.ide.eclipse.gldebugger/generate_GLFunction_java.py
new file mode 100755
index 0000000..da05690
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.gldebugger/generate_GLFunction_java.py
@@ -0,0 +1,67 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+#
+# 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.
+#
+
+if __name__ == "__main__":
+ externs = []
+ lines = open("../../../frameworks/base/opengl/libs/GLES2_dbg/gl2_api_annotated.in").readlines()
+ output = open("src/com/android/glesv2debugger/GLFunction.java", "w")
+ i = 0
+ output.write(
+"""/*
+ ** 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.
+ */
+
+// auto generated by generate_GLFunction_java.py"
+
+package com.android.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
+ output.write(" %s(%d, DebuggerMessage.Message.Function.%s),\n" % (functionName, index, functionName))
+ index += 1
+ output.write(""" ;
+
+ public final int index;
+ public final DebuggerMessage.Message.Function function;
+
+ GLFunction(final int index, final DebuggerMessage.Message.Function function) {
+ this.index = index;
+ this.function = function;
+ }
+}""")
+
+
diff --git a/eclipse/plugins/com.android.ide.eclipse.gldebugger/generate_MessageFormatter_java.py b/eclipse/plugins/com.android.ide.eclipse.gldebugger/generate_MessageFormatter_java.py
new file mode 100755
index 0000000..b6c67a9
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.gldebugger/generate_MessageFormatter_java.py
@@ -0,0 +1,249 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+#
+# 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.
+#
+
+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("../../../frameworks/base/opengl/libs/GLES2_dbg/gl2_api_annotated.in").readlines()
+ output = open("src/com/android/glesv2debugger/MessageFormatter.java", "w")
+
+ i = 0
+ output.write(
+"""/*
+ ** 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.
+ */
+
+// auto generated by generate_MessageFormatter_java.py"
+
+package com.android.glesv2debugger;
+
+import java.nio.ByteBuffer;
+
+public class MessageFormatter {
+
+ static String FormatFloats(int count, final ByteBuffer data) {
+ String ret = "[";
+ for (int i = 0; i < count; i++)
+ {
+ ret += Float.intBitsToFloat(Integer.reverseBytes(data.getInt()));
+ if (i < count - 1)
+ ret += ", ";
+ }
+ return ret + "]";
+ }
+
+ static String FormatInts(int count, final ByteBuffer data) {
+ String ret = "[";
+ for (int i = 0; i < count; i++)
+ {
+ ret += Integer.reverseBytes(data.getInt());
+ if (i < count - 1)
+ ret += ", ";
+ }
+ return ret + "]";
+ }
+
+ static String FormatUints(int count, final ByteBuffer data) {
+ String ret = "[";
+ for (int i = 0; i < count; i++)
+ {
+ long bits = Integer.reverseBytes(data.getInt()) & 0xffffffff;
+ ret += bits;
+ if (i < count - 1)
+ ret += ", ";
+ }
+ return ret + "]";
+ }
+
+ static String FormatMatrix(int columns, int count, final ByteBuffer data) {
+ String ret = "[";
+ for (int i = 0; i < count; i++)
+ {
+ ret += Float.intBitsToFloat(Integer.reverseBytes(data.getInt()));
+ if (i % columns == columns - 1)
+ ret += '\\n';
+ else if (i < count - 1)
+ ret += ", ";
+ }
+ return ret + "]";
+ }
+
+ public static String Format(final DebuggerMessage.Message msg) {
+ String str;
+ switch (msg.getFunction()) {
+""")
+
+ 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(") {")]
+
+ 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 = []
+ inout = ""
+
+ paramNames = []
+
+ 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 inout == "" # only one parameter should be annotated
+ inout = paramType.split(":")[2]
+ annotation = paramType.split(":")[1]
+ paramType = paramType.split(":")[0]
+ count = 1
+ countArg = ""
+ if annotation.find("*") >= 0: # [1,n] * param
+ 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"
+ elif paramType.find("void") >= 0:
+ assert 1
+ 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().asReadOnlyByteBuffer())" % (columns, count, paramNames.index(countArg))
+ elif annotation == "GLstring":
+ formatArgs += ", msg.getData().toStringUtf8()"
+ elif paramType.find("void") >= 0:
+ formatArgs += ', "0x" + Integer.toHexString(msg.getArg%d())' % (paramIndex)
+ elif countArg == "":
+ formatArgs += ", %s(%d, msg.getData().asReadOnlyByteBuffer())" % (dataFormatter, count)
+ else:
+ formatArgs += ", %s(%d * msg.getArg%d(), msg.getData().asReadOnlyByteBuffer())" % (dataFormatter, count, paramNames.index(countArg))
+ else:
+ 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 += ", "
+ paramNames.append(paramName)
+ paramIndex += 1
+
+
+ formatString += ")"
+
+ output.write(" case %s:\n" % (functionName))
+ if line.find("*") >= 0 and (line.find("*") < line.find(":") or line.find("*") > line.rfind(":")):
+ sys.stderr.write(line)
+ output.write(" // FIXME: this function uses pointers, debugger may send data in msg.data\n")
+ output.write(' str = String.format("%s", %s); break;\n' % (formatString, formatArgs))
+
+
+ output.write(""" default:
+ str = msg.toString();
+ }
+ return str;
+ }
+}""")
+
+''' print """/*
+package GLESv2Debugger;
+
+public class MessageFormatterCustom {
+
+ public static String Format(final DebuggerMessage.Message msg) {
+ String str;
+ switch (msg.getFunction()) {"""
+
+ for extern in externs:
+ print " case %s" % (extern)
+ print " // TODO:"
+
+print """ default:
+ str = msg.toString();
+ }
+ return str;
+ }
+}
+*/""" '''
+
+
diff --git a/eclipse/plugins/com.android.ide.eclipse.gldebugger/icons/sample.gif b/eclipse/plugins/com.android.ide.eclipse.gldebugger/icons/sample.gif
new file mode 100755
index 0000000..34fb3c9
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.gldebugger/icons/sample.gif
Binary files differ
diff --git a/eclipse/plugins/com.android.ide.eclipse.gldebugger/lib/host-libprotobuf-java-2.3.0-lite.jar b/eclipse/plugins/com.android.ide.eclipse.gldebugger/lib/host-libprotobuf-java-2.3.0-lite.jar
new file mode 100644
index 0000000..667d407
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.gldebugger/lib/host-libprotobuf-java-2.3.0-lite.jar
Binary files differ
diff --git a/eclipse/plugins/com.android.ide.eclipse.gldebugger/plugin.xml b/eclipse/plugins/com.android.ide.eclipse.gldebugger/plugin.xml
new file mode 100755
index 0000000..f1512a5
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.gldebugger/plugin.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+
+ <extension
+ point="org.eclipse.ui.views">
+ <view
+ name="OpenGL ES 2.0 Debugger"
+ icon="icons/sample.gif"
+ category="org.eclipse.debug.ui"
+ class="com.android.glesv2debugger.SampleView"
+ id="glesv2debuggerclient.views.SampleView">
+ </view>
+ </extension>
+ <extension
+ point="org.eclipse.ui.perspectiveExtensions">
+ <perspectiveExtension
+ targetID="org.eclipse.jdt.ui.JavaPerspective">
+ <view
+ ratio="0.5"
+ relative="org.eclipse.ui.views.TaskList"
+ relationship="right"
+ id="glesv2debuggerclient.views.SampleView">
+ </view>
+ </perspectiveExtension>
+ </extension>
+ <extension
+ point="org.eclipse.help.contexts">
+ <contexts
+ file="contexts.xml">
+ </contexts>
+ </extension>
+
+</plugin>
diff --git a/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/META-INF/MANIFEST.MF b/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..212b27a
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Created-By: 1.6.0_22 (Sun Microsystems Inc.)
+
diff --git a/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/Activator.java b/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/Activator.java
new file mode 100755
index 0000000..f859510
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/Activator.java
@@ -0,0 +1,81 @@
+/*
+ ** 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.
+ */
+
+package com.android.glesv2debugger;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "GLESv2DebuggerClient"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
+ * org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext
+ * )
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
+ * org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext
+ * )
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+ /**
+ * Returns an image descriptor for the image file at the given plug-in
+ * relative path
+ *
+ * @param path the path
+ * @return the image descriptor
+ */
+ public static ImageDescriptor getImageDescriptor(String path) {
+ return imageDescriptorFromPlugin(PLUGIN_ID, path);
+ }
+}
diff --git a/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/DebuggerMessage.java b/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/DebuggerMessage.java
new file mode 100644
index 0000000..fa1d7ed
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/DebuggerMessage.java
@@ -0,0 +1,1463 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: debugger_message.proto
+
+package com.android.glesv2debugger;
+
+public final class DebuggerMessage {
+ private DebuggerMessage() {}
+ public static void registerAllExtensions(
+ com.google.protobuf.ExtensionRegistryLite registry) {
+ }
+ public static final class Message extends
+ com.google.protobuf.GeneratedMessageLite {
+ // Use Message.newBuilder() to construct.
+ private Message() {
+ initFields();
+ }
+ private Message(boolean noInit) {}
+
+ private static final Message defaultInstance;
+ public static Message getDefaultInstance() {
+ return defaultInstance;
+ }
+
+ public Message getDefaultInstanceForType() {
+ return defaultInstance;
+ }
+
+ public enum Function
+ implements com.google.protobuf.Internal.EnumLite {
+ glActiveTexture(0, 0),
+ glAttachShader(1, 1),
+ glBindAttribLocation(2, 2),
+ glBindBuffer(3, 3),
+ glBindFramebuffer(4, 4),
+ glBindRenderbuffer(5, 5),
+ glBindTexture(6, 6),
+ glBlendColor(7, 7),
+ glBlendEquation(8, 8),
+ glBlendEquationSeparate(9, 9),
+ glBlendFunc(10, 10),
+ glBlendFuncSeparate(11, 11),
+ glBufferData(12, 12),
+ glBufferSubData(13, 13),
+ glCheckFramebufferStatus(14, 14),
+ glClear(15, 15),
+ glClearColor(16, 16),
+ glClearDepthf(17, 17),
+ glClearStencil(18, 18),
+ glColorMask(19, 19),
+ glCompileShader(20, 20),
+ glCompressedTexImage2D(21, 21),
+ glCompressedTexSubImage2D(22, 22),
+ glCopyTexImage2D(23, 23),
+ glCopyTexSubImage2D(24, 24),
+ glCreateProgram(25, 25),
+ glCreateShader(26, 26),
+ glCullFace(27, 27),
+ glDeleteBuffers(28, 28),
+ glDeleteFramebuffers(29, 29),
+ glDeleteProgram(30, 30),
+ glDeleteRenderbuffers(31, 31),
+ glDeleteShader(32, 32),
+ glDeleteTextures(33, 33),
+ glDepthFunc(34, 34),
+ glDepthMask(35, 35),
+ glDepthRangef(36, 36),
+ glDetachShader(37, 37),
+ glDisable(38, 38),
+ glDisableVertexAttribArray(39, 39),
+ glDrawArrays(40, 40),
+ glDrawElements(41, 41),
+ glEnable(42, 42),
+ glEnableVertexAttribArray(43, 43),
+ glFinish(44, 44),
+ glFlush(45, 45),
+ glFramebufferRenderbuffer(46, 46),
+ glFramebufferTexture2D(47, 47),
+ glFrontFace(48, 48),
+ glGenBuffers(49, 49),
+ glGenerateMipmap(50, 50),
+ glGenFramebuffers(51, 51),
+ glGenRenderbuffers(52, 52),
+ glGenTextures(53, 53),
+ glGetActiveAttrib(54, 54),
+ glGetActiveUniform(55, 55),
+ glGetAttachedShaders(56, 56),
+ glGetAttribLocation(57, 57),
+ glGetBooleanv(58, 58),
+ glGetBufferParameteriv(59, 59),
+ glGetError(60, 60),
+ glGetFloatv(61, 61),
+ glGetFramebufferAttachmentParameteriv(62, 62),
+ glGetIntegerv(63, 63),
+ glGetProgramiv(64, 64),
+ glGetProgramInfoLog(65, 65),
+ glGetRenderbufferParameteriv(66, 66),
+ glGetShaderiv(67, 67),
+ glGetShaderInfoLog(68, 68),
+ glGetShaderPrecisionFormat(69, 69),
+ glGetShaderSource(70, 70),
+ glGetString(71, 71),
+ glGetTexParameterfv(72, 72),
+ glGetTexParameteriv(73, 73),
+ glGetUniformfv(74, 74),
+ glGetUniformiv(75, 75),
+ glGetUniformLocation(76, 76),
+ glGetVertexAttribfv(77, 77),
+ glGetVertexAttribiv(78, 78),
+ glGetVertexAttribPointerv(79, 79),
+ glHint(80, 80),
+ glIsBuffer(81, 81),
+ glIsEnabled(82, 82),
+ glIsFramebuffer(83, 83),
+ glIsProgram(84, 84),
+ glIsRenderbuffer(85, 85),
+ glIsShader(86, 86),
+ glIsTexture(87, 87),
+ glLineWidth(88, 88),
+ glLinkProgram(89, 89),
+ glPixelStorei(90, 90),
+ glPolygonOffset(91, 91),
+ glReadPixels(92, 92),
+ glReleaseShaderCompiler(93, 93),
+ glRenderbufferStorage(94, 94),
+ glSampleCoverage(95, 95),
+ glScissor(96, 96),
+ glShaderBinary(97, 97),
+ glShaderSource(98, 98),
+ glStencilFunc(99, 99),
+ glStencilFuncSeparate(100, 100),
+ glStencilMask(101, 101),
+ glStencilMaskSeparate(102, 102),
+ glStencilOp(103, 103),
+ glStencilOpSeparate(104, 104),
+ glTexImage2D(105, 105),
+ glTexParameterf(106, 106),
+ glTexParameterfv(107, 107),
+ glTexParameteri(108, 108),
+ glTexParameteriv(109, 109),
+ glTexSubImage2D(110, 110),
+ glUniform1f(111, 111),
+ glUniform1fv(112, 112),
+ glUniform1i(113, 113),
+ glUniform1iv(114, 114),
+ glUniform2f(115, 115),
+ glUniform2fv(116, 116),
+ glUniform2i(117, 117),
+ glUniform2iv(118, 118),
+ glUniform3f(119, 119),
+ glUniform3fv(120, 120),
+ glUniform3i(121, 121),
+ glUniform3iv(122, 122),
+ glUniform4f(123, 123),
+ glUniform4fv(124, 124),
+ glUniform4i(125, 125),
+ glUniform4iv(126, 126),
+ glUniformMatrix2fv(127, 127),
+ glUniformMatrix3fv(128, 128),
+ glUniformMatrix4fv(129, 129),
+ glUseProgram(130, 130),
+ glValidateProgram(131, 131),
+ glVertexAttrib1f(132, 132),
+ glVertexAttrib1fv(133, 133),
+ glVertexAttrib2f(134, 134),
+ glVertexAttrib2fv(135, 135),
+ glVertexAttrib3f(136, 136),
+ glVertexAttrib3fv(137, 137),
+ glVertexAttrib4f(138, 138),
+ glVertexAttrib4fv(139, 139),
+ glVertexAttribPointer(140, 140),
+ glViewport(141, 141),
+ eglGetDisplay(142, 142),
+ eglInitialize(143, 143),
+ eglTerminate(144, 144),
+ eglGetConfigs(145, 145),
+ eglChooseConfig(146, 146),
+ eglGetConfigAttrib(147, 147),
+ eglCreateWindowSurface(148, 148),
+ eglCreatePixmapSurface(149, 149),
+ eglCreatePbufferSurface(150, 150),
+ eglDestroySurface(151, 151),
+ eglQuerySurface(152, 152),
+ eglCreateContext(153, 153),
+ eglDestroyContext(154, 154),
+ eglMakeCurrent(155, 155),
+ eglGetCurrentContext(156, 156),
+ eglGetCurrentSurface(157, 157),
+ eglGetCurrentDisplay(158, 158),
+ eglQueryContext(159, 159),
+ eglWaitGL(160, 160),
+ eglWaitNative(161, 161),
+ eglSwapBuffers(162, 162),
+ eglCopyBuffers(163, 163),
+ eglGetError(164, 164),
+ eglQueryString(165, 165),
+ eglGetProcAddress(166, 166),
+ eglSurfaceAttrib(167, 167),
+ eglBindTexImage(168, 168),
+ eglReleaseTexImage(169, 169),
+ eglSwapInterval(170, 170),
+ eglBindAPI(171, 171),
+ eglQueryAPI(172, 172),
+ eglWaitClient(173, 173),
+ eglReleaseThread(174, 174),
+ eglCreatePbufferFromClientBuffer(175, 175),
+ eglLockSurfaceKHR(176, 176),
+ eglUnlockSurfaceKHR(177, 177),
+ eglCreateImageKHR(178, 178),
+ eglDestroyImageKHR(179, 179),
+ eglCreateSyncKHR(180, 180),
+ eglDestroySyncKHR(181, 181),
+ eglClientWaitSyncKHR(182, 182),
+ eglGetSyncAttribKHR(183, 183),
+ eglSetSwapRectangleANDROID(184, 184),
+ eglGetRenderBufferANDROID(185, 185),
+ ACK(186, 186),
+ NEG(187, 187),
+ CONTINUE(188, 188),
+ SKIP(189, 189),
+ SETPROP(190, 190),
+ CAPTURE(191, 191),
+ ;
+
+
+ public final int getNumber() { return value; }
+
+ public static Function valueOf(int value) {
+ switch (value) {
+ case 0: return glActiveTexture;
+ case 1: return glAttachShader;
+ case 2: return glBindAttribLocation;
+ case 3: return glBindBuffer;
+ case 4: return glBindFramebuffer;
+ case 5: return glBindRenderbuffer;
+ case 6: return glBindTexture;
+ case 7: return glBlendColor;
+ case 8: return glBlendEquation;
+ case 9: return glBlendEquationSeparate;
+ case 10: return glBlendFunc;
+ case 11: return glBlendFuncSeparate;
+ case 12: return glBufferData;
+ case 13: return glBufferSubData;
+ case 14: return glCheckFramebufferStatus;
+ case 15: return glClear;
+ case 16: return glClearColor;
+ case 17: return glClearDepthf;
+ case 18: return glClearStencil;
+ case 19: return glColorMask;
+ case 20: return glCompileShader;
+ case 21: return glCompressedTexImage2D;
+ case 22: return glCompressedTexSubImage2D;
+ case 23: return glCopyTexImage2D;
+ case 24: return glCopyTexSubImage2D;
+ case 25: return glCreateProgram;
+ case 26: return glCreateShader;
+ case 27: return glCullFace;
+ case 28: return glDeleteBuffers;
+ case 29: return glDeleteFramebuffers;
+ case 30: return glDeleteProgram;
+ case 31: return glDeleteRenderbuffers;
+ case 32: return glDeleteShader;
+ case 33: return glDeleteTextures;
+ case 34: return glDepthFunc;
+ case 35: return glDepthMask;
+ case 36: return glDepthRangef;
+ case 37: return glDetachShader;
+ case 38: return glDisable;
+ case 39: return glDisableVertexAttribArray;
+ case 40: return glDrawArrays;
+ case 41: return glDrawElements;
+ case 42: return glEnable;
+ case 43: return glEnableVertexAttribArray;
+ case 44: return glFinish;
+ case 45: return glFlush;
+ case 46: return glFramebufferRenderbuffer;
+ case 47: return glFramebufferTexture2D;
+ case 48: return glFrontFace;
+ case 49: return glGenBuffers;
+ case 50: return glGenerateMipmap;
+ case 51: return glGenFramebuffers;
+ case 52: return glGenRenderbuffers;
+ case 53: return glGenTextures;
+ case 54: return glGetActiveAttrib;
+ case 55: return glGetActiveUniform;
+ case 56: return glGetAttachedShaders;
+ case 57: return glGetAttribLocation;
+ case 58: return glGetBooleanv;
+ case 59: return glGetBufferParameteriv;
+ case 60: return glGetError;
+ case 61: return glGetFloatv;
+ case 62: return glGetFramebufferAttachmentParameteriv;
+ case 63: return glGetIntegerv;
+ case 64: return glGetProgramiv;
+ case 65: return glGetProgramInfoLog;
+ case 66: return glGetRenderbufferParameteriv;
+ case 67: return glGetShaderiv;
+ case 68: return glGetShaderInfoLog;
+ case 69: return glGetShaderPrecisionFormat;
+ case 70: return glGetShaderSource;
+ case 71: return glGetString;
+ case 72: return glGetTexParameterfv;
+ case 73: return glGetTexParameteriv;
+ case 74: return glGetUniformfv;
+ case 75: return glGetUniformiv;
+ case 76: return glGetUniformLocation;
+ case 77: return glGetVertexAttribfv;
+ case 78: return glGetVertexAttribiv;
+ case 79: return glGetVertexAttribPointerv;
+ case 80: return glHint;
+ case 81: return glIsBuffer;
+ case 82: return glIsEnabled;
+ case 83: return glIsFramebuffer;
+ case 84: return glIsProgram;
+ case 85: return glIsRenderbuffer;
+ case 86: return glIsShader;
+ case 87: return glIsTexture;
+ case 88: return glLineWidth;
+ case 89: return glLinkProgram;
+ case 90: return glPixelStorei;
+ case 91: return glPolygonOffset;
+ case 92: return glReadPixels;
+ case 93: return glReleaseShaderCompiler;
+ case 94: return glRenderbufferStorage;
+ case 95: return glSampleCoverage;
+ case 96: return glScissor;
+ case 97: return glShaderBinary;
+ case 98: return glShaderSource;
+ case 99: return glStencilFunc;
+ case 100: return glStencilFuncSeparate;
+ case 101: return glStencilMask;
+ case 102: return glStencilMaskSeparate;
+ case 103: return glStencilOp;
+ case 104: return glStencilOpSeparate;
+ case 105: return glTexImage2D;
+ case 106: return glTexParameterf;
+ case 107: return glTexParameterfv;
+ case 108: return glTexParameteri;
+ case 109: return glTexParameteriv;
+ case 110: return glTexSubImage2D;
+ case 111: return glUniform1f;
+ case 112: return glUniform1fv;
+ case 113: return glUniform1i;
+ case 114: return glUniform1iv;
+ case 115: return glUniform2f;
+ case 116: return glUniform2fv;
+ case 117: return glUniform2i;
+ case 118: return glUniform2iv;
+ case 119: return glUniform3f;
+ case 120: return glUniform3fv;
+ case 121: return glUniform3i;
+ case 122: return glUniform3iv;
+ case 123: return glUniform4f;
+ case 124: return glUniform4fv;
+ case 125: return glUniform4i;
+ case 126: return glUniform4iv;
+ case 127: return glUniformMatrix2fv;
+ case 128: return glUniformMatrix3fv;
+ case 129: return glUniformMatrix4fv;
+ case 130: return glUseProgram;
+ case 131: return glValidateProgram;
+ case 132: return glVertexAttrib1f;
+ case 133: return glVertexAttrib1fv;
+ case 134: return glVertexAttrib2f;
+ case 135: return glVertexAttrib2fv;
+ case 136: return glVertexAttrib3f;
+ case 137: return glVertexAttrib3fv;
+ case 138: return glVertexAttrib4f;
+ case 139: return glVertexAttrib4fv;
+ case 140: return glVertexAttribPointer;
+ case 141: return glViewport;
+ case 142: return eglGetDisplay;
+ case 143: return eglInitialize;
+ case 144: return eglTerminate;
+ case 145: return eglGetConfigs;
+ case 146: return eglChooseConfig;
+ case 147: return eglGetConfigAttrib;
+ case 148: return eglCreateWindowSurface;
+ case 149: return eglCreatePixmapSurface;
+ case 150: return eglCreatePbufferSurface;
+ case 151: return eglDestroySurface;
+ case 152: return eglQuerySurface;
+ case 153: return eglCreateContext;
+ case 154: return eglDestroyContext;
+ case 155: return eglMakeCurrent;
+ case 156: return eglGetCurrentContext;
+ case 157: return eglGetCurrentSurface;
+ case 158: return eglGetCurrentDisplay;
+ case 159: return eglQueryContext;
+ case 160: return eglWaitGL;
+ case 161: return eglWaitNative;
+ case 162: return eglSwapBuffers;
+ case 163: return eglCopyBuffers;
+ case 164: return eglGetError;
+ case 165: return eglQueryString;
+ case 166: return eglGetProcAddress;
+ case 167: return eglSurfaceAttrib;
+ case 168: return eglBindTexImage;
+ case 169: return eglReleaseTexImage;
+ case 170: return eglSwapInterval;
+ case 171: return eglBindAPI;
+ case 172: return eglQueryAPI;
+ case 173: return eglWaitClient;
+ case 174: return eglReleaseThread;
+ case 175: return eglCreatePbufferFromClientBuffer;
+ case 176: return eglLockSurfaceKHR;
+ case 177: return eglUnlockSurfaceKHR;
+ case 178: return eglCreateImageKHR;
+ case 179: return eglDestroyImageKHR;
+ case 180: return eglCreateSyncKHR;
+ case 181: return eglDestroySyncKHR;
+ case 182: return eglClientWaitSyncKHR;
+ case 183: return eglGetSyncAttribKHR;
+ case 184: return eglSetSwapRectangleANDROID;
+ case 185: return eglGetRenderBufferANDROID;
+ case 186: return ACK;
+ case 187: return NEG;
+ case 188: return CONTINUE;
+ case 189: return SKIP;
+ case 190: return SETPROP;
+ case 191: return CAPTURE;
+ default: return null;
+ }
+ }
+
+ public static com.google.protobuf.Internal.EnumLiteMap<Function>
+ internalGetValueMap() {
+ return internalValueMap;
+ }
+ private static com.google.protobuf.Internal.EnumLiteMap<Function>
+ internalValueMap =
+ new com.google.protobuf.Internal.EnumLiteMap<Function>() {
+ public Function findValueByNumber(int number) {
+ return Function.valueOf(number)
+ ; }
+ };
+
+ private final int index;
+ private final int value;
+ private Function(int index, int value) {
+ this.index = index;
+ this.value = value;
+ }
+
+ // @@protoc_insertion_point(enum_scope:com.android.glesv2debugger.Message.Function)
+ }
+
+ public enum Type
+ implements com.google.protobuf.Internal.EnumLite {
+ BeforeCall(0, 0),
+ AfterCall(1, 1),
+ Response(2, 2),
+ ;
+
+
+ public final int getNumber() { return value; }
+
+ public static Type valueOf(int value) {
+ switch (value) {
+ case 0: return BeforeCall;
+ case 1: return AfterCall;
+ case 2: return Response;
+ default: return null;
+ }
+ }
+
+ public static com.google.protobuf.Internal.EnumLiteMap<Type>
+ internalGetValueMap() {
+ return internalValueMap;
+ }
+ private static com.google.protobuf.Internal.EnumLiteMap<Type>
+ internalValueMap =
+ new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+ public Type findValueByNumber(int number) {
+ return Type.valueOf(number)
+ ; }
+ };
+
+ private final int index;
+ private final int value;
+ private Type(int index, int value) {
+ this.index = index;
+ this.value = value;
+ }
+
+ // @@protoc_insertion_point(enum_scope:com.android.glesv2debugger.Message.Type)
+ }
+
+ public enum Prop
+ implements com.google.protobuf.Internal.EnumLite {
+ Capture(0, 0),
+ TimeMode(1, 1),
+ ;
+
+
+ public final int getNumber() { return value; }
+
+ public static Prop valueOf(int value) {
+ switch (value) {
+ case 0: return Capture;
+ case 1: return TimeMode;
+ default: return null;
+ }
+ }
+
+ public static com.google.protobuf.Internal.EnumLiteMap<Prop>
+ internalGetValueMap() {
+ return internalValueMap;
+ }
+ private static com.google.protobuf.Internal.EnumLiteMap<Prop>
+ internalValueMap =
+ new com.google.protobuf.Internal.EnumLiteMap<Prop>() {
+ public Prop findValueByNumber(int number) {
+ return Prop.valueOf(number)
+ ; }
+ };
+
+ private final int index;
+ private final int value;
+ private Prop(int index, int value) {
+ this.index = index;
+ this.value = value;
+ }
+
+ // @@protoc_insertion_point(enum_scope:com.android.glesv2debugger.Message.Prop)
+ }
+
+ // required int32 context_id = 1;
+ public static final int CONTEXT_ID_FIELD_NUMBER = 1;
+ private boolean hasContextId;
+ private int contextId_ = 0;
+ public boolean hasContextId() { return hasContextId; }
+ public int getContextId() { return contextId_; }
+
+ // required .com.android.glesv2debugger.Message.Function function = 2 [default = NEG];
+ public static final int FUNCTION_FIELD_NUMBER = 2;
+ private boolean hasFunction;
+ private com.android.glesv2debugger.DebuggerMessage.Message.Function function_;
+ public boolean hasFunction() { return hasFunction; }
+ public com.android.glesv2debugger.DebuggerMessage.Message.Function getFunction() { return function_; }
+
+ // required .com.android.glesv2debugger.Message.Type type = 3;
+ public static final int TYPE_FIELD_NUMBER = 3;
+ private boolean hasType;
+ private com.android.glesv2debugger.DebuggerMessage.Message.Type type_;
+ public boolean hasType() { return hasType; }
+ public com.android.glesv2debugger.DebuggerMessage.Message.Type getType() { return type_; }
+
+ // required bool expect_response = 4;
+ public static final int EXPECT_RESPONSE_FIELD_NUMBER = 4;
+ private boolean hasExpectResponse;
+ private boolean expectResponse_ = false;
+ public boolean hasExpectResponse() { return hasExpectResponse; }
+ public boolean getExpectResponse() { return expectResponse_; }
+
+ // optional int32 ret = 5;
+ public static final int RET_FIELD_NUMBER = 5;
+ private boolean hasRet;
+ private int ret_ = 0;
+ public boolean hasRet() { return hasRet; }
+ public int getRet() { return ret_; }
+
+ // optional int32 arg0 = 6;
+ public static final int ARG0_FIELD_NUMBER = 6;
+ private boolean hasArg0;
+ private int arg0_ = 0;
+ public boolean hasArg0() { return hasArg0; }
+ public int getArg0() { return arg0_; }
+
+ // optional int32 arg1 = 7;
+ public static final int ARG1_FIELD_NUMBER = 7;
+ private boolean hasArg1;
+ private int arg1_ = 0;
+ public boolean hasArg1() { return hasArg1; }
+ public int getArg1() { return arg1_; }
+
+ // optional int32 arg2 = 8;
+ public static final int ARG2_FIELD_NUMBER = 8;
+ private boolean hasArg2;
+ private int arg2_ = 0;
+ public boolean hasArg2() { return hasArg2; }
+ public int getArg2() { return arg2_; }
+
+ // optional int32 arg3 = 9;
+ public static final int ARG3_FIELD_NUMBER = 9;
+ private boolean hasArg3;
+ private int arg3_ = 0;
+ public boolean hasArg3() { return hasArg3; }
+ public int getArg3() { return arg3_; }
+
+ // optional int32 arg4 = 16;
+ public static final int ARG4_FIELD_NUMBER = 16;
+ private boolean hasArg4;
+ private int arg4_ = 0;
+ public boolean hasArg4() { return hasArg4; }
+ public int getArg4() { return arg4_; }
+
+ // optional int32 arg5 = 17;
+ public static final int ARG5_FIELD_NUMBER = 17;
+ private boolean hasArg5;
+ private int arg5_ = 0;
+ public boolean hasArg5() { return hasArg5; }
+ public int getArg5() { return arg5_; }
+
+ // optional int32 arg6 = 18;
+ public static final int ARG6_FIELD_NUMBER = 18;
+ private boolean hasArg6;
+ private int arg6_ = 0;
+ public boolean hasArg6() { return hasArg6; }
+ public int getArg6() { return arg6_; }
+
+ // optional int32 arg7 = 19;
+ public static final int ARG7_FIELD_NUMBER = 19;
+ private boolean hasArg7;
+ private int arg7_ = 0;
+ public boolean hasArg7() { return hasArg7; }
+ public int getArg7() { return arg7_; }
+
+ // optional int32 arg8 = 20;
+ public static final int ARG8_FIELD_NUMBER = 20;
+ private boolean hasArg8;
+ private int arg8_ = 0;
+ public boolean hasArg8() { return hasArg8; }
+ public int getArg8() { return arg8_; }
+
+ // optional bytes data = 10;
+ public static final int DATA_FIELD_NUMBER = 10;
+ private boolean hasData;
+ private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY;
+ public boolean hasData() { return hasData; }
+ public com.google.protobuf.ByteString getData() { return data_; }
+
+ // optional float time = 11;
+ public static final int TIME_FIELD_NUMBER = 11;
+ private boolean hasTime;
+ private float time_ = 0F;
+ public boolean hasTime() { return hasTime; }
+ public float getTime() { return time_; }
+
+ // optional .com.android.glesv2debugger.Message.Prop prop = 21;
+ public static final int PROP_FIELD_NUMBER = 21;
+ private boolean hasProp;
+ private com.android.glesv2debugger.DebuggerMessage.Message.Prop prop_;
+ public boolean hasProp() { return hasProp; }
+ public com.android.glesv2debugger.DebuggerMessage.Message.Prop getProp() { return prop_; }
+
+ // optional float clock = 22;
+ public static final int CLOCK_FIELD_NUMBER = 22;
+ private boolean hasClock;
+ private float clock_ = 0F;
+ public boolean hasClock() { return hasClock; }
+ public float getClock() { return clock_; }
+
+ private void initFields() {
+ function_ = com.android.glesv2debugger.DebuggerMessage.Message.Function.NEG;
+ type_ = com.android.glesv2debugger.DebuggerMessage.Message.Type.BeforeCall;
+ prop_ = com.android.glesv2debugger.DebuggerMessage.Message.Prop.Capture;
+ }
+ public final boolean isInitialized() {
+ if (!hasContextId) return false;
+ if (!hasFunction) return false;
+ if (!hasType) return false;
+ if (!hasExpectResponse) return false;
+ return true;
+ }
+
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ getSerializedSize();
+ if (hasContextId()) {
+ output.writeInt32(1, getContextId());
+ }
+ if (hasFunction()) {
+ output.writeEnum(2, getFunction().getNumber());
+ }
+ if (hasType()) {
+ output.writeEnum(3, getType().getNumber());
+ }
+ if (hasExpectResponse()) {
+ output.writeBool(4, getExpectResponse());
+ }
+ if (hasRet()) {
+ output.writeInt32(5, getRet());
+ }
+ if (hasArg0()) {
+ output.writeInt32(6, getArg0());
+ }
+ if (hasArg1()) {
+ output.writeInt32(7, getArg1());
+ }
+ if (hasArg2()) {
+ output.writeInt32(8, getArg2());
+ }
+ if (hasArg3()) {
+ output.writeInt32(9, getArg3());
+ }
+ if (hasData()) {
+ output.writeBytes(10, getData());
+ }
+ if (hasTime()) {
+ output.writeFloat(11, getTime());
+ }
+ if (hasArg4()) {
+ output.writeInt32(16, getArg4());
+ }
+ if (hasArg5()) {
+ output.writeInt32(17, getArg5());
+ }
+ if (hasArg6()) {
+ output.writeInt32(18, getArg6());
+ }
+ if (hasArg7()) {
+ output.writeInt32(19, getArg7());
+ }
+ if (hasArg8()) {
+ output.writeInt32(20, getArg8());
+ }
+ if (hasProp()) {
+ output.writeEnum(21, getProp().getNumber());
+ }
+ if (hasClock()) {
+ output.writeFloat(22, getClock());
+ }
+ }
+
+ private int memoizedSerializedSize = -1;
+ public int getSerializedSize() {
+ int size = memoizedSerializedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (hasContextId()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(1, getContextId());
+ }
+ if (hasFunction()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeEnumSize(2, getFunction().getNumber());
+ }
+ if (hasType()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeEnumSize(3, getType().getNumber());
+ }
+ if (hasExpectResponse()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeBoolSize(4, getExpectResponse());
+ }
+ if (hasRet()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(5, getRet());
+ }
+ if (hasArg0()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(6, getArg0());
+ }
+ if (hasArg1()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(7, getArg1());
+ }
+ if (hasArg2()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(8, getArg2());
+ }
+ if (hasArg3()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(9, getArg3());
+ }
+ if (hasData()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeBytesSize(10, getData());
+ }
+ if (hasTime()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeFloatSize(11, getTime());
+ }
+ if (hasArg4()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(16, getArg4());
+ }
+ if (hasArg5()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(17, getArg5());
+ }
+ if (hasArg6()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(18, getArg6());
+ }
+ if (hasArg7()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(19, getArg7());
+ }
+ if (hasArg8()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(20, getArg8());
+ }
+ if (hasProp()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeEnumSize(21, getProp().getNumber());
+ }
+ if (hasClock()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeFloatSize(22, getClock());
+ }
+ memoizedSerializedSize = size;
+ return size;
+ }
+
+ public static com.android.glesv2debugger.DebuggerMessage.Message parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return newBuilder().mergeFrom(data).buildParsed();
+ }
+ public static com.android.glesv2debugger.DebuggerMessage.Message parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return newBuilder().mergeFrom(data, extensionRegistry)
+ .buildParsed();
+ }
+ public static com.android.glesv2debugger.DebuggerMessage.Message parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return newBuilder().mergeFrom(data).buildParsed();
+ }
+ public static com.android.glesv2debugger.DebuggerMessage.Message parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return newBuilder().mergeFrom(data, extensionRegistry)
+ .buildParsed();
+ }
+ public static com.android.glesv2debugger.DebuggerMessage.Message parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return newBuilder().mergeFrom(input).buildParsed();
+ }
+ public static com.android.glesv2debugger.DebuggerMessage.Message parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return newBuilder().mergeFrom(input, extensionRegistry)
+ .buildParsed();
+ }
+ public static com.android.glesv2debugger.DebuggerMessage.Message parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ Builder builder = newBuilder();
+ if (builder.mergeDelimitedFrom(input)) {
+ return builder.buildParsed();
+ } else {
+ return null;
+ }
+ }
+ public static com.android.glesv2debugger.DebuggerMessage.Message parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ Builder builder = newBuilder();
+ if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
+ return builder.buildParsed();
+ } else {
+ return null;
+ }
+ }
+ public static com.android.glesv2debugger.DebuggerMessage.Message parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return newBuilder().mergeFrom(input).buildParsed();
+ }
+ public static com.android.glesv2debugger.DebuggerMessage.Message parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return newBuilder().mergeFrom(input, extensionRegistry)
+ .buildParsed();
+ }
+
+ public static Builder newBuilder() { return Builder.create(); }
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder(com.android.glesv2debugger.DebuggerMessage.Message prototype) {
+ return newBuilder().mergeFrom(prototype);
+ }
+ public Builder toBuilder() { return newBuilder(this); }
+
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageLite.Builder<
+ com.android.glesv2debugger.DebuggerMessage.Message, Builder> {
+ private com.android.glesv2debugger.DebuggerMessage.Message result;
+
+ // Construct using com.android.glesv2debugger.DebuggerMessage.Message.newBuilder()
+ private Builder() {}
+
+ private static Builder create() {
+ Builder builder = new Builder();
+ builder.result = new com.android.glesv2debugger.DebuggerMessage.Message();
+ return builder;
+ }
+
+ protected com.android.glesv2debugger.DebuggerMessage.Message internalGetResult() {
+ return result;
+ }
+
+ public Builder clear() {
+ if (result == null) {
+ throw new IllegalStateException(
+ "Cannot call clear() after build().");
+ }
+ result = new com.android.glesv2debugger.DebuggerMessage.Message();
+ return this;
+ }
+
+ public Builder clone() {
+ return create().mergeFrom(result);
+ }
+
+ public com.android.glesv2debugger.DebuggerMessage.Message getDefaultInstanceForType() {
+ return com.android.glesv2debugger.DebuggerMessage.Message.getDefaultInstance();
+ }
+
+ public boolean isInitialized() {
+ return result.isInitialized();
+ }
+ public com.android.glesv2debugger.DebuggerMessage.Message build() {
+ if (result != null && !isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return buildPartial();
+ }
+
+ private com.android.glesv2debugger.DebuggerMessage.Message buildParsed()
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ if (!isInitialized()) {
+ throw newUninitializedMessageException(
+ result).asInvalidProtocolBufferException();
+ }
+ return buildPartial();
+ }
+
+ public com.android.glesv2debugger.DebuggerMessage.Message buildPartial() {
+ if (result == null) {
+ throw new IllegalStateException(
+ "build() has already been called on this Builder.");
+ }
+ com.android.glesv2debugger.DebuggerMessage.Message returnMe = result;
+ result = null;
+ return returnMe;
+ }
+
+ public Builder mergeFrom(com.android.glesv2debugger.DebuggerMessage.Message other) {
+ if (other == com.android.glesv2debugger.DebuggerMessage.Message.getDefaultInstance()) return this;
+ if (other.hasContextId()) {
+ setContextId(other.getContextId());
+ }
+ if (other.hasFunction()) {
+ setFunction(other.getFunction());
+ }
+ if (other.hasType()) {
+ setType(other.getType());
+ }
+ if (other.hasExpectResponse()) {
+ setExpectResponse(other.getExpectResponse());
+ }
+ if (other.hasRet()) {
+ setRet(other.getRet());
+ }
+ if (other.hasArg0()) {
+ setArg0(other.getArg0());
+ }
+ if (other.hasArg1()) {
+ setArg1(other.getArg1());
+ }
+ if (other.hasArg2()) {
+ setArg2(other.getArg2());
+ }
+ if (other.hasArg3()) {
+ setArg3(other.getArg3());
+ }
+ if (other.hasArg4()) {
+ setArg4(other.getArg4());
+ }
+ if (other.hasArg5()) {
+ setArg5(other.getArg5());
+ }
+ if (other.hasArg6()) {
+ setArg6(other.getArg6());
+ }
+ if (other.hasArg7()) {
+ setArg7(other.getArg7());
+ }
+ if (other.hasArg8()) {
+ setArg8(other.getArg8());
+ }
+ if (other.hasData()) {
+ setData(other.getData());
+ }
+ if (other.hasTime()) {
+ setTime(other.getTime());
+ }
+ if (other.hasProp()) {
+ setProp(other.getProp());
+ }
+ if (other.hasClock()) {
+ setClock(other.getClock());
+ }
+ return this;
+ }
+
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ while (true) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ return this;
+ default: {
+ if (!parseUnknownField(input, extensionRegistry, tag)) {
+ return this;
+ }
+ break;
+ }
+ case 8: {
+ setContextId(input.readInt32());
+ break;
+ }
+ case 16: {
+ int rawValue = input.readEnum();
+ com.android.glesv2debugger.DebuggerMessage.Message.Function value = com.android.glesv2debugger.DebuggerMessage.Message.Function.valueOf(rawValue);
+ if (value != null) {
+ setFunction(value);
+ }
+ break;
+ }
+ case 24: {
+ int rawValue = input.readEnum();
+ com.android.glesv2debugger.DebuggerMessage.Message.Type value = com.android.glesv2debugger.DebuggerMessage.Message.Type.valueOf(rawValue);
+ if (value != null) {
+ setType(value);
+ }
+ break;
+ }
+ case 32: {
+ setExpectResponse(input.readBool());
+ break;
+ }
+ case 40: {
+ setRet(input.readInt32());
+ break;
+ }
+ case 48: {
+ setArg0(input.readInt32());
+ break;
+ }
+ case 56: {
+ setArg1(input.readInt32());
+ break;
+ }
+ case 64: {
+ setArg2(input.readInt32());
+ break;
+ }
+ case 72: {
+ setArg3(input.readInt32());
+ break;
+ }
+ case 82: {
+ setData(input.readBytes());
+ break;
+ }
+ case 93: {
+ setTime(input.readFloat());
+ break;
+ }
+ case 128: {
+ setArg4(input.readInt32());
+ break;
+ }
+ case 136: {
+ setArg5(input.readInt32());
+ break;
+ }
+ case 144: {
+ setArg6(input.readInt32());
+ break;
+ }
+ case 152: {
+ setArg7(input.readInt32());
+ break;
+ }
+ case 160: {
+ setArg8(input.readInt32());
+ break;
+ }
+ case 168: {
+ int rawValue = input.readEnum();
+ com.android.glesv2debugger.DebuggerMessage.Message.Prop value = com.android.glesv2debugger.DebuggerMessage.Message.Prop.valueOf(rawValue);
+ if (value != null) {
+ setProp(value);
+ }
+ break;
+ }
+ case 181: {
+ setClock(input.readFloat());
+ break;
+ }
+ }
+ }
+ }
+
+
+ // required int32 context_id = 1;
+ public boolean hasContextId() {
+ return result.hasContextId();
+ }
+ public int getContextId() {
+ return result.getContextId();
+ }
+ public Builder setContextId(int value) {
+ result.hasContextId = true;
+ result.contextId_ = value;
+ return this;
+ }
+ public Builder clearContextId() {
+ result.hasContextId = false;
+ result.contextId_ = 0;
+ return this;
+ }
+
+ // required .com.android.glesv2debugger.Message.Function function = 2 [default = NEG];
+ public boolean hasFunction() {
+ return result.hasFunction();
+ }
+ public com.android.glesv2debugger.DebuggerMessage.Message.Function getFunction() {
+ return result.getFunction();
+ }
+ public Builder setFunction(com.android.glesv2debugger.DebuggerMessage.Message.Function value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ result.hasFunction = true;
+ result.function_ = value;
+ return this;
+ }
+ public Builder clearFunction() {
+ result.hasFunction = false;
+ result.function_ = com.android.glesv2debugger.DebuggerMessage.Message.Function.NEG;
+ return this;
+ }
+
+ // required .com.android.glesv2debugger.Message.Type type = 3;
+ public boolean hasType() {
+ return result.hasType();
+ }
+ public com.android.glesv2debugger.DebuggerMessage.Message.Type getType() {
+ return result.getType();
+ }
+ public Builder setType(com.android.glesv2debugger.DebuggerMessage.Message.Type value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ result.hasType = true;
+ result.type_ = value;
+ return this;
+ }
+ public Builder clearType() {
+ result.hasType = false;
+ result.type_ = com.android.glesv2debugger.DebuggerMessage.Message.Type.BeforeCall;
+ return this;
+ }
+
+ // required bool expect_response = 4;
+ public boolean hasExpectResponse() {
+ return result.hasExpectResponse();
+ }
+ public boolean getExpectResponse() {
+ return result.getExpectResponse();
+ }
+ public Builder setExpectResponse(boolean value) {
+ result.hasExpectResponse = true;
+ result.expectResponse_ = value;
+ return this;
+ }
+ public Builder clearExpectResponse() {
+ result.hasExpectResponse = false;
+ result.expectResponse_ = false;
+ return this;
+ }
+
+ // optional int32 ret = 5;
+ public boolean hasRet() {
+ return result.hasRet();
+ }
+ public int getRet() {
+ return result.getRet();
+ }
+ public Builder setRet(int value) {
+ result.hasRet = true;
+ result.ret_ = value;
+ return this;
+ }
+ public Builder clearRet() {
+ result.hasRet = false;
+ result.ret_ = 0;
+ return this;
+ }
+
+ // optional int32 arg0 = 6;
+ public boolean hasArg0() {
+ return result.hasArg0();
+ }
+ public int getArg0() {
+ return result.getArg0();
+ }
+ public Builder setArg0(int value) {
+ result.hasArg0 = true;
+ result.arg0_ = value;
+ return this;
+ }
+ public Builder clearArg0() {
+ result.hasArg0 = false;
+ result.arg0_ = 0;
+ return this;
+ }
+
+ // optional int32 arg1 = 7;
+ public boolean hasArg1() {
+ return result.hasArg1();
+ }
+ public int getArg1() {
+ return result.getArg1();
+ }
+ public Builder setArg1(int value) {
+ result.hasArg1 = true;
+ result.arg1_ = value;
+ return this;
+ }
+ public Builder clearArg1() {
+ result.hasArg1 = false;
+ result.arg1_ = 0;
+ return this;
+ }
+
+ // optional int32 arg2 = 8;
+ public boolean hasArg2() {
+ return result.hasArg2();
+ }
+ public int getArg2() {
+ return result.getArg2();
+ }
+ public Builder setArg2(int value) {
+ result.hasArg2 = true;
+ result.arg2_ = value;
+ return this;
+ }
+ public Builder clearArg2() {
+ result.hasArg2 = false;
+ result.arg2_ = 0;
+ return this;
+ }
+
+ // optional int32 arg3 = 9;
+ public boolean hasArg3() {
+ return result.hasArg3();
+ }
+ public int getArg3() {
+ return result.getArg3();
+ }
+ public Builder setArg3(int value) {
+ result.hasArg3 = true;
+ result.arg3_ = value;
+ return this;
+ }
+ public Builder clearArg3() {
+ result.hasArg3 = false;
+ result.arg3_ = 0;
+ return this;
+ }
+
+ // optional int32 arg4 = 16;
+ public boolean hasArg4() {
+ return result.hasArg4();
+ }
+ public int getArg4() {
+ return result.getArg4();
+ }
+ public Builder setArg4(int value) {
+ result.hasArg4 = true;
+ result.arg4_ = value;
+ return this;
+ }
+ public Builder clearArg4() {
+ result.hasArg4 = false;
+ result.arg4_ = 0;
+ return this;
+ }
+
+ // optional int32 arg5 = 17;
+ public boolean hasArg5() {
+ return result.hasArg5();
+ }
+ public int getArg5() {
+ return result.getArg5();
+ }
+ public Builder setArg5(int value) {
+ result.hasArg5 = true;
+ result.arg5_ = value;
+ return this;
+ }
+ public Builder clearArg5() {
+ result.hasArg5 = false;
+ result.arg5_ = 0;
+ return this;
+ }
+
+ // optional int32 arg6 = 18;
+ public boolean hasArg6() {
+ return result.hasArg6();
+ }
+ public int getArg6() {
+ return result.getArg6();
+ }
+ public Builder setArg6(int value) {
+ result.hasArg6 = true;
+ result.arg6_ = value;
+ return this;
+ }
+ public Builder clearArg6() {
+ result.hasArg6 = false;
+ result.arg6_ = 0;
+ return this;
+ }
+
+ // optional int32 arg7 = 19;
+ public boolean hasArg7() {
+ return result.hasArg7();
+ }
+ public int getArg7() {
+ return result.getArg7();
+ }
+ public Builder setArg7(int value) {
+ result.hasArg7 = true;
+ result.arg7_ = value;
+ return this;
+ }
+ public Builder clearArg7() {
+ result.hasArg7 = false;
+ result.arg7_ = 0;
+ return this;
+ }
+
+ // optional int32 arg8 = 20;
+ public boolean hasArg8() {
+ return result.hasArg8();
+ }
+ public int getArg8() {
+ return result.getArg8();
+ }
+ public Builder setArg8(int value) {
+ result.hasArg8 = true;
+ result.arg8_ = value;
+ return this;
+ }
+ public Builder clearArg8() {
+ result.hasArg8 = false;
+ result.arg8_ = 0;
+ return this;
+ }
+
+ // optional bytes data = 10;
+ public boolean hasData() {
+ return result.hasData();
+ }
+ public com.google.protobuf.ByteString getData() {
+ return result.getData();
+ }
+ public Builder setData(com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ result.hasData = true;
+ result.data_ = value;
+ return this;
+ }
+ public Builder clearData() {
+ result.hasData = false;
+ result.data_ = getDefaultInstance().getData();
+ return this;
+ }
+
+ // optional float time = 11;
+ public boolean hasTime() {
+ return result.hasTime();
+ }
+ public float getTime() {
+ return result.getTime();
+ }
+ public Builder setTime(float value) {
+ result.hasTime = true;
+ result.time_ = value;
+ return this;
+ }
+ public Builder clearTime() {
+ result.hasTime = false;
+ result.time_ = 0F;
+ return this;
+ }
+
+ // optional .com.android.glesv2debugger.Message.Prop prop = 21;
+ public boolean hasProp() {
+ return result.hasProp();
+ }
+ public com.android.glesv2debugger.DebuggerMessage.Message.Prop getProp() {
+ return result.getProp();
+ }
+ public Builder setProp(com.android.glesv2debugger.DebuggerMessage.Message.Prop value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ result.hasProp = true;
+ result.prop_ = value;
+ return this;
+ }
+ public Builder clearProp() {
+ result.hasProp = false;
+ result.prop_ = com.android.glesv2debugger.DebuggerMessage.Message.Prop.Capture;
+ return this;
+ }
+
+ // optional float clock = 22;
+ public boolean hasClock() {
+ return result.hasClock();
+ }
+ public float getClock() {
+ return result.getClock();
+ }
+ public Builder setClock(float value) {
+ result.hasClock = true;
+ result.clock_ = value;
+ return this;
+ }
+ public Builder clearClock() {
+ result.hasClock = false;
+ result.clock_ = 0F;
+ return this;
+ }
+
+ // @@protoc_insertion_point(builder_scope:com.android.glesv2debugger.Message)
+ }
+
+ static {
+ defaultInstance = new Message(true);
+ com.android.glesv2debugger.DebuggerMessage.internalForceInit();
+ defaultInstance.initFields();
+ }
+
+ // @@protoc_insertion_point(class_scope:com.android.glesv2debugger.Message)
+ }
+
+
+ static {
+ }
+
+ public static void internalForceInit() {}
+
+ // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/GLEnum.java b/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/GLEnum.java
new file mode 100644
index 0000000..8fd3014
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/GLEnum.java
@@ -0,0 +1,632 @@
+/*
+ ** 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.
+ */
+
+// auto generated by generate_GLEnum_java.py"
+
+package com.android.glesv2debugger;
+
+public enum GLEnum {
+ GL_POINTS(0x0000),
+ GL_LINES(0x0001),
+ GL_LINE_LOOP(0x0002),
+ GL_LINE_STRIP(0x0003),
+ GL_TRIANGLES(0x0004),
+ GL_TRIANGLE_STRIP(0x0005),
+ GL_TRIANGLE_FAN(0x0006),
+ GL_ADD(0x0104),
+ GL_NEVER(0x0200),
+ GL_LESS(0x0201),
+ GL_EQUAL(0x0202),
+ GL_LEQUAL(0x0203),
+ GL_GREATER(0x0204),
+ GL_NOTEQUAL(0x0205),
+ GL_GEQUAL(0x0206),
+ GL_ALWAYS(0x0207),
+ GL_SRC_COLOR(0x0300),
+ GL_ONE_MINUS_SRC_COLOR(0x0301),
+ GL_SRC_ALPHA(0x0302),
+ GL_ONE_MINUS_SRC_ALPHA(0x0303),
+ GL_DST_ALPHA(0x0304),
+ GL_ONE_MINUS_DST_ALPHA(0x0305),
+ GL_DST_COLOR(0x0306),
+ GL_ONE_MINUS_DST_COLOR(0x0307),
+ GL_SRC_ALPHA_SATURATE(0x0308),
+ GL_FRONT(0x0404),
+ GL_BACK(0x0405),
+ GL_FRONT_AND_BACK(0x0408),
+ GL_INVALID_ENUM(0x0500),
+ GL_INVALID_VALUE(0x0501),
+ GL_INVALID_OPERATION(0x0502),
+ GL_STACK_OVERFLOW(0x0503),
+ GL_STACK_UNDERFLOW(0x0504),
+ GL_OUT_OF_MEMORY(0x0505),
+ GL_INVALID_FRAMEBUFFER_OPERATION_OES(0x0506),
+ GL_EXP(0x0800),
+ GL_EXP2(0x0801),
+ GL_CW(0x0900),
+ GL_CCW(0x0901),
+ GL_CURRENT_COLOR(0x0B00),
+ GL_CURRENT_NORMAL(0x0B02),
+ GL_CURRENT_TEXTURE_COORDS(0x0B03),
+ GL_POINT_SMOOTH(0x0B10),
+ GL_POINT_SIZE(0x0B11),
+ GL_SMOOTH_POINT_SIZE_RANGE(0x0B12),
+ GL_LINE_SMOOTH(0x0B20),
+ GL_LINE_WIDTH(0x0B21),
+ GL_SMOOTH_LINE_WIDTH_RANGE(0x0B22),
+ GL_CULL_FACE(0x0B44),
+ GL_CULL_FACE_MODE(0x0B45),
+ GL_FRONT_FACE(0x0B46),
+ GL_LIGHTING(0x0B50),
+ GL_LIGHT_MODEL_TWO_SIDE(0x0B52),
+ GL_LIGHT_MODEL_AMBIENT(0x0B53),
+ GL_SHADE_MODEL(0x0B54),
+ GL_COLOR_MATERIAL(0x0B57),
+ GL_FOG(0x0B60),
+ GL_FOG_DENSITY(0x0B62),
+ GL_FOG_START(0x0B63),
+ GL_FOG_END(0x0B64),
+ GL_FOG_MODE(0x0B65),
+ GL_FOG_COLOR(0x0B66),
+ GL_DEPTH_RANGE(0x0B70),
+ GL_DEPTH_TEST(0x0B71),
+ GL_DEPTH_WRITEMASK(0x0B72),
+ GL_DEPTH_CLEAR_VALUE(0x0B73),
+ GL_DEPTH_FUNC(0x0B74),
+ GL_STENCIL_TEST(0x0B90),
+ GL_STENCIL_CLEAR_VALUE(0x0B91),
+ GL_STENCIL_FUNC(0x0B92),
+ GL_STENCIL_VALUE_MASK(0x0B93),
+ GL_STENCIL_FAIL(0x0B94),
+ GL_STENCIL_PASS_DEPTH_FAIL(0x0B95),
+ GL_STENCIL_PASS_DEPTH_PASS(0x0B96),
+ GL_STENCIL_REF(0x0B97),
+ GL_STENCIL_WRITEMASK(0x0B98),
+ GL_MATRIX_MODE(0x0BA0),
+ GL_NORMALIZE(0x0BA1),
+ GL_VIEWPORT(0x0BA2),
+ GL_MODELVIEW_STACK_DEPTH(0x0BA3),
+ GL_PROJECTION_STACK_DEPTH(0x0BA4),
+ GL_TEXTURE_STACK_DEPTH(0x0BA5),
+ GL_MODELVIEW_MATRIX(0x0BA6),
+ GL_PROJECTION_MATRIX(0x0BA7),
+ GL_TEXTURE_MATRIX(0x0BA8),
+ GL_ALPHA_TEST(0x0BC0),
+ GL_ALPHA_TEST_FUNC(0x0BC1),
+ GL_ALPHA_TEST_REF(0x0BC2),
+ GL_DITHER(0x0BD0),
+ GL_BLEND_DST(0x0BE0),
+ GL_BLEND_SRC(0x0BE1),
+ GL_BLEND(0x0BE2),
+ GL_LOGIC_OP_MODE(0x0BF0),
+ GL_COLOR_LOGIC_OP(0x0BF2),
+ GL_SCISSOR_BOX(0x0C10),
+ GL_SCISSOR_TEST(0x0C11),
+ GL_COLOR_CLEAR_VALUE(0x0C22),
+ GL_COLOR_WRITEMASK(0x0C23),
+ GL_PERSPECTIVE_CORRECTION_HINT(0x0C50),
+ GL_POINT_SMOOTH_HINT(0x0C51),
+ GL_LINE_SMOOTH_HINT(0x0C52),
+ GL_FOG_HINT(0x0C54),
+ GL_UNPACK_ALIGNMENT(0x0CF5),
+ GL_PACK_ALIGNMENT(0x0D05),
+ GL_ALPHA_SCALE(0x0D1C),
+ GL_MAX_LIGHTS(0x0D31),
+ GL_MAX_CLIP_PLANES(0x0D32),
+ GL_MAX_TEXTURE_SIZE(0x0D33),
+ GL_MAX_MODELVIEW_STACK_DEPTH(0x0D36),
+ GL_MAX_PROJECTION_STACK_DEPTH(0x0D38),
+ GL_MAX_TEXTURE_STACK_DEPTH(0x0D39),
+ GL_MAX_VIEWPORT_DIMS(0x0D3A),
+ GL_SUBPIXEL_BITS(0x0D50),
+ GL_RED_BITS(0x0D52),
+ GL_GREEN_BITS(0x0D53),
+ GL_BLUE_BITS(0x0D54),
+ GL_ALPHA_BITS(0x0D55),
+ GL_DEPTH_BITS(0x0D56),
+ GL_STENCIL_BITS(0x0D57),
+ GL_TEXTURE_2D(0x0DE1),
+ GL_DONT_CARE(0x1100),
+ GL_FASTEST(0x1101),
+ GL_NICEST(0x1102),
+ GL_AMBIENT(0x1200),
+ GL_DIFFUSE(0x1201),
+ GL_SPECULAR(0x1202),
+ GL_POSITION(0x1203),
+ GL_SPOT_DIRECTION(0x1204),
+ GL_SPOT_EXPONENT(0x1205),
+ GL_SPOT_CUTOFF(0x1206),
+ GL_CONSTANT_ATTENUATION(0x1207),
+ GL_LINEAR_ATTENUATION(0x1208),
+ GL_QUADRATIC_ATTENUATION(0x1209),
+ GL_BYTE(0x1400),
+ GL_UNSIGNED_BYTE(0x1401),
+ GL_SHORT(0x1402),
+ GL_UNSIGNED_SHORT(0x1403),
+ GL_INT(0x1404),
+ GL_UNSIGNED_INT(0x1405),
+ GL_FLOAT(0x1406),
+ GL_FIXED(0x140C),
+ GL_CLEAR(0x1500),
+ GL_AND(0x1501),
+ GL_AND_REVERSE(0x1502),
+ GL_COPY(0x1503),
+ GL_AND_INVERTED(0x1504),
+ GL_NOOP(0x1505),
+ GL_XOR(0x1506),
+ GL_OR(0x1507),
+ GL_NOR(0x1508),
+ GL_EQUIV(0x1509),
+ GL_INVERT(0x150A),
+ GL_OR_REVERSE(0x150B),
+ GL_COPY_INVERTED(0x150C),
+ GL_OR_INVERTED(0x150D),
+ GL_NAND(0x150E),
+ GL_SET(0x150F),
+ GL_EMISSION(0x1600),
+ GL_SHININESS(0x1601),
+ GL_AMBIENT_AND_DIFFUSE(0x1602),
+ GL_MODELVIEW(0x1700),
+ GL_PROJECTION(0x1701),
+ GL_TEXTURE(0x1702),
+ GL_COLOR_EXT(0x1800),
+ GL_DEPTH_EXT(0x1801),
+ GL_STENCIL_EXT(0x1802),
+ GL_STENCIL_INDEX(0x1901),
+ GL_DEPTH_COMPONENT(0x1902),
+ GL_ALPHA(0x1906),
+ GL_RGB(0x1907),
+ GL_RGBA(0x1908),
+ GL_LUMINANCE(0x1909),
+ GL_LUMINANCE_ALPHA(0x190A),
+ GL_FLAT(0x1D00),
+ GL_SMOOTH(0x1D01),
+ GL_KEEP(0x1E00),
+ GL_REPLACE(0x1E01),
+ GL_INCR(0x1E02),
+ GL_DECR(0x1E03),
+ GL_VENDOR(0x1F00),
+ GL_RENDERER(0x1F01),
+ GL_VERSION(0x1F02),
+ GL_EXTENSIONS(0x1F03),
+ GL_MODULATE(0x2100),
+ GL_DECAL(0x2101),
+ GL_TEXTURE_ENV_MODE(0x2200),
+ GL_TEXTURE_ENV_COLOR(0x2201),
+ GL_TEXTURE_ENV(0x2300),
+ GL_TEXTURE_GEN_MODE_OES(0x2500),
+ GL_NEAREST(0x2600),
+ GL_LINEAR(0x2601),
+ GL_NEAREST_MIPMAP_NEAREST(0x2700),
+ GL_LINEAR_MIPMAP_NEAREST(0x2701),
+ GL_NEAREST_MIPMAP_LINEAR(0x2702),
+ GL_LINEAR_MIPMAP_LINEAR(0x2703),
+ GL_TEXTURE_MAG_FILTER(0x2800),
+ GL_TEXTURE_MIN_FILTER(0x2801),
+ GL_TEXTURE_WRAP_S(0x2802),
+ GL_TEXTURE_WRAP_T(0x2803),
+ GL_REPEAT(0x2901),
+ GL_POLYGON_OFFSET_UNITS(0x2A00),
+ GL_CLIP_PLANE0(0x3000),
+ GL_CLIP_PLANE1(0x3001),
+ GL_CLIP_PLANE2(0x3002),
+ GL_CLIP_PLANE3(0x3003),
+ GL_CLIP_PLANE4(0x3004),
+ GL_CLIP_PLANE5(0x3005),
+ GL_LIGHT0(0x4000),
+ GL_LIGHT1(0x4001),
+ GL_LIGHT2(0x4002),
+ GL_LIGHT3(0x4003),
+ GL_LIGHT4(0x4004),
+ GL_LIGHT5(0x4005),
+ GL_LIGHT6(0x4006),
+ GL_LIGHT7(0x4007),
+ GL_COVERAGE_BUFFER_BIT_NV(0x8000),
+ GL_CONSTANT_COLOR(0x8001),
+ GL_ONE_MINUS_CONSTANT_COLOR(0x8002),
+ GL_CONSTANT_ALPHA(0x8003),
+ GL_ONE_MINUS_CONSTANT_ALPHA(0x8004),
+ GL_BLEND_COLOR(0x8005),
+ GL_FUNC_ADD_OES(0x8006),
+ GL_MIN_EXT(0x8007),
+ GL_MAX_EXT(0x8008),
+ GL_BLEND_EQUATION_RGB_OES(0x8009),
+ GL_FUNC_SUBTRACT_OES(0x800A),
+ GL_FUNC_REVERSE_SUBTRACT_OES(0x800B),
+ GL_UNSIGNED_SHORT_4_4_4_4(0x8033),
+ GL_UNSIGNED_SHORT_5_5_5_1(0x8034),
+ GL_POLYGON_OFFSET_FILL(0x8037),
+ GL_POLYGON_OFFSET_FACTOR(0x8038),
+ GL_RESCALE_NORMAL(0x803A),
+ GL_RGB8_OES(0x8051),
+ GL_RGBA4_OES(0x8056),
+ GL_RGB5_A1_OES(0x8057),
+ GL_RGBA8_OES(0x8058),
+ GL_TEXTURE_BINDING_2D(0x8069),
+ GL_TEXTURE_BINDING_3D_OES(0x806A),
+ GL_TEXTURE_3D_OES(0x806F),
+ GL_TEXTURE_WRAP_R_OES(0x8072),
+ GL_MAX_3D_TEXTURE_SIZE_OES(0x8073),
+ GL_VERTEX_ARRAY(0x8074),
+ GL_NORMAL_ARRAY(0x8075),
+ GL_COLOR_ARRAY(0x8076),
+ GL_TEXTURE_COORD_ARRAY(0x8078),
+ GL_VERTEX_ARRAY_SIZE(0x807A),
+ GL_VERTEX_ARRAY_TYPE(0x807B),
+ GL_VERTEX_ARRAY_STRIDE(0x807C),
+ GL_NORMAL_ARRAY_TYPE(0x807E),
+ GL_NORMAL_ARRAY_STRIDE(0x807F),
+ GL_COLOR_ARRAY_SIZE(0x8081),
+ GL_COLOR_ARRAY_TYPE(0x8082),
+ GL_COLOR_ARRAY_STRIDE(0x8083),
+ GL_TEXTURE_COORD_ARRAY_SIZE(0x8088),
+ GL_TEXTURE_COORD_ARRAY_TYPE(0x8089),
+ GL_TEXTURE_COORD_ARRAY_STRIDE(0x808A),
+ GL_VERTEX_ARRAY_POINTER(0x808E),
+ GL_NORMAL_ARRAY_POINTER(0x808F),
+ GL_COLOR_ARRAY_POINTER(0x8090),
+ GL_TEXTURE_COORD_ARRAY_POINTER(0x8092),
+ GL_MULTISAMPLE(0x809D),
+ GL_SAMPLE_ALPHA_TO_COVERAGE(0x809E),
+ GL_SAMPLE_ALPHA_TO_ONE(0x809F),
+ GL_SAMPLE_COVERAGE(0x80A0),
+ GL_SAMPLE_BUFFERS(0x80A8),
+ GL_SAMPLES(0x80A9),
+ GL_SAMPLE_COVERAGE_VALUE(0x80AA),
+ GL_SAMPLE_COVERAGE_INVERT(0x80AB),
+ GL_BLEND_DST_RGB_OES(0x80C8),
+ GL_BLEND_SRC_RGB_OES(0x80C9),
+ GL_BLEND_DST_ALPHA_OES(0x80CA),
+ GL_BLEND_SRC_ALPHA_OES(0x80CB),
+ GL_BGRA_EXT(0x80E1),
+ GL_POINT_SIZE_MIN(0x8126),
+ GL_POINT_SIZE_MAX(0x8127),
+ GL_POINT_FADE_THRESHOLD_SIZE(0x8128),
+ GL_POINT_DISTANCE_ATTENUATION(0x8129),
+ GL_CLAMP_TO_EDGE(0x812F),
+ GL_GENERATE_MIPMAP(0x8191),
+ GL_GENERATE_MIPMAP_HINT(0x8192),
+ GL_DEPTH_COMPONENT16_OES(0x81A5),
+ GL_DEPTH_COMPONENT24_OES(0x81A6),
+ GL_DEPTH_COMPONENT32_OES(0x81A7),
+ GL_UNSIGNED_SHORT_5_6_5(0x8363),
+ GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT(0x8365),
+ GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT(0x8366),
+ GL_UNSIGNED_INT_2_10_10_10_REV_EXT(0x8368),
+ GL_MIRRORED_REPEAT_OES(0x8370),
+ GL_COMPRESSED_RGB_S3TC_DXT1_EXT(0x83F0),
+ GL_COMPRESSED_RGBA_S3TC_DXT1_EXT(0x83F1),
+ GL_ALIASED_POINT_SIZE_RANGE(0x846D),
+ GL_ALIASED_LINE_WIDTH_RANGE(0x846E),
+ GL_TEXTURE0(0x84C0),
+ GL_TEXTURE1(0x84C1),
+ GL_TEXTURE2(0x84C2),
+ GL_TEXTURE3(0x84C3),
+ GL_TEXTURE4(0x84C4),
+ GL_TEXTURE5(0x84C5),
+ GL_TEXTURE6(0x84C6),
+ GL_TEXTURE7(0x84C7),
+ GL_TEXTURE8(0x84C8),
+ GL_TEXTURE9(0x84C9),
+ GL_TEXTURE10(0x84CA),
+ GL_TEXTURE11(0x84CB),
+ GL_TEXTURE12(0x84CC),
+ GL_TEXTURE13(0x84CD),
+ GL_TEXTURE14(0x84CE),
+ GL_TEXTURE15(0x84CF),
+ GL_TEXTURE16(0x84D0),
+ GL_TEXTURE17(0x84D1),
+ GL_TEXTURE18(0x84D2),
+ GL_TEXTURE19(0x84D3),
+ GL_TEXTURE20(0x84D4),
+ GL_TEXTURE21(0x84D5),
+ GL_TEXTURE22(0x84D6),
+ GL_TEXTURE23(0x84D7),
+ GL_TEXTURE24(0x84D8),
+ GL_TEXTURE25(0x84D9),
+ GL_TEXTURE26(0x84DA),
+ GL_TEXTURE27(0x84DB),
+ GL_TEXTURE28(0x84DC),
+ GL_TEXTURE29(0x84DD),
+ GL_TEXTURE30(0x84DE),
+ GL_TEXTURE31(0x84DF),
+ GL_ACTIVE_TEXTURE(0x84E0),
+ GL_CLIENT_ACTIVE_TEXTURE(0x84E1),
+ GL_MAX_TEXTURE_UNITS(0x84E2),
+ GL_SUBTRACT(0x84E7),
+ GL_MAX_RENDERBUFFER_SIZE_OES(0x84E8),
+ GL_ALL_COMPLETED_NV(0x84F2),
+ GL_FENCE_STATUS_NV(0x84F3),
+ GL_FENCE_CONDITION_NV(0x84F4),
+ GL_DEPTH_STENCIL_OES(0x84F9),
+ GL_UNSIGNED_INT_24_8_OES(0x84FA),
+ GL_MAX_TEXTURE_LOD_BIAS_EXT(0x84FD),
+ GL_TEXTURE_MAX_ANISOTROPY_EXT(0x84FE),
+ GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT(0x84FF),
+ GL_TEXTURE_FILTER_CONTROL_EXT(0x8500),
+ GL_TEXTURE_LOD_BIAS_EXT(0x8501),
+ GL_INCR_WRAP_OES(0x8507),
+ GL_DECR_WRAP_OES(0x8508),
+ GL_NORMAL_MAP_OES(0x8511),
+ GL_REFLECTION_MAP_OES(0x8512),
+ GL_TEXTURE_CUBE_MAP_OES(0x8513),
+ GL_TEXTURE_BINDING_CUBE_MAP_OES(0x8514),
+ GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES(0x8515),
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES(0x8516),
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES(0x8517),
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES(0x8518),
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES(0x8519),
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES(0x851A),
+ GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES(0x851C),
+ GL_COMBINE(0x8570),
+ GL_COMBINE_RGB(0x8571),
+ GL_COMBINE_ALPHA(0x8572),
+ GL_RGB_SCALE(0x8573),
+ GL_ADD_SIGNED(0x8574),
+ GL_INTERPOLATE(0x8575),
+ GL_CONSTANT(0x8576),
+ GL_PRIMARY_COLOR(0x8577),
+ GL_PREVIOUS(0x8578),
+ GL_SRC0_RGB(0x8580),
+ GL_SRC1_RGB(0x8581),
+ GL_SRC2_RGB(0x8582),
+ GL_SRC0_ALPHA(0x8588),
+ GL_SRC1_ALPHA(0x8589),
+ GL_SRC2_ALPHA(0x858A),
+ GL_OPERAND0_RGB(0x8590),
+ GL_OPERAND1_RGB(0x8591),
+ GL_OPERAND2_RGB(0x8592),
+ GL_OPERAND0_ALPHA(0x8598),
+ GL_OPERAND1_ALPHA(0x8599),
+ GL_OPERAND2_ALPHA(0x859A),
+ GL_VERTEX_ARRAY_BINDING_OES(0x85B5),
+ GL_VERTEX_ATTRIB_ARRAY_ENABLED(0x8622),
+ GL_VERTEX_ATTRIB_ARRAY_SIZE(0x8623),
+ GL_VERTEX_ATTRIB_ARRAY_STRIDE(0x8624),
+ GL_VERTEX_ATTRIB_ARRAY_TYPE(0x8625),
+ GL_CURRENT_VERTEX_ATTRIB(0x8626),
+ GL_VERTEX_ATTRIB_ARRAY_POINTER(0x8645),
+ GL_NUM_COMPRESSED_TEXTURE_FORMATS(0x86A2),
+ GL_COMPRESSED_TEXTURE_FORMATS(0x86A3),
+ GL_MAX_VERTEX_UNITS_OES(0x86A4),
+ GL_WEIGHT_ARRAY_TYPE_OES(0x86A9),
+ GL_WEIGHT_ARRAY_STRIDE_OES(0x86AA),
+ GL_WEIGHT_ARRAY_SIZE_OES(0x86AB),
+ GL_WEIGHT_ARRAY_POINTER_OES(0x86AC),
+ GL_WEIGHT_ARRAY_OES(0x86AD),
+ GL_DOT3_RGB(0x86AE),
+ GL_DOT3_RGBA(0x86AF),
+ GL_Z400_BINARY_AMD(0x8740),
+ GL_PROGRAM_BINARY_LENGTH_OES(0x8741),
+ GL_BUFFER_SIZE(0x8764),
+ GL_BUFFER_USAGE(0x8765),
+ GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD(0x87EE),
+ GL_3DC_X_AMD(0x87F9),
+ GL_3DC_XY_AMD(0x87FA),
+ GL_NUM_PROGRAM_BINARY_FORMATS_OES(0x87FE),
+ GL_PROGRAM_BINARY_FORMATS_OES(0x87FF),
+ GL_STENCIL_BACK_FUNC(0x8800),
+ GL_STENCIL_BACK_FAIL(0x8801),
+ GL_STENCIL_BACK_PASS_DEPTH_FAIL(0x8802),
+ GL_STENCIL_BACK_PASS_DEPTH_PASS(0x8803),
+ GL_WRITEONLY_RENDERING_QCOM(0x8823),
+ GL_BLEND_EQUATION_ALPHA_OES(0x883D),
+ GL_MATRIX_PALETTE_OES(0x8840),
+ GL_MAX_PALETTE_MATRICES_OES(0x8842),
+ GL_CURRENT_PALETTE_MATRIX_OES(0x8843),
+ GL_MATRIX_INDEX_ARRAY_OES(0x8844),
+ GL_MATRIX_INDEX_ARRAY_SIZE_OES(0x8846),
+ GL_MATRIX_INDEX_ARRAY_TYPE_OES(0x8847),
+ GL_MATRIX_INDEX_ARRAY_STRIDE_OES(0x8848),
+ GL_MATRIX_INDEX_ARRAY_POINTER_OES(0x8849),
+ GL_POINT_SPRITE_OES(0x8861),
+ GL_COORD_REPLACE_OES(0x8862),
+ GL_MAX_VERTEX_ATTRIBS(0x8869),
+ GL_VERTEX_ATTRIB_ARRAY_NORMALIZED(0x886A),
+ GL_MAX_TEXTURE_IMAGE_UNITS(0x8872),
+ GL_ARRAY_BUFFER(0x8892),
+ GL_ELEMENT_ARRAY_BUFFER(0x8893),
+ GL_ARRAY_BUFFER_BINDING(0x8894),
+ GL_ELEMENT_ARRAY_BUFFER_BINDING(0x8895),
+ GL_VERTEX_ARRAY_BUFFER_BINDING(0x8896),
+ GL_NORMAL_ARRAY_BUFFER_BINDING(0x8897),
+ GL_COLOR_ARRAY_BUFFER_BINDING(0x8898),
+ GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING(0x889A),
+ GL_WEIGHT_ARRAY_BUFFER_BINDING_OES(0x889E),
+ GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING(0x889F),
+ GL_WRITE_ONLY_OES(0x88B9),
+ GL_BUFFER_ACCESS_OES(0x88BB),
+ GL_BUFFER_MAPPED_OES(0x88BC),
+ GL_BUFFER_MAP_POINTER_OES(0x88BD),
+ GL_STREAM_DRAW(0x88E0),
+ GL_STATIC_DRAW(0x88E4),
+ GL_DYNAMIC_DRAW(0x88E8),
+ GL_DEPTH24_STENCIL8_OES(0x88F0),
+ GL_POINT_SIZE_ARRAY_TYPE_OES(0x898A),
+ GL_POINT_SIZE_ARRAY_STRIDE_OES(0x898B),
+ GL_POINT_SIZE_ARRAY_POINTER_OES(0x898C),
+ GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES(0x898D),
+ GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES(0x898E),
+ GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES(0x898F),
+ GL_FRAGMENT_SHADER(0x8B30),
+ GL_VERTEX_SHADER(0x8B31),
+ GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS(0x8B4C),
+ GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS(0x8B4D),
+ GL_SHADER_TYPE(0x8B4F),
+ GL_FLOAT_VEC2(0x8B50),
+ GL_FLOAT_VEC3(0x8B51),
+ GL_FLOAT_VEC4(0x8B52),
+ GL_INT_VEC2(0x8B53),
+ GL_INT_VEC3(0x8B54),
+ GL_INT_VEC4(0x8B55),
+ GL_BOOL(0x8B56),
+ GL_BOOL_VEC2(0x8B57),
+ GL_BOOL_VEC3(0x8B58),
+ GL_BOOL_VEC4(0x8B59),
+ GL_FLOAT_MAT2(0x8B5A),
+ GL_FLOAT_MAT3(0x8B5B),
+ GL_FLOAT_MAT4(0x8B5C),
+ GL_SAMPLER_2D(0x8B5E),
+ GL_SAMPLER_3D_OES(0x8B5F),
+ GL_SAMPLER_CUBE(0x8B60),
+ GL_DELETE_STATUS(0x8B80),
+ GL_COMPILE_STATUS(0x8B81),
+ GL_LINK_STATUS(0x8B82),
+ GL_VALIDATE_STATUS(0x8B83),
+ GL_INFO_LOG_LENGTH(0x8B84),
+ GL_ATTACHED_SHADERS(0x8B85),
+ GL_ACTIVE_UNIFORMS(0x8B86),
+ GL_ACTIVE_UNIFORM_MAX_LENGTH(0x8B87),
+ GL_SHADER_SOURCE_LENGTH(0x8B88),
+ GL_ACTIVE_ATTRIBUTES(0x8B89),
+ GL_ACTIVE_ATTRIBUTE_MAX_LENGTH(0x8B8A),
+ GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES(0x8B8B),
+ GL_SHADING_LANGUAGE_VERSION(0x8B8C),
+ GL_CURRENT_PROGRAM(0x8B8D),
+ GL_PALETTE4_RGB8_OES(0x8B90),
+ GL_PALETTE4_RGBA8_OES(0x8B91),
+ GL_PALETTE4_R5_G6_B5_OES(0x8B92),
+ GL_PALETTE4_RGBA4_OES(0x8B93),
+ GL_PALETTE4_RGB5_A1_OES(0x8B94),
+ GL_PALETTE8_RGB8_OES(0x8B95),
+ GL_PALETTE8_RGBA8_OES(0x8B96),
+ GL_PALETTE8_R5_G6_B5_OES(0x8B97),
+ GL_PALETTE8_RGBA4_OES(0x8B98),
+ GL_PALETTE8_RGB5_A1_OES(0x8B99),
+ GL_IMPLEMENTATION_COLOR_READ_TYPE_OES(0x8B9A),
+ GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES(0x8B9B),
+ GL_POINT_SIZE_ARRAY_OES(0x8B9C),
+ GL_TEXTURE_CROP_RECT_OES(0x8B9D),
+ GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES(0x8B9E),
+ GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES(0x8B9F),
+ GL_COUNTER_TYPE_AMD(0x8BC0),
+ GL_COUNTER_RANGE_AMD(0x8BC1),
+ GL_UNSIGNED_INT64_AMD(0x8BC2),
+ GL_PERCENTAGE_AMD(0x8BC3),
+ GL_PERFMON_RESULT_AVAILABLE_AMD(0x8BC4),
+ GL_PERFMON_RESULT_SIZE_AMD(0x8BC5),
+ GL_PERFMON_RESULT_AMD(0x8BC6),
+ GL_TEXTURE_WIDTH_QCOM(0x8BD2),
+ GL_TEXTURE_HEIGHT_QCOM(0x8BD3),
+ GL_TEXTURE_DEPTH_QCOM(0x8BD4),
+ GL_TEXTURE_INTERNAL_FORMAT_QCOM(0x8BD5),
+ GL_TEXTURE_FORMAT_QCOM(0x8BD6),
+ GL_TEXTURE_TYPE_QCOM(0x8BD7),
+ GL_TEXTURE_IMAGE_VALID_QCOM(0x8BD8),
+ GL_TEXTURE_NUM_LEVELS_QCOM(0x8BD9),
+ GL_TEXTURE_TARGET_QCOM(0x8BDA),
+ GL_TEXTURE_OBJECT_VALID_QCOM(0x8BDB),
+ GL_STATE_RESTORE(0x8BDC),
+ GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG(0x8C00),
+ GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG(0x8C01),
+ GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG(0x8C02),
+ GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG(0x8C03),
+ GL_MODULATE_COLOR_IMG(0x8C04),
+ GL_RECIP_ADD_SIGNED_ALPHA_IMG(0x8C05),
+ GL_TEXTURE_ALPHA_MODULATE_IMG(0x8C06),
+ GL_FACTOR_ALPHA_MODULATE_IMG(0x8C07),
+ GL_FRAGMENT_ALPHA_MODULATE_IMG(0x8C08),
+ GL_ADD_BLEND_IMG(0x8C09),
+ GL_SGX_BINARY_IMG(0x8C0A),
+ GL_ATC_RGB_AMD(0x8C92),
+ GL_ATC_RGBA_EXPLICIT_ALPHA_AMD(0x8C93),
+ GL_STENCIL_BACK_REF(0x8CA3),
+ GL_STENCIL_BACK_VALUE_MASK(0x8CA4),
+ GL_STENCIL_BACK_WRITEMASK(0x8CA5),
+ GL_FRAMEBUFFER_BINDING_OES(0x8CA6),
+ GL_RENDERBUFFER_BINDING_OES(0x8CA7),
+ GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES(0x8CD0),
+ GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES(0x8CD1),
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES(0x8CD2),
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES(0x8CD3),
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES(0x8CD4),
+ GL_FRAMEBUFFER_COMPLETE_OES(0x8CD5),
+ GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES(0x8CD6),
+ GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES(0x8CD7),
+ GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES(0x8CD9),
+ GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES(0x8CDA),
+ GL_FRAMEBUFFER_UNSUPPORTED_OES(0x8CDD),
+ GL_COLOR_ATTACHMENT0_OES(0x8CE0),
+ GL_DEPTH_ATTACHMENT_OES(0x8D00),
+ GL_STENCIL_ATTACHMENT_OES(0x8D20),
+ GL_FRAMEBUFFER_OES(0x8D40),
+ GL_RENDERBUFFER_OES(0x8D41),
+ GL_RENDERBUFFER_WIDTH_OES(0x8D42),
+ GL_RENDERBUFFER_HEIGHT_OES(0x8D43),
+ GL_RENDERBUFFER_INTERNAL_FORMAT_OES(0x8D44),
+ GL_STENCIL_INDEX1_OES(0x8D46),
+ GL_STENCIL_INDEX4_OES(0x8D47),
+ GL_STENCIL_INDEX8_OES(0x8D48),
+ GL_RENDERBUFFER_RED_SIZE_OES(0x8D50),
+ GL_RENDERBUFFER_GREEN_SIZE_OES(0x8D51),
+ GL_RENDERBUFFER_BLUE_SIZE_OES(0x8D52),
+ GL_RENDERBUFFER_ALPHA_SIZE_OES(0x8D53),
+ GL_RENDERBUFFER_DEPTH_SIZE_OES(0x8D54),
+ GL_RENDERBUFFER_STENCIL_SIZE_OES(0x8D55),
+ GL_TEXTURE_GEN_STR_OES(0x8D60),
+ GL_HALF_FLOAT_OES(0x8D61),
+ GL_RGB565_OES(0x8D62),
+ GL_ETC1_RGB8_OES(0x8D64),
+ GL_TEXTURE_EXTERNAL_OES(0x8D65),
+ GL_SAMPLER_EXTERNAL_OES(0x8D66),
+ GL_TEXTURE_BINDING_EXTERNAL_OES(0x8D67),
+ GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES(0x8D68),
+ GL_LOW_FLOAT(0x8DF0),
+ GL_MEDIUM_FLOAT(0x8DF1),
+ GL_HIGH_FLOAT(0x8DF2),
+ GL_LOW_INT(0x8DF3),
+ GL_MEDIUM_INT(0x8DF4),
+ GL_HIGH_INT(0x8DF5),
+ GL_UNSIGNED_INT_10_10_10_2_OES(0x8DF6),
+ GL_INT_10_10_10_2_OES(0x8DF7),
+ GL_SHADER_BINARY_FORMATS(0x8DF8),
+ GL_NUM_SHADER_BINARY_FORMATS(0x8DF9),
+ GL_SHADER_COMPILER(0x8DFA),
+ GL_MAX_VERTEX_UNIFORM_VECTORS(0x8DFB),
+ GL_MAX_VARYING_VECTORS(0x8DFC),
+ GL_MAX_FRAGMENT_UNIFORM_VECTORS(0x8DFD),
+ GL_DEPTH_COMPONENT16_NONLINEAR_NV(0x8E2C),
+ GL_COVERAGE_COMPONENT_NV(0x8ED0),
+ GL_COVERAGE_COMPONENT4_NV(0x8ED1),
+ GL_COVERAGE_ATTACHMENT_NV(0x8ED2),
+ GL_COVERAGE_BUFFERS_NV(0x8ED3),
+ GL_COVERAGE_SAMPLES_NV(0x8ED4),
+ GL_COVERAGE_ALL_FRAGMENTS_NV(0x8ED5),
+ GL_COVERAGE_EDGE_FRAGMENTS_NV(0x8ED6),
+ GL_COVERAGE_AUTOMATIC_NV(0x8ED7),
+ GL_PERFMON_GLOBAL_MODE_QCOM(0x8FA0),
+ GL_SGX_PROGRAM_BINARY_IMG(0x9130),
+ GL_RENDERBUFFER_SAMPLES_IMG(0x9133),
+ GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG(0x9134),
+ GL_MAX_SAMPLES_IMG(0x9135),
+ GL_TEXTURE_SAMPLES_IMG(0x9136),
+ ;
+
+ public final int value;
+ GLEnum(final int value) {
+ this.value = value;
+ }
+
+ private static final java.util.HashMap<Integer, GLEnum> reverseMap = new java.util.HashMap<Integer, GLEnum>();
+ static {
+ for (GLEnum e : GLEnum.values())
+ reverseMap.put(e.value, e);
+ }
+
+ public static GLEnum valueOf(final int value) {
+ return reverseMap.get(value);
+ }
+} \ No newline at end of file
diff --git a/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/GLFunction.java b/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/GLFunction.java
new file mode 100644
index 0000000..081f1b2
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/GLFunction.java
@@ -0,0 +1,173 @@
+/*
+ ** 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.
+ */
+
+// auto generated by generate_GLFunction_java.py"
+
+package com.android.glesv2debugger;
+
+public enum GLFunction {
+ glActiveTexture(0, DebuggerMessage.Message.Function.glActiveTexture),
+ glAttachShader(1, DebuggerMessage.Message.Function.glAttachShader),
+ glBindAttribLocation(2, DebuggerMessage.Message.Function.glBindAttribLocation),
+ glBindBuffer(3, DebuggerMessage.Message.Function.glBindBuffer),
+ glBindFramebuffer(4, DebuggerMessage.Message.Function.glBindFramebuffer),
+ glBindRenderbuffer(5, DebuggerMessage.Message.Function.glBindRenderbuffer),
+ glBindTexture(6, DebuggerMessage.Message.Function.glBindTexture),
+ glBlendColor(7, DebuggerMessage.Message.Function.glBlendColor),
+ glBlendEquation(8, DebuggerMessage.Message.Function.glBlendEquation),
+ glBlendEquationSeparate(9, DebuggerMessage.Message.Function.glBlendEquationSeparate),
+ glBlendFunc(10, DebuggerMessage.Message.Function.glBlendFunc),
+ glBlendFuncSeparate(11, DebuggerMessage.Message.Function.glBlendFuncSeparate),
+ glBufferData(12, DebuggerMessage.Message.Function.glBufferData),
+ glBufferSubData(13, DebuggerMessage.Message.Function.glBufferSubData),
+ glCheckFramebufferStatus(14, DebuggerMessage.Message.Function.glCheckFramebufferStatus),
+ glClear(15, DebuggerMessage.Message.Function.glClear),
+ glClearColor(16, DebuggerMessage.Message.Function.glClearColor),
+ glClearDepthf(17, DebuggerMessage.Message.Function.glClearDepthf),
+ glClearStencil(18, DebuggerMessage.Message.Function.glClearStencil),
+ glColorMask(19, DebuggerMessage.Message.Function.glColorMask),
+ glCompileShader(20, DebuggerMessage.Message.Function.glCompileShader),
+ glCompressedTexImage2D(21, DebuggerMessage.Message.Function.glCompressedTexImage2D),
+ glCompressedTexSubImage2D(22, DebuggerMessage.Message.Function.glCompressedTexSubImage2D),
+ glCopyTexImage2D(23, DebuggerMessage.Message.Function.glCopyTexImage2D),
+ glCopyTexSubImage2D(24, DebuggerMessage.Message.Function.glCopyTexSubImage2D),
+ glCreateProgram(25, DebuggerMessage.Message.Function.glCreateProgram),
+ glCreateShader(26, DebuggerMessage.Message.Function.glCreateShader),
+ glCullFace(27, DebuggerMessage.Message.Function.glCullFace),
+ glDeleteBuffers(28, DebuggerMessage.Message.Function.glDeleteBuffers),
+ glDeleteFramebuffers(29, DebuggerMessage.Message.Function.glDeleteFramebuffers),
+ glDeleteProgram(30, DebuggerMessage.Message.Function.glDeleteProgram),
+ glDeleteRenderbuffers(31, DebuggerMessage.Message.Function.glDeleteRenderbuffers),
+ glDeleteShader(32, DebuggerMessage.Message.Function.glDeleteShader),
+ glDeleteTextures(33, DebuggerMessage.Message.Function.glDeleteTextures),
+ glDepthFunc(34, DebuggerMessage.Message.Function.glDepthFunc),
+ glDepthMask(35, DebuggerMessage.Message.Function.glDepthMask),
+ glDepthRangef(36, DebuggerMessage.Message.Function.glDepthRangef),
+ glDetachShader(37, DebuggerMessage.Message.Function.glDetachShader),
+ glDisable(38, DebuggerMessage.Message.Function.glDisable),
+ glDisableVertexAttribArray(39, DebuggerMessage.Message.Function.glDisableVertexAttribArray),
+ glDrawArrays(40, DebuggerMessage.Message.Function.glDrawArrays),
+ glDrawElements(41, DebuggerMessage.Message.Function.glDrawElements),
+ glEnable(42, DebuggerMessage.Message.Function.glEnable),
+ glEnableVertexAttribArray(43, DebuggerMessage.Message.Function.glEnableVertexAttribArray),
+ glFinish(44, DebuggerMessage.Message.Function.glFinish),
+ glFlush(45, DebuggerMessage.Message.Function.glFlush),
+ glFramebufferRenderbuffer(46, DebuggerMessage.Message.Function.glFramebufferRenderbuffer),
+ glFramebufferTexture2D(47, DebuggerMessage.Message.Function.glFramebufferTexture2D),
+ glFrontFace(48, DebuggerMessage.Message.Function.glFrontFace),
+ glGenBuffers(49, DebuggerMessage.Message.Function.glGenBuffers),
+ glGenerateMipmap(50, DebuggerMessage.Message.Function.glGenerateMipmap),
+ glGenFramebuffers(51, DebuggerMessage.Message.Function.glGenFramebuffers),
+ glGenRenderbuffers(52, DebuggerMessage.Message.Function.glGenRenderbuffers),
+ glGenTextures(53, DebuggerMessage.Message.Function.glGenTextures),
+ glGetActiveAttrib(54, DebuggerMessage.Message.Function.glGetActiveAttrib),
+ glGetActiveUniform(55, DebuggerMessage.Message.Function.glGetActiveUniform),
+ glGetAttachedShaders(56, DebuggerMessage.Message.Function.glGetAttachedShaders),
+ glGetAttribLocation(57, DebuggerMessage.Message.Function.glGetAttribLocation),
+ glGetBooleanv(58, DebuggerMessage.Message.Function.glGetBooleanv),
+ glGetBufferParameteriv(59, DebuggerMessage.Message.Function.glGetBufferParameteriv),
+ glGetError(60, DebuggerMessage.Message.Function.glGetError),
+ glGetFloatv(61, DebuggerMessage.Message.Function.glGetFloatv),
+ glGetFramebufferAttachmentParameteriv(62, DebuggerMessage.Message.Function.glGetFramebufferAttachmentParameteriv),
+ glGetIntegerv(63, DebuggerMessage.Message.Function.glGetIntegerv),
+ glGetProgramiv(64, DebuggerMessage.Message.Function.glGetProgramiv),
+ glGetProgramInfoLog(65, DebuggerMessage.Message.Function.glGetProgramInfoLog),
+ glGetRenderbufferParameteriv(66, DebuggerMessage.Message.Function.glGetRenderbufferParameteriv),
+ glGetShaderiv(67, DebuggerMessage.Message.Function.glGetShaderiv),
+ glGetShaderInfoLog(68, DebuggerMessage.Message.Function.glGetShaderInfoLog),
+ glGetShaderPrecisionFormat(69, DebuggerMessage.Message.Function.glGetShaderPrecisionFormat),
+ glGetShaderSource(70, DebuggerMessage.Message.Function.glGetShaderSource),
+ glGetString(71, DebuggerMessage.Message.Function.glGetString),
+ glGetTexParameterfv(72, DebuggerMessage.Message.Function.glGetTexParameterfv),
+ glGetTexParameteriv(73, DebuggerMessage.Message.Function.glGetTexParameteriv),
+ glGetUniformfv(74, DebuggerMessage.Message.Function.glGetUniformfv),
+ glGetUniformiv(75, DebuggerMessage.Message.Function.glGetUniformiv),
+ glGetUniformLocation(76, DebuggerMessage.Message.Function.glGetUniformLocation),
+ glGetVertexAttribfv(77, DebuggerMessage.Message.Function.glGetVertexAttribfv),
+ glGetVertexAttribiv(78, DebuggerMessage.Message.Function.glGetVertexAttribiv),
+ glGetVertexAttribPointerv(79, DebuggerMessage.Message.Function.glGetVertexAttribPointerv),
+ glHint(80, DebuggerMessage.Message.Function.glHint),
+ glIsBuffer(81, DebuggerMessage.Message.Function.glIsBuffer),
+ glIsEnabled(82, DebuggerMessage.Message.Function.glIsEnabled),
+ glIsFramebuffer(83, DebuggerMessage.Message.Function.glIsFramebuffer),
+ glIsProgram(84, DebuggerMessage.Message.Function.glIsProgram),
+ glIsRenderbuffer(85, DebuggerMessage.Message.Function.glIsRenderbuffer),
+ glIsShader(86, DebuggerMessage.Message.Function.glIsShader),
+ glIsTexture(87, DebuggerMessage.Message.Function.glIsTexture),
+ glLineWidth(88, DebuggerMessage.Message.Function.glLineWidth),
+ glLinkProgram(89, DebuggerMessage.Message.Function.glLinkProgram),
+ glPixelStorei(90, DebuggerMessage.Message.Function.glPixelStorei),
+ glPolygonOffset(91, DebuggerMessage.Message.Function.glPolygonOffset),
+ glReadPixels(92, DebuggerMessage.Message.Function.glReadPixels),
+ glReleaseShaderCompiler(93, DebuggerMessage.Message.Function.glReleaseShaderCompiler),
+ glRenderbufferStorage(94, DebuggerMessage.Message.Function.glRenderbufferStorage),
+ glSampleCoverage(95, DebuggerMessage.Message.Function.glSampleCoverage),
+ glScissor(96, DebuggerMessage.Message.Function.glScissor),
+ glShaderBinary(97, DebuggerMessage.Message.Function.glShaderBinary),
+ glShaderSource(98, DebuggerMessage.Message.Function.glShaderSource),
+ glStencilFunc(99, DebuggerMessage.Message.Function.glStencilFunc),
+ glStencilFuncSeparate(100, DebuggerMessage.Message.Function.glStencilFuncSeparate),
+ glStencilMask(101, DebuggerMessage.Message.Function.glStencilMask),
+ glStencilMaskSeparate(102, DebuggerMessage.Message.Function.glStencilMaskSeparate),
+ glStencilOp(103, DebuggerMessage.Message.Function.glStencilOp),
+ glStencilOpSeparate(104, DebuggerMessage.Message.Function.glStencilOpSeparate),
+ glTexImage2D(105, DebuggerMessage.Message.Function.glTexImage2D),
+ glTexParameterf(106, DebuggerMessage.Message.Function.glTexParameterf),
+ glTexParameterfv(107, DebuggerMessage.Message.Function.glTexParameterfv),
+ glTexParameteri(108, DebuggerMessage.Message.Function.glTexParameteri),
+ glTexParameteriv(109, DebuggerMessage.Message.Function.glTexParameteriv),
+ glTexSubImage2D(110, DebuggerMessage.Message.Function.glTexSubImage2D),
+ glUniform1f(111, DebuggerMessage.Message.Function.glUniform1f),
+ glUniform1fv(112, DebuggerMessage.Message.Function.glUniform1fv),
+ glUniform1i(113, DebuggerMessage.Message.Function.glUniform1i),
+ glUniform1iv(114, DebuggerMessage.Message.Function.glUniform1iv),
+ glUniform2f(115, DebuggerMessage.Message.Function.glUniform2f),
+ glUniform2fv(116, DebuggerMessage.Message.Function.glUniform2fv),
+ glUniform2i(117, DebuggerMessage.Message.Function.glUniform2i),
+ glUniform2iv(118, DebuggerMessage.Message.Function.glUniform2iv),
+ glUniform3f(119, DebuggerMessage.Message.Function.glUniform3f),
+ glUniform3fv(120, DebuggerMessage.Message.Function.glUniform3fv),
+ glUniform3i(121, DebuggerMessage.Message.Function.glUniform3i),
+ glUniform3iv(122, DebuggerMessage.Message.Function.glUniform3iv),
+ glUniform4f(123, DebuggerMessage.Message.Function.glUniform4f),
+ glUniform4fv(124, DebuggerMessage.Message.Function.glUniform4fv),
+ glUniform4i(125, DebuggerMessage.Message.Function.glUniform4i),
+ glUniform4iv(126, DebuggerMessage.Message.Function.glUniform4iv),
+ glUniformMatrix2fv(127, DebuggerMessage.Message.Function.glUniformMatrix2fv),
+ glUniformMatrix3fv(128, DebuggerMessage.Message.Function.glUniformMatrix3fv),
+ glUniformMatrix4fv(129, DebuggerMessage.Message.Function.glUniformMatrix4fv),
+ glUseProgram(130, DebuggerMessage.Message.Function.glUseProgram),
+ glValidateProgram(131, DebuggerMessage.Message.Function.glValidateProgram),
+ glVertexAttrib1f(132, DebuggerMessage.Message.Function.glVertexAttrib1f),
+ glVertexAttrib1fv(133, DebuggerMessage.Message.Function.glVertexAttrib1fv),
+ glVertexAttrib2f(134, DebuggerMessage.Message.Function.glVertexAttrib2f),
+ glVertexAttrib2fv(135, DebuggerMessage.Message.Function.glVertexAttrib2fv),
+ glVertexAttrib3f(136, DebuggerMessage.Message.Function.glVertexAttrib3f),
+ glVertexAttrib3fv(137, DebuggerMessage.Message.Function.glVertexAttrib3fv),
+ glVertexAttrib4f(138, DebuggerMessage.Message.Function.glVertexAttrib4f),
+ glVertexAttrib4fv(139, DebuggerMessage.Message.Function.glVertexAttrib4fv),
+ glVertexAttribPointer(140, DebuggerMessage.Message.Function.glVertexAttribPointer),
+ glViewport(141, DebuggerMessage.Message.Function.glViewport),
+ ;
+
+ public final int index;
+ public final DebuggerMessage.Message.Function function;
+
+ GLFunction(final int index, final DebuggerMessage.Message.Function function) {
+ this.index = index;
+ this.function = function;
+ }
+} \ No newline at end of file
diff --git a/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/MessageData.java b/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/MessageData.java
new file mode 100644
index 0000000..729592e
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/MessageData.java
@@ -0,0 +1,89 @@
+/*
+ ** 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.
+ */
+
+package com.android.glesv2debugger;
+
+import org.eclipse.swt.graphics.Device;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.ImageData;
+
+public class MessageData {
+ public DebuggerMessage.Message.Function function;
+ public Image image; // texture
+ public String shader; // shader source
+ public String[] columns;
+ public float[] data; // vertex attributes
+
+ public MessageData(final Device device, final DebuggerMessage.Message msg) {
+ image = null;
+ shader = null;
+ data = null;
+ StringBuilder builder = new StringBuilder();
+ function = msg.getFunction();
+ ImageData imageData = null;
+ if (function != DebuggerMessage.Message.Function.ACK)
+ assert msg.hasTime();
+ columns = new String [4];
+ columns[0] = function.toString();
+ columns[1] = "";
+ if (msg.hasTime())
+ columns[1] += Float.toString(msg.getTime());
+ if (msg.hasClock())
+ columns[1] += ":" + Float.toString(msg.getClock());
+ columns[2] = Integer.toHexString(msg.getContextId());
+ columns[3] = MessageFormatter.Format(msg);
+ switch (function) {
+ case glBufferData:
+ data = MessageProcessor.ReceiveData(msg.getArg0(), msg.getData());
+ break;
+ case glBufferSubData:
+ data = MessageProcessor.ReceiveData(msg.getArg0(), msg.getData());
+ break;
+ case glShaderSource:
+ shader = msg.getData().toStringUtf8();
+ int index = shader.indexOf('\n');
+ columns[3] += " source: " + shader.substring(0, index >= 0 ? index : shader.length()) + "...";
+ break;
+ case glTexImage2D:
+ if (!msg.hasData())
+ break;
+ imageData = MessageProcessor.ReceiveImage(msg.getArg3(), msg
+ .getArg4(), msg.getArg6(), msg.getArg7(), msg.getData()
+ .toByteArray());
+ if (null == imageData)
+ break;
+ image = new Image(device, imageData);
+ break;
+ case glTexSubImage2D:
+ assert msg.hasData();
+ imageData = MessageProcessor.ReceiveImage(msg.getArg4(), msg
+ .getArg5(), msg.getArg6(), msg.getArg7(), msg.getData()
+ .toByteArray());
+ if (null == imageData)
+ break;
+ image = new Image(device, imageData);
+ break;
+ case glReadPixels:
+ if (!msg.hasData())
+ break;
+ imageData = MessageProcessor.ReceiveImage(msg.getArg2(), msg.getArg3(),
+ msg.getArg4(), msg.getArg5(), msg.getData().toByteArray());
+ imageData = imageData.scaledTo(imageData.width, -imageData.height);
+ image = new Image(device, imageData);
+ break;
+ }
+ }
+}
diff --git a/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/MessageFormatter.java b/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/MessageFormatter.java
new file mode 100644
index 0000000..899cf5f
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/MessageFormatter.java
@@ -0,0 +1,396 @@
+/*
+ ** 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.
+ */
+
+// auto generated by generate_MessageFormatter_java.py"
+
+package com.android.glesv2debugger;
+
+import java.nio.ByteBuffer;
+
+public class MessageFormatter {
+
+ static String FormatFloats(int count, final ByteBuffer data) {
+ String ret = "[";
+ for (int i = 0; i < count; i++)
+ {
+ ret += Float.intBitsToFloat(Integer.reverseBytes(data.getInt()));
+ if (i < count - 1)
+ ret += ", ";
+ }
+ return ret + "]";
+ }
+
+ static String FormatInts(int count, final ByteBuffer data) {
+ String ret = "[";
+ for (int i = 0; i < count; i++)
+ {
+ ret += Integer.reverseBytes(data.getInt());
+ if (i < count - 1)
+ ret += ", ";
+ }
+ return ret + "]";
+ }
+
+ static String FormatUints(int count, final ByteBuffer data) {
+ String ret = "[";
+ for (int i = 0; i < count; i++)
+ {
+ long bits = Integer.reverseBytes(data.getInt()) & 0xffffffff;
+ ret += bits;
+ if (i < count - 1)
+ ret += ", ";
+ }
+ return ret + "]";
+ }
+
+ static String FormatMatrix(int columns, int count, final ByteBuffer data) {
+ String ret = "[";
+ for (int i = 0; i < count; i++)
+ {
+ ret += Float.intBitsToFloat(Integer.reverseBytes(data.getInt()));
+ if (i % columns == columns - 1)
+ ret += '\n';
+ else if (i < count - 1)
+ ret += ", ";
+ }
+ return ret + "]";
+ }
+
+ public static String Format(final DebuggerMessage.Message msg) {
+ String str;
+ switch (msg.getFunction()) {
+ case glActiveTexture:
+ str = String.format("%s (texture=%s)", "void", GLEnum.valueOf(msg.getArg0())); break;
+ case glAttachShader:
+ str = String.format("%s (program=%s, shader=%s)", "void", msg.getArg0(), msg.getArg1()); break;
+ case glBindAttribLocation:
+ str = String.format("%s (program=%s, index=%s, name=%s)", "void", msg.getArg0(), msg.getArg1(), msg.getData().toStringUtf8()); break;
+ case glBindBuffer:
+ str = String.format("%s (target=%s, buffer=%s)", "void", GLEnum.valueOf(msg.getArg0()), msg.getArg1()); break;
+ case glBindFramebuffer:
+ str = String.format("%s (target=%s, framebuffer=%s)", "void", GLEnum.valueOf(msg.getArg0()), msg.getArg1()); break;
+ case glBindRenderbuffer:
+ str = String.format("%s (target=%s, renderbuffer=%s)", "void", GLEnum.valueOf(msg.getArg0()), msg.getArg1()); break;
+ case glBindTexture:
+ str = String.format("%s (target=%s, texture=%s)", "void", GLEnum.valueOf(msg.getArg0()), msg.getArg1()); break;
+ case glBlendColor:
+ str = String.format("%s (red=%s, green=%s, blue=%s, alpha=%s)", "void", Float.intBitsToFloat(msg.getArg0()), Float.intBitsToFloat(msg.getArg1()), Float.intBitsToFloat(msg.getArg2()), Float.intBitsToFloat(msg.getArg3())); break;
+ case glBlendEquation:
+ str = String.format("%s (mode=%s)", "void", GLEnum.valueOf(msg.getArg0())); break;
+ case glBlendEquationSeparate:
+ str = String.format("%s (modeRGB=%s, modeAlpha=%s)", "void", GLEnum.valueOf(msg.getArg0()), GLEnum.valueOf(msg.getArg1())); break;
+ case glBlendFunc:
+ str = String.format("%s (sfactor=%s, dfactor=%s)", "void", GLEnum.valueOf(msg.getArg0()), GLEnum.valueOf(msg.getArg1())); break;
+ case glBlendFuncSeparate:
+ str = String.format("%s (srcRGB=%s, dstRGB=%s, srcAlpha=%s, dstAlpha=%s)", "void", GLEnum.valueOf(msg.getArg0()), GLEnum.valueOf(msg.getArg1()), GLEnum.valueOf(msg.getArg2()), GLEnum.valueOf(msg.getArg3())); break;
+ case glBufferData:
+ str = String.format("%s (target=%s, size=%s, data=%s, usage=%s)", "void", GLEnum.valueOf(msg.getArg0()), msg.getArg1(), "0x" + Integer.toHexString(msg.getArg2()), GLEnum.valueOf(msg.getArg3())); break;
+ case glBufferSubData:
+ str = String.format("%s (target=%s, offset=%s, size=%s, data=%s)", "void", GLEnum.valueOf(msg.getArg0()), msg.getArg1(), msg.getArg2(), "0x" + Integer.toHexString(msg.getArg3())); break;
+ case glCheckFramebufferStatus:
+ str = String.format("%s (target=%s)", GLEnum.valueOf(msg.getRet()), GLEnum.valueOf(msg.getArg0())); break;
+ case glClear:
+ str = String.format("%s (mask=%s)", "void", msg.getArg0()); break;
+ case glClearColor:
+ str = String.format("%s (red=%s, green=%s, blue=%s, alpha=%s)", "void", Float.intBitsToFloat(msg.getArg0()), Float.intBitsToFloat(msg.getArg1()), Float.intBitsToFloat(msg.getArg2()), Float.intBitsToFloat(msg.getArg3())); break;
+ case glClearDepthf:
+ str = String.format("%s (depth=%s)", "void", Float.intBitsToFloat(msg.getArg0())); break;
+ case glClearStencil:
+ str = String.format("%s (s=%s)", "void", msg.getArg0()); break;
+ case glColorMask:
+ str = String.format("%s (red=%s, green=%s, blue=%s, alpha=%s)", "void", msg.getArg0(), msg.getArg1(), msg.getArg2(), msg.getArg3()); break;
+ case glCompileShader:
+ str = String.format("%s (shader=%s)", "void", msg.getArg0()); break;
+ case glCompressedTexImage2D:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (target=%s, level=%s, internalformat=%s, width=%s, height=%s, border=%s, imageSize=%s, data=%s)", "void", GLEnum.valueOf(msg.getArg0()), msg.getArg1(), GLEnum.valueOf(msg.getArg2()), msg.getArg3(), msg.getArg4(), msg.getArg5(), msg.getArg6(), "0x" + Integer.toHexString(msg.getArg7())); break;
+ case glCompressedTexSubImage2D:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (target=%s, level=%s, xoffset=%s, yoffset=%s, width=%s, height=%s, format=%s, imageSize=%s, data=%s)", "void", GLEnum.valueOf(msg.getArg0()), msg.getArg1(), msg.getArg2(), msg.getArg3(), msg.getArg4(), msg.getArg5(), GLEnum.valueOf(msg.getArg6()), msg.getArg7(), "0x" + Integer.toHexString(msg.getArg8())); break;
+ case glCopyTexImage2D:
+ str = String.format("%s (target=%s, level=%s, internalformat=%s, x=%s, y=%s, width=%s, height=%s, border=%s)", "void", GLEnum.valueOf(msg.getArg0()), msg.getArg1(), GLEnum.valueOf(msg.getArg2()), msg.getArg3(), msg.getArg4(), msg.getArg5(), msg.getArg6(), msg.getArg7()); break;
+ case glCopyTexSubImage2D:
+ str = String.format("%s (target=%s, level=%s, xoffset=%s, yoffset=%s, x=%s, y=%s, width=%s, height=%s)", "void", GLEnum.valueOf(msg.getArg0()), msg.getArg1(), msg.getArg2(), msg.getArg3(), msg.getArg4(), msg.getArg5(), msg.getArg6(), msg.getArg7()); break;
+ case glCreateProgram:
+ str = String.format("%s ()", msg.getRet()); break;
+ case glCreateShader:
+ str = String.format("%s (type=%s)", msg.getRet(), GLEnum.valueOf(msg.getArg0())); break;
+ case glCullFace:
+ str = String.format("%s (mode=%s)", "void", GLEnum.valueOf(msg.getArg0())); break;
+ case glDeleteBuffers:
+ str = String.format("%s (n=%s, buffers=%s)", "void", msg.getArg0(), FormatUints(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer())); break;
+ case glDeleteFramebuffers:
+ str = String.format("%s (n=%s, framebuffers=%s)", "void", msg.getArg0(), FormatUints(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer())); break;
+ case glDeleteProgram:
+ str = String.format("%s (program=%s)", "void", msg.getArg0()); break;
+ case glDeleteRenderbuffers:
+ str = String.format("%s (n=%s, renderbuffers=%s)", "void", msg.getArg0(), FormatUints(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer())); break;
+ case glDeleteShader:
+ str = String.format("%s (shader=%s)", "void", msg.getArg0()); break;
+ case glDeleteTextures:
+ str = String.format("%s (n=%s, textures=%s)", "void", msg.getArg0(), FormatUints(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer())); break;
+ case glDepthFunc:
+ str = String.format("%s (func=%s)", "void", GLEnum.valueOf(msg.getArg0())); break;
+ case glDepthMask:
+ str = String.format("%s (flag=%s)", "void", msg.getArg0()); break;
+ case glDepthRangef:
+ str = String.format("%s (zNear=%s, zFar=%s)", "void", Float.intBitsToFloat(msg.getArg0()), Float.intBitsToFloat(msg.getArg1())); break;
+ case glDetachShader:
+ str = String.format("%s (program=%s, shader=%s)", "void", msg.getArg0(), msg.getArg1()); break;
+ case glDisable:
+ str = String.format("%s (cap=%s)", "void", GLEnum.valueOf(msg.getArg0())); break;
+ case glDisableVertexAttribArray:
+ str = String.format("%s (index=%s)", "void", msg.getArg0()); break;
+ case glDrawArrays:
+ str = String.format("%s (mode=%s, first=%s, count=%s)", "void", GLEnum.valueOf(msg.getArg0()), msg.getArg1(), msg.getArg2()); break;
+ case glDrawElements:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (mode=%s, count=%s, type=%s, indices=%s)", "void", GLEnum.valueOf(msg.getArg0()), msg.getArg1(), GLEnum.valueOf(msg.getArg2()), "0x" + Integer.toHexString(msg.getArg3())); break;
+ case glEnable:
+ str = String.format("%s (cap=%s)", "void", GLEnum.valueOf(msg.getArg0())); break;
+ case glEnableVertexAttribArray:
+ str = String.format("%s (index=%s)", "void", msg.getArg0()); break;
+ case glFinish:
+ str = String.format("%s ()", "void"); break;
+ case glFlush:
+ str = String.format("%s ()", "void"); break;
+ case glFramebufferRenderbuffer:
+ str = String.format("%s (target=%s, attachment=%s, renderbuffertarget=%s, renderbuffer=%s)", "void", GLEnum.valueOf(msg.getArg0()), GLEnum.valueOf(msg.getArg1()), GLEnum.valueOf(msg.getArg2()), msg.getArg3()); break;
+ case glFramebufferTexture2D:
+ str = String.format("%s (target=%s, attachment=%s, textarget=%s, texture=%s, level=%s)", "void", GLEnum.valueOf(msg.getArg0()), GLEnum.valueOf(msg.getArg1()), GLEnum.valueOf(msg.getArg2()), msg.getArg3(), msg.getArg4()); break;
+ case glFrontFace:
+ str = String.format("%s (mode=%s)", "void", GLEnum.valueOf(msg.getArg0())); break;
+ case glGenBuffers:
+ str = String.format("%s (n=%s, buffers=%s)", "void", msg.getArg0(), FormatUints(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer())); break;
+ case glGenerateMipmap:
+ str = String.format("%s (target=%s)", "void", GLEnum.valueOf(msg.getArg0())); break;
+ case glGenFramebuffers:
+ str = String.format("%s (n=%s, framebuffers=%s)", "void", msg.getArg0(), FormatUints(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer())); break;
+ case glGenRenderbuffers:
+ str = String.format("%s (n=%s, renderbuffers=%s)", "void", msg.getArg0(), FormatUints(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer())); break;
+ case glGenTextures:
+ str = String.format("%s (n=%s, textures=%s)", "void", msg.getArg0(), FormatUints(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer())); break;
+ case glGetActiveAttrib:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (program=%s, index=%s, bufsize=%s, length=%s, size=%s, type=%s, name=%s)", "void", msg.getArg0(), msg.getArg1(), msg.getArg2(), "0x" + Integer.toHexString(msg.getArg3()), "0x" + Integer.toHexString(msg.getArg4()), "0x" + Integer.toHexString(msg.getArg5()), msg.getData().toStringUtf8()); break;
+ case glGetActiveUniform:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (program=%s, index=%s, bufsize=%s, length=%s, size=%s, type=%s, name=%s)", "void", msg.getArg0(), msg.getArg1(), msg.getArg2(), "0x" + Integer.toHexString(msg.getArg3()), "0x" + Integer.toHexString(msg.getArg4()), "0x" + Integer.toHexString(msg.getArg5()), msg.getData().toStringUtf8()); break;
+ case glGetAttachedShaders:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (program=%s, maxcount=%s, count=%s, shaders=%s)", "void", msg.getArg0(), msg.getArg1(), "0x" + Integer.toHexString(msg.getArg2()), "0x" + Integer.toHexString(msg.getArg3())); break;
+ case glGetAttribLocation:
+ str = String.format("%s (program=%s, name=%s)", msg.getRet(), msg.getArg0(), msg.getData().toStringUtf8()); break;
+ case glGetBooleanv:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (pname=%s, params=%s)", "void", GLEnum.valueOf(msg.getArg0()), "0x" + Integer.toHexString(msg.getArg1())); break;
+ case glGetBufferParameteriv:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (target=%s, pname=%s, params=%s)", "void", GLEnum.valueOf(msg.getArg0()), GLEnum.valueOf(msg.getArg1()), "0x" + Integer.toHexString(msg.getArg2())); break;
+ case glGetError:
+ str = String.format("%s ()", GLEnum.valueOf(msg.getRet())); break;
+ case glGetFloatv:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (pname=%s, params=%s)", "void", GLEnum.valueOf(msg.getArg0()), "0x" + Integer.toHexString(msg.getArg1())); break;
+ case glGetFramebufferAttachmentParameteriv:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (target=%s, attachment=%s, pname=%s, params=%s)", "void", GLEnum.valueOf(msg.getArg0()), GLEnum.valueOf(msg.getArg1()), GLEnum.valueOf(msg.getArg2()), "0x" + Integer.toHexString(msg.getArg3())); break;
+ case glGetIntegerv:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (pname=%s, params=%s)", "void", GLEnum.valueOf(msg.getArg0()), "0x" + Integer.toHexString(msg.getArg1())); break;
+ case glGetProgramiv:
+ str = String.format("%s (program=%s, pname=%s, params=%s)", "void", msg.getArg0(), GLEnum.valueOf(msg.getArg1()), FormatInts(1, msg.getData().asReadOnlyByteBuffer())); break;
+ case glGetProgramInfoLog:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (program=%s, bufsize=%s, length=%s, infolog=%s)", "void", msg.getArg0(), msg.getArg1(), "0x" + Integer.toHexString(msg.getArg2()), msg.getData().toStringUtf8()); break;
+ case glGetRenderbufferParameteriv:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (target=%s, pname=%s, params=%s)", "void", GLEnum.valueOf(msg.getArg0()), GLEnum.valueOf(msg.getArg1()), "0x" + Integer.toHexString(msg.getArg2())); break;
+ case glGetShaderiv:
+ str = String.format("%s (shader=%s, pname=%s, params=%s)", "void", msg.getArg0(), GLEnum.valueOf(msg.getArg1()), FormatInts(1, msg.getData().asReadOnlyByteBuffer())); break;
+ case glGetShaderInfoLog:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (shader=%s, bufsize=%s, length=%s, infolog=%s)", "void", msg.getArg0(), msg.getArg1(), "0x" + Integer.toHexString(msg.getArg2()), msg.getData().toStringUtf8()); break;
+ case glGetShaderPrecisionFormat:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (shadertype=%s, precisiontype=%s, range=%s, precision=%s)", "void", GLEnum.valueOf(msg.getArg0()), GLEnum.valueOf(msg.getArg1()), "0x" + Integer.toHexString(msg.getArg2()), "0x" + Integer.toHexString(msg.getArg3())); break;
+ case glGetShaderSource:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (shader=%s, bufsize=%s, length=%s, source=%s)", "void", msg.getArg0(), msg.getArg1(), "0x" + Integer.toHexString(msg.getArg2()), msg.getData().toStringUtf8()); break;
+ case glGetString:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (name=%s)", "0x" + Integer.toHexString(msg.getRet()), GLEnum.valueOf(msg.getArg0())); break;
+ case glGetTexParameterfv:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (target=%s, pname=%s, params=%s)", "void", GLEnum.valueOf(msg.getArg0()), GLEnum.valueOf(msg.getArg1()), "0x" + Integer.toHexString(msg.getArg2())); break;
+ case glGetTexParameteriv:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (target=%s, pname=%s, params=%s)", "void", GLEnum.valueOf(msg.getArg0()), GLEnum.valueOf(msg.getArg1()), "0x" + Integer.toHexString(msg.getArg2())); break;
+ case glGetUniformfv:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (program=%s, location=%s, params=%s)", "void", msg.getArg0(), msg.getArg1(), "0x" + Integer.toHexString(msg.getArg2())); break;
+ case glGetUniformiv:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (program=%s, location=%s, params=%s)", "void", msg.getArg0(), msg.getArg1(), "0x" + Integer.toHexString(msg.getArg2())); break;
+ case glGetUniformLocation:
+ str = String.format("%s (program=%s, name=%s)", msg.getRet(), msg.getArg0(), msg.getData().toStringUtf8()); break;
+ case glGetVertexAttribfv:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (index=%s, pname=%s, params=%s)", "void", msg.getArg0(), GLEnum.valueOf(msg.getArg1()), "0x" + Integer.toHexString(msg.getArg2())); break;
+ case glGetVertexAttribiv:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (index=%s, pname=%s, params=%s)", "void", msg.getArg0(), GLEnum.valueOf(msg.getArg1()), "0x" + Integer.toHexString(msg.getArg2())); break;
+ case glGetVertexAttribPointerv:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (index=%s, pname=%s, pointer=%s)", "void", msg.getArg0(), GLEnum.valueOf(msg.getArg1()), "0x" + Integer.toHexString(msg.getArg2())); break;
+ case glHint:
+ str = String.format("%s (target=%s, mode=%s)", "void", GLEnum.valueOf(msg.getArg0()), GLEnum.valueOf(msg.getArg1())); break;
+ case glIsBuffer:
+ str = String.format("%s (buffer=%s)", msg.getRet(), msg.getArg0()); break;
+ case glIsEnabled:
+ str = String.format("%s (cap=%s)", msg.getRet(), GLEnum.valueOf(msg.getArg0())); break;
+ case glIsFramebuffer:
+ str = String.format("%s (framebuffer=%s)", msg.getRet(), msg.getArg0()); break;
+ case glIsProgram:
+ str = String.format("%s (program=%s)", msg.getRet(), msg.getArg0()); break;
+ case glIsRenderbuffer:
+ str = String.format("%s (renderbuffer=%s)", msg.getRet(), msg.getArg0()); break;
+ case glIsShader:
+ str = String.format("%s (shader=%s)", msg.getRet(), msg.getArg0()); break;
+ case glIsTexture:
+ str = String.format("%s (texture=%s)", msg.getRet(), msg.getArg0()); break;
+ case glLineWidth:
+ str = String.format("%s (width=%s)", "void", Float.intBitsToFloat(msg.getArg0())); break;
+ case glLinkProgram:
+ str = String.format("%s (program=%s)", "void", msg.getArg0()); break;
+ case glPixelStorei:
+ str = String.format("%s (pname=%s, param=%s)", "void", GLEnum.valueOf(msg.getArg0()), msg.getArg1()); break;
+ case glPolygonOffset:
+ str = String.format("%s (factor=%s, units=%s)", "void", Float.intBitsToFloat(msg.getArg0()), Float.intBitsToFloat(msg.getArg1())); break;
+ case glReadPixels:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (x=%s, y=%s, width=%s, height=%s, format=%s, type=%s, pixels=%s)", "void", msg.getArg0(), msg.getArg1(), msg.getArg2(), msg.getArg3(), GLEnum.valueOf(msg.getArg4()), GLEnum.valueOf(msg.getArg5()), "0x" + Integer.toHexString(msg.getArg6())); break;
+ case glReleaseShaderCompiler:
+ str = String.format("%s ()", "void"); break;
+ case glRenderbufferStorage:
+ str = String.format("%s (target=%s, internalformat=%s, width=%s, height=%s)", "void", GLEnum.valueOf(msg.getArg0()), GLEnum.valueOf(msg.getArg1()), msg.getArg2(), msg.getArg3()); break;
+ case glSampleCoverage:
+ str = String.format("%s (value=%s, invert=%s)", "void", Float.intBitsToFloat(msg.getArg0()), msg.getArg1()); break;
+ case glScissor:
+ str = String.format("%s (x=%s, y=%s, width=%s, height=%s)", "void", msg.getArg0(), msg.getArg1(), msg.getArg2(), msg.getArg3()); break;
+ case glShaderBinary:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (n=%s, shaders=%s, binaryformat=%s, binary=%s, length=%s)", "void", msg.getArg0(), "0x" + Integer.toHexString(msg.getArg1()), GLEnum.valueOf(msg.getArg2()), "0x" + Integer.toHexString(msg.getArg3()), msg.getArg4()); break;
+ case glShaderSource:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (shader=%s, count=%s, string=%s, length=%s)", "void", msg.getArg0(), msg.getArg1(), "0x" + Integer.toHexString(msg.getArg2()), "0x" + Integer.toHexString(msg.getArg3())); break;
+ case glStencilFunc:
+ str = String.format("%s (func=%s, ref=%s, mask=%s)", "void", GLEnum.valueOf(msg.getArg0()), msg.getArg1(), msg.getArg2()); break;
+ case glStencilFuncSeparate:
+ str = String.format("%s (face=%s, func=%s, ref=%s, mask=%s)", "void", GLEnum.valueOf(msg.getArg0()), GLEnum.valueOf(msg.getArg1()), msg.getArg2(), msg.getArg3()); break;
+ case glStencilMask:
+ str = String.format("%s (mask=%s)", "void", msg.getArg0()); break;
+ case glStencilMaskSeparate:
+ str = String.format("%s (face=%s, mask=%s)", "void", GLEnum.valueOf(msg.getArg0()), msg.getArg1()); break;
+ case glStencilOp:
+ str = String.format("%s (fail=%s, zfail=%s, zpass=%s)", "void", GLEnum.valueOf(msg.getArg0()), GLEnum.valueOf(msg.getArg1()), GLEnum.valueOf(msg.getArg2())); break;
+ case glStencilOpSeparate:
+ str = String.format("%s (face=%s, fail=%s, zfail=%s, zpass=%s)", "void", GLEnum.valueOf(msg.getArg0()), GLEnum.valueOf(msg.getArg1()), GLEnum.valueOf(msg.getArg2()), GLEnum.valueOf(msg.getArg3())); break;
+ case glTexImage2D:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (target=%s, level=%s, internalformat=%s, width=%s, height=%s, border=%s, format=%s, type=%s, pixels=%s)", "void", GLEnum.valueOf(msg.getArg0()), msg.getArg1(), msg.getArg2(), msg.getArg3(), msg.getArg4(), msg.getArg5(), GLEnum.valueOf(msg.getArg6()), GLEnum.valueOf(msg.getArg7()), "0x" + Integer.toHexString(msg.getArg8())); break;
+ case glTexParameterf:
+ str = String.format("%s (target=%s, pname=%s, param=%s)", "void", GLEnum.valueOf(msg.getArg0()), GLEnum.valueOf(msg.getArg1()), Float.intBitsToFloat(msg.getArg2())); break;
+ case glTexParameterfv:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (target=%s, pname=%s, params=%s)", "void", GLEnum.valueOf(msg.getArg0()), GLEnum.valueOf(msg.getArg1()), "0x" + Integer.toHexString(msg.getArg2())); break;
+ case glTexParameteri:
+ str = String.format("%s (target=%s, pname=%s, param=%s)", "void", GLEnum.valueOf(msg.getArg0()), GLEnum.valueOf(msg.getArg1()), msg.getArg2()); break;
+ case glTexParameteriv:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (target=%s, pname=%s, params=%s)", "void", GLEnum.valueOf(msg.getArg0()), GLEnum.valueOf(msg.getArg1()), "0x" + Integer.toHexString(msg.getArg2())); break;
+ case glTexSubImage2D:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (target=%s, level=%s, xoffset=%s, yoffset=%s, width=%s, height=%s, format=%s, type=%s, pixels=%s)", "void", GLEnum.valueOf(msg.getArg0()), msg.getArg1(), msg.getArg2(), msg.getArg3(), msg.getArg4(), msg.getArg5(), GLEnum.valueOf(msg.getArg6()), GLEnum.valueOf(msg.getArg7()), "0x" + Integer.toHexString(msg.getArg8())); break;
+ case glUniform1f:
+ str = String.format("%s (location=%s, x=%s)", "void", msg.getArg0(), Float.intBitsToFloat(msg.getArg1())); break;
+ case glUniform1fv:
+ str = String.format("%s (location=%s, count=%s, v=%s)", "void", msg.getArg0(), msg.getArg1(), FormatFloats(1 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer())); break;
+ case glUniform1i:
+ str = String.format("%s (location=%s, x=%s)", "void", msg.getArg0(), msg.getArg1()); break;
+ case glUniform1iv:
+ str = String.format("%s (location=%s, count=%s, v=%s)", "void", msg.getArg0(), msg.getArg1(), FormatInts(1 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer())); break;
+ case glUniform2f:
+ str = String.format("%s (location=%s, x=%s, y=%s)", "void", msg.getArg0(), Float.intBitsToFloat(msg.getArg1()), Float.intBitsToFloat(msg.getArg2())); break;
+ case glUniform2fv:
+ str = String.format("%s (location=%s, count=%s, v=%s)", "void", msg.getArg0(), msg.getArg1(), FormatFloats(2 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer())); break;
+ case glUniform2i:
+ str = String.format("%s (location=%s, x=%s, y=%s)", "void", msg.getArg0(), msg.getArg1(), msg.getArg2()); break;
+ case glUniform2iv:
+ str = String.format("%s (location=%s, count=%s, v=%s)", "void", msg.getArg0(), msg.getArg1(), FormatInts(2 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer())); break;
+ case glUniform3f:
+ str = String.format("%s (location=%s, x=%s, y=%s, z=%s)", "void", msg.getArg0(), Float.intBitsToFloat(msg.getArg1()), Float.intBitsToFloat(msg.getArg2()), Float.intBitsToFloat(msg.getArg3())); break;
+ case glUniform3fv:
+ str = String.format("%s (location=%s, count=%s, v=%s)", "void", msg.getArg0(), msg.getArg1(), FormatFloats(3 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer())); break;
+ case glUniform3i:
+ str = String.format("%s (location=%s, x=%s, y=%s, z=%s)", "void", msg.getArg0(), msg.getArg1(), msg.getArg2(), msg.getArg3()); break;
+ case glUniform3iv:
+ str = String.format("%s (location=%s, count=%s, v=%s)", "void", msg.getArg0(), msg.getArg1(), FormatInts(3 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer())); break;
+ case glUniform4f:
+ str = String.format("%s (location=%s, x=%s, y=%s, z=%s, w=%s)", "void", msg.getArg0(), Float.intBitsToFloat(msg.getArg1()), Float.intBitsToFloat(msg.getArg2()), Float.intBitsToFloat(msg.getArg3()), Float.intBitsToFloat(msg.getArg4())); break;
+ case glUniform4fv:
+ str = String.format("%s (location=%s, count=%s, v=%s)", "void", msg.getArg0(), msg.getArg1(), FormatFloats(4 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer())); break;
+ case glUniform4i:
+ str = String.format("%s (location=%s, x=%s, y=%s, z=%s, w=%s)", "void", msg.getArg0(), msg.getArg1(), msg.getArg2(), msg.getArg3(), msg.getArg4()); break;
+ case glUniform4iv:
+ str = String.format("%s (location=%s, count=%s, v=%s)", "void", msg.getArg0(), msg.getArg1(), FormatInts(4 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer())); break;
+ case glUniformMatrix2fv:
+ str = String.format("%s (location=%s, count=%s, transpose=%s, value=%s)", "void", msg.getArg0(), msg.getArg1(), msg.getArg2(), FormatMatrix(2, 4 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer())); break;
+ case glUniformMatrix3fv:
+ str = String.format("%s (location=%s, count=%s, transpose=%s, value=%s)", "void", msg.getArg0(), msg.getArg1(), msg.getArg2(), FormatMatrix(3, 9 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer())); break;
+ case glUniformMatrix4fv:
+ str = String.format("%s (location=%s, count=%s, transpose=%s, value=%s)", "void", msg.getArg0(), msg.getArg1(), msg.getArg2(), FormatMatrix(4, 16 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer())); break;
+ case glUseProgram:
+ str = String.format("%s (program=%s)", "void", msg.getArg0()); break;
+ case glValidateProgram:
+ str = String.format("%s (program=%s)", "void", msg.getArg0()); break;
+ case glVertexAttrib1f:
+ str = String.format("%s (indx=%s, x=%s)", "void", msg.getArg0(), Float.intBitsToFloat(msg.getArg1())); break;
+ case glVertexAttrib1fv:
+ str = String.format("%s (indx=%s, values=%s)", "void", msg.getArg0(), FormatFloats(1, msg.getData().asReadOnlyByteBuffer())); break;
+ case glVertexAttrib2f:
+ str = String.format("%s (indx=%s, x=%s, y=%s)", "void", msg.getArg0(), Float.intBitsToFloat(msg.getArg1()), Float.intBitsToFloat(msg.getArg2())); break;
+ case glVertexAttrib2fv:
+ str = String.format("%s (indx=%s, values=%s)", "void", msg.getArg0(), FormatFloats(2, msg.getData().asReadOnlyByteBuffer())); break;
+ case glVertexAttrib3f:
+ str = String.format("%s (indx=%s, x=%s, y=%s, z=%s)", "void", msg.getArg0(), Float.intBitsToFloat(msg.getArg1()), Float.intBitsToFloat(msg.getArg2()), Float.intBitsToFloat(msg.getArg3())); break;
+ case glVertexAttrib3fv:
+ str = String.format("%s (indx=%s, values=%s)", "void", msg.getArg0(), FormatFloats(3, msg.getData().asReadOnlyByteBuffer())); break;
+ case glVertexAttrib4f:
+ str = String.format("%s (indx=%s, x=%s, y=%s, z=%s, w=%s)", "void", msg.getArg0(), Float.intBitsToFloat(msg.getArg1()), Float.intBitsToFloat(msg.getArg2()), Float.intBitsToFloat(msg.getArg3()), Float.intBitsToFloat(msg.getArg4())); break;
+ case glVertexAttrib4fv:
+ str = String.format("%s (indx=%s, values=%s)", "void", msg.getArg0(), FormatFloats(4, msg.getData().asReadOnlyByteBuffer())); break;
+ case glVertexAttribPointer:
+ // FIXME: this function uses pointers, debugger may send data in msg.data
+ str = String.format("%s (indx=%s, size=%s, type=%s, normalized=%s, stride=%s, ptr=%s)", "void", msg.getArg0(), msg.getArg1(), GLEnum.valueOf(msg.getArg2()), msg.getArg3(), msg.getArg4(), "0x" + Integer.toHexString(msg.getArg5())); break;
+ case glViewport:
+ str = String.format("%s (x=%s, y=%s, width=%s, height=%s)", "void", msg.getArg0(), msg.getArg1(), msg.getArg2(), msg.getArg3()); break;
+ default:
+ str = msg.toString();
+ }
+ return str;
+ }
+} \ No newline at end of file
diff --git a/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/MessageProcessor.java b/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/MessageProcessor.java
new file mode 100644
index 0000000..0c4a005
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/MessageProcessor.java
@@ -0,0 +1,148 @@
+/*
+ ** 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.
+ */
+
+package com.android.glesv2debugger;
+
+import com.google.protobuf.ByteString;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.graphics.ImageData;
+import org.eclipse.swt.graphics.PaletteData;
+
+import java.nio.ByteBuffer;
+
+public class MessageProcessor {
+ static void showError(final String message) {
+ // need to call SWT from UI thread
+ MessageDialog.openError(null, "MessageProcessor", message);
+ }
+
+ static byte[] RLEDecode(final byte[] data) {
+ byte dataSize = data[0];
+ int a = data[1] & 0xff, b = data[2] & 0xff, c = data[3] & 0xff, d = data[4] & 0xff;
+ int count = (d << 24) | (c << 16) | (b << 8) | a;
+ byte[] buffer = new byte[count * dataSize];
+ int write = 0;
+ int i = 5;
+ for (i = 5; i < data.length;) {
+ byte flag = data[i];
+ int repeat = (flag & 0x7f) + 1;
+ assert 0 < repeat && repeat < 129;
+ i++;
+ if (0x80 == (flag & 0x80)) {
+ for (int j = 0; j < repeat; j++)
+ for (int k = 0; k < dataSize; k++)
+ buffer[write++] = data[i + k];
+ i += dataSize;
+ } else // literal runs
+ {
+ for (int j = 0; j < repeat; j++)
+ for (int k = 0; k < dataSize; k++)
+ buffer[write++] = data[i++];
+ }
+ }
+ assert write == count * dataSize;
+ assert i == data.length;
+ return buffer;
+ }
+
+ public static ImageData ReceiveImage(int width, int height, int format,
+ int type, byte[] data) {
+ assert width > 0 && height > 0;
+ int bpp = 0;
+ int redMask = 0, blueMask = 0, greenMask = 0;
+ switch (GLEnum.valueOf(type)) {
+ case GL_UNSIGNED_SHORT_5_6_5:
+ case GL_UNSIGNED_SHORT_4_4_4_4:
+ case GL_UNSIGNED_SHORT_5_5_5_1:
+ format = type;
+ break;
+ case GL_UNSIGNED_BYTE:
+ break;
+ default:
+ showError("unsupported texture type " + type);
+ }
+
+ switch (GLEnum.valueOf(format)) {
+ case GL_ALPHA:
+ case GL_LUMINANCE:
+ redMask = blueMask = greenMask = 0xff;
+ bpp = 8;
+ break;
+ case GL_LUMINANCE_ALPHA:
+ blueMask = 0xff;
+ redMask = 0xff00;
+ bpp = 16;
+ break;
+ case GL_RGB:
+ blueMask = 0xff;
+ greenMask = 0xff00;
+ redMask = 0xff0000;
+ bpp = 24;
+ break;
+ case GL_RGBA:
+ blueMask = 0xff00;
+ greenMask = 0xff0000;
+ redMask = 0xff000000;
+ bpp = 32;
+ break;
+ case GL_UNSIGNED_SHORT_5_6_5:
+ blueMask = ((1 << 5) - 1) << 0;
+ greenMask = ((1 << 6) - 1) << 5;
+ redMask = ((1 << 5) - 1) << 11;
+ bpp = 16;
+ break;
+ case GL_UNSIGNED_SHORT_4_4_4_4:
+ blueMask = ((1 << 4) - 1) << 4;
+ greenMask = ((1 << 4) - 1) << 8;
+ redMask = ((1 << 4) - 1) << 12;
+ bpp = 16;
+ break;
+ case GL_UNSIGNED_SHORT_5_5_5_1:
+ blueMask = ((1 << 5) - 1) << 1;
+ greenMask = ((1 << 5) - 1) << 6;
+ redMask = ((1 << 5) - 1) << 11;
+ bpp = 16;
+ break;
+ default:
+ showError("unsupported texture format: " + format);
+ return null;
+ }
+ // data = RLEDecode(data);
+ PaletteData palette = new PaletteData(redMask, greenMask, blueMask);
+ return new ImageData(width, height, bpp, palette, 1, data);
+ }
+
+ static public float[] ReceiveData(int target, final ByteString data) {
+ ByteBuffer buffer = data.asReadOnlyByteBuffer();
+ GLEnum type = GLEnum.valueOf(target);
+ if (type == GLEnum.GL_ARRAY_BUFFER) {
+ float[] elements = new float[buffer.remaining() / 4];
+ buffer.asFloatBuffer().get(elements);
+ return elements;
+ } else if (type == GLEnum.GL_ELEMENT_ARRAY_BUFFER) {
+ // usually unsigned short
+ float[] elements = new float[buffer.remaining() / 2];
+ for (int i = 0; i < elements.length; i++) {
+ int bits = Short.reverseBytes(buffer.getShort()) & 0xffff;
+ elements[i] = bits;
+ }
+ return elements;
+ } else
+ return null;
+
+ }
+}
diff --git a/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/MessageQueue.java b/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/MessageQueue.java
new file mode 100644
index 0000000..9f91d40
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/MessageQueue.java
@@ -0,0 +1,263 @@
+/*
+ ** 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.
+ */
+
+package com.android.glesv2debugger;
+
+import com.android.glesv2debugger.DebuggerMessage.Message.Function;
+import com.android.glesv2debugger.DebuggerMessage.Message.Type;
+
+import java.io.EOFException;
+import java.io.IOException;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.net.Socket;
+import java.util.ArrayList;
+import java.util.HashMap;
+
+public class MessageQueue implements Runnable {
+
+ boolean running = false;
+ Thread thread = null;
+ ArrayList<DebuggerMessage.Message> complete = new ArrayList<DebuggerMessage.Message>();
+ ArrayList<DebuggerMessage.Message> commands = new ArrayList<DebuggerMessage.Message>();
+ SampleView sampleView;
+
+ public MessageQueue(SampleView sampleView) {
+ this.sampleView = sampleView;
+ }
+
+ public void Start() {
+ if (running)
+ return;
+ running = true;
+ thread = new Thread(this);
+ thread.start();
+ }
+
+ public void Stop() {
+ if (!running)
+ return;
+ running = false;
+ }
+
+ public boolean IsRunning() {
+ return running;
+ }
+
+ void SendCommands(final DataOutputStream dos, final int contextId) throws IOException {
+ synchronized (commands) {
+ for (int i = 0; i < commands.size(); i++) {
+ DebuggerMessage.Message command = commands.get(i);
+ if (command.getContextId() == contextId || contextId == 0) { // FIXME:
+ // proper
+ // context
+ // id
+ SendMessage(dos, command);
+ commands.remove(i);
+ i--;
+ }
+ }
+ }
+ SendResponse(dos, contextId, DebuggerMessage.Message.Function.SKIP);
+ }
+
+ public void AddCommand(DebuggerMessage.Message command) {
+ synchronized (commands) {
+ commands.add(command);
+ }
+ }
+
+ @Override
+ public void run() {
+ Socket socket = new Socket();
+ DataInputStream dis = null;
+ DataOutputStream dos = null;
+ HashMap<Integer, ArrayList<DebuggerMessage.Message>> incoming = new HashMap<Integer, ArrayList<DebuggerMessage.Message>>();
+ try {
+ socket.connect(new java.net.InetSocketAddress("127.0.0.1", 5039));
+ dis = new DataInputStream(socket.getInputStream());
+ dos = new DataOutputStream(socket.getOutputStream());
+ } catch (Exception e) {
+ running = false;
+ Error(e);
+ }
+
+ try {
+ while (running) {
+ DebuggerMessage.Message msg = null;
+ if (incoming.size() > 0) { // find queued incoming
+ for (ArrayList<DebuggerMessage.Message> messages : incoming
+ .values())
+ if (messages.size() > 0) {
+ msg = messages.get(0);
+ messages.remove(0);
+ break;
+ }
+ }
+ if (null == msg) { // get incoming from network
+ msg = ReadMessage(dis);
+ if (msg.getExpectResponse()) {
+ if (msg.getType() == Type.BeforeCall)
+ SendResponse(dos, msg.getContextId(),
+ DebuggerMessage.Message.Function.CONTINUE);
+ else if (msg.getType() == Type.AfterCall)
+ // after GL function call
+ SendCommands(dos, 0); // FIXME: proper context id
+ // SendResponse(dos, msg.getContextId(),
+ // DebuggerMessage.Message.Function.SKIP);
+ else if (msg.getType() == Type.Response)
+ ;
+ else
+ assert false;
+ }
+ }
+
+ int contextId = msg.getContextId();
+ if (!incoming.containsKey(contextId))
+ incoming.put(contextId,
+ new ArrayList<DebuggerMessage.Message>());
+
+ // FIXME: the expected sequence will change for interactive mode
+ while (msg.getType() == Type.BeforeCall) {
+ DebuggerMessage.Message next = null;
+ // get existing message part for this context
+ ArrayList<DebuggerMessage.Message> messages = incoming
+ .get(contextId);
+ if (messages.size() > 0) {
+ next = messages.get(0);
+ messages.remove(0);
+ }
+ if (null == next) { // read new part for message
+ next = ReadMessage(dis);
+
+ if (next.getExpectResponse()) {
+ if (next.getType() == Type.BeforeCall)
+ SendResponse(
+ dos,
+ next.getContextId(),
+ DebuggerMessage.Message.Function.CONTINUE);
+ else if (next.getType() == Type.AfterCall)
+ SendCommands(dos, 0); // FIXME: proper context id
+ else if (msg.getType() == Type.Response)
+ ;
+ else
+ assert false;
+ }
+
+ if (next.getContextId() != contextId) {
+ // message part not for this context
+ if (!incoming.containsKey(next.getContextId()))
+ incoming.put(
+ next.getContextId(),
+ new ArrayList<DebuggerMessage.Message>());
+ incoming.get(next.getContextId()).add(next);
+ continue;
+ }
+ }
+
+ DebuggerMessage.Message.Builder builder = msg.toBuilder();
+ // builder.mergeFrom(next); seems to merge incorrectly
+ if (next.hasRet())
+ builder.setRet(next.getRet());
+ if (next.hasTime())
+ builder.setTime(next.getTime());
+ if (next.hasData())
+ builder.setData(next.getData());
+ builder.setType(next.getType());
+ msg = builder.build();
+ }
+
+ synchronized (complete) {
+ complete.add(msg);
+ }
+ }
+ socket.close();
+ } catch (Exception e) {
+ Error(e);
+ running = false;
+ }
+ }
+
+ public DebuggerMessage.Message RemoveMessage(int contextId) {
+ synchronized (complete) {
+ if (complete.size() == 0)
+ return null;
+ if (0 == contextId) // get a message of any
+ {
+ DebuggerMessage.Message msg = complete.get(0);
+ complete.remove(0);
+ return msg;
+ }
+ for (int i = 0; i < complete.size(); i++) {
+ DebuggerMessage.Message msg = complete.get(i);
+ if (msg.getContextId() == contextId) {
+ complete.remove(i);
+ return msg;
+ }
+ }
+ }
+ return null;
+ }
+
+ DebuggerMessage.Message ReadMessage(final DataInputStream dis)
+ throws IOException {
+ int len = 0;
+ try {
+ len = dis.readInt();
+ } catch (EOFException e) {
+ Error(new Exception("EOF"));
+ }
+ byte[] buffer = new byte[len];
+ int readLen = 0;
+ while (readLen < len) {
+ int read = -1;
+ try {
+ read = dis.read(buffer, readLen, len - readLen);
+ } catch (EOFException e) {
+ Error(new Exception("EOF"));
+ }
+ if (read < 0) {
+ Error(new Exception("read length = " + read));
+ return null;
+ } else
+ readLen += read;
+ }
+ DebuggerMessage.Message msg = DebuggerMessage.Message.parseFrom(buffer);
+ return msg;
+ }
+
+ void SendMessage(final DataOutputStream dos, final DebuggerMessage.Message message)
+ throws IOException {
+ final byte[] data = message.toByteArray();
+ dos.writeInt(data.length);
+ dos.write(data);
+ }
+
+ void SendResponse(final DataOutputStream dos, final int contextId,
+ final DebuggerMessage.Message.Function function) throws IOException {
+ DebuggerMessage.Message.Builder builder = DebuggerMessage.Message
+ .newBuilder();
+ builder.setContextId(contextId);
+ builder.setFunction(function);
+ builder.setType(Type.Response);
+ builder.setExpectResponse(false);
+ SendMessage(dos, builder.build());
+ }
+
+ void Error(Exception e) {
+ sampleView.showError(e);
+ }
+}
diff --git a/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/SampleView.java b/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/SampleView.java
new file mode 100755
index 0000000..05fe51b
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.gldebugger/src/com/android/glesv2debugger/SampleView.java
@@ -0,0 +1,587 @@
+/*
+ ** 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.
+ */
+
+package com.android.glesv2debugger;
+
+import com.android.glesv2debugger.DebuggerMessage.Message.Function;
+import com.android.glesv2debugger.DebuggerMessage.Message.Prop;
+import com.android.glesv2debugger.DebuggerMessage.Message.Type;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Canvas;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.ScrollBar;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.ViewPart;
+
+import java.util.ArrayList;
+
+/**
+ * This sample class demonstrates how to plug-in a new workbench view. The view
+ * shows data obtained from the model. The sample creates a dummy model on the
+ * fly, but a real implementation would connect to the model available either in
+ * this or another plug-in (e.g. the workspace). The view is connected to the
+ * model using a content provider.
+ * <p>
+ * The view uses a label provider to define how model objects should be
+ * presented in the view. Each view can present the same model objects using
+ * different labels and icons, if needed. Alternatively, a single label provider
+ * can be shared between views in order to ensure that objects of the same type
+ * are presented in the same way everywhere.
+ * <p>
+ */
+
+public class SampleView extends ViewPart implements Runnable {
+
+ boolean running = false;
+ Thread thread;
+ MessageQueue messageQueue;
+ ViewContentProvider viewContentProvider;
+ /**
+ * The ID of the view as specified by the extension.
+ */
+ public static final String ID = "glesv2debuggerclient.views.SampleView";
+
+ TableViewer viewer;
+ org.eclipse.swt.widgets.Canvas canvas;
+ Action actionConnect; // connect / disconnect
+ Action doubleClickAction;
+ Action actionAutoScroll;
+ Action actionFilter;
+ Action actionCapture;
+
+ Point origin = new Point(0, 0); // for smooth scrolling canvas
+ String[] filters = null;
+
+ /*
+ * The content provider class is responsible for providing objects to the
+ * view. It can wrap existing objects in adapters or simply return objects
+ * as-is. These objects may be sensitive to the current input of the view,
+ * or ignore it and always show the same content (like Task List, for
+ * example).
+ */
+
+ class ViewContentProvider implements IStructuredContentProvider {
+ ArrayList<com.android.glesv2debugger.MessageData> entries = new ArrayList<com.android.glesv2debugger.MessageData>();
+
+ public void add(final ArrayList<MessageData> msgs) {
+ entries.addAll(msgs);
+ viewer.getTable().getDisplay().syncExec(new Runnable() {
+ @Override
+ public void run() {
+ viewer.add(msgs.toArray());
+ org.eclipse.swt.widgets.ScrollBar bar = viewer
+ .getTable().getVerticalBar();
+ if (null != bar && actionAutoScroll.isChecked()) {
+ bar.setSelection(bar.getMaximum());
+ viewer.getTable().setSelection(
+ entries.size() - 1);
+ }
+ }
+ });
+ }
+
+ @Override
+ public void inputChanged(Viewer v, Object oldInput, Object newInput) {
+ // showMessage("ViewContentProvider::inputChanged");
+ }
+
+ @Override
+ public void dispose() {
+ }
+
+ @Override
+ public Object[] getElements(Object parent) {
+ return entries.toArray();
+ }
+ }
+
+ class ViewLabelProvider extends LabelProvider implements
+ ITableLabelProvider {
+ @Override
+ public String getColumnText(Object obj, int index) {
+ com.android.glesv2debugger.MessageData msgData = (com.android.glesv2debugger.MessageData) obj;
+ if (null == msgData)
+ return getText(obj);
+ if (index >= msgData.columns.length)
+ return null;
+ return msgData.columns[index];
+ }
+
+ @Override
+ public Image getColumnImage(Object obj, int index) {
+ if (index > 0)
+ return null;
+ com.android.glesv2debugger.MessageData msgData = (com.android.glesv2debugger.MessageData) obj;
+ if (null == msgData)
+ return getImage(obj);
+ if (null == msgData.image)
+ return getImage(obj);
+ return msgData.image;
+ }
+
+ @Override
+ public Image getImage(Object obj) {
+ return PlatformUI.getWorkbench().getSharedImages()
+ .getImage(ISharedImages.IMG_OBJ_ELEMENT);
+ }
+ }
+
+ class NameSorter extends ViewerSorter {
+ }
+
+ class Filter extends ViewerFilter {
+ @Override
+ public boolean select(Viewer viewer, Object parentElement,
+ Object element) {
+ com.android.glesv2debugger.MessageData msgData = (com.android.glesv2debugger.MessageData) element;
+ if (null == filters)
+ return true;
+ for (int i = 0; i < filters.length; i++)
+ if (msgData.columns[0].contains(filters[i]))
+ return true;
+ return false;
+ }
+ }
+
+ /**
+ * The constructor.
+ */
+ public SampleView() {
+ messageQueue = new MessageQueue(this);
+ }
+
+ public void CreateTable(Composite parent) {
+ Table table = new Table(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI
+ | SWT.FULL_SELECTION);
+ TableLayout layout = new TableLayout();
+ table.setLayout(layout);
+ table.setLinesVisible(true);
+ table.setHeaderVisible(true);
+
+ String[] headings = {
+ "Name", "Elapsed (ms)", "Context", "Detail"
+ };
+ int[] weights = {
+ 35, 16, 16, 60
+ };
+ int[] widths = {
+ 120, 90, 90, 100
+ };
+ for (int i = 0; i < headings.length; i++) {
+ layout.addColumnData(new ColumnWeightData(weights[i], widths[i],
+ true));
+ TableColumn nameCol = new TableColumn(table, SWT.NONE, i);
+ nameCol.setText(headings[i]);
+ }
+
+ viewer = new TableViewer(table);
+ viewContentProvider = new ViewContentProvider();
+ viewer.setContentProvider(viewContentProvider);
+ viewer.setLabelProvider(new ViewLabelProvider());
+ // viewer.setSorter(new NameSorter());
+ viewer.setInput(getViewSite());
+ viewer.setFilters(new ViewerFilter[] {
+ new Filter()
+ });
+ }
+
+ /**
+ * This is a callback that will allow us to create the viewer and initialize
+ * it.
+ */
+ @Override
+ public void createPartControl(Composite parent) {
+ CreateTable(parent);
+
+ // Create the help context id for the viewer's control
+ PlatformUI.getWorkbench().getHelpSystem()
+ .setHelp(viewer.getControl(), "GLESv2DebuggerClient.viewer");
+ makeActions();
+ hookContextMenu();
+ hookDoubleClickAction();
+ hookSelectionChanged();
+ contributeToActionBars();
+
+ canvas = new Canvas(parent, SWT.NO_BACKGROUND | SWT.NO_REDRAW_RESIZE
+ | SWT.V_SCROLL | SWT.H_SCROLL);
+ final ScrollBar hBar = canvas.getHorizontalBar();
+ hBar.addListener(SWT.Selection, new Listener() {
+ @Override
+ public void handleEvent(Event e) {
+ if (null == canvas.getBackgroundImage())
+ return;
+ Image image = canvas.getBackgroundImage();
+ int hSelection = hBar.getSelection();
+ int destX = -hSelection - origin.x;
+ Rectangle rect = image.getBounds();
+ canvas.scroll(destX, 0, 0, 0, rect.width, rect.height, false);
+ origin.x = -hSelection;
+ }
+ });
+ final ScrollBar vBar = canvas.getVerticalBar();
+ vBar.addListener(SWT.Selection, new Listener() {
+ @Override
+ public void handleEvent(Event e) {
+ if (null == canvas.getBackgroundImage())
+ return;
+ Image image = canvas.getBackgroundImage();
+ int vSelection = vBar.getSelection();
+ int destY = -vSelection - origin.y;
+ Rectangle rect = image.getBounds();
+ canvas.scroll(0, destY, 0, 0, rect.width, rect.height, false);
+ origin.y = -vSelection;
+ }
+ });
+ canvas.addListener(SWT.Resize, new Listener() {
+ @Override
+ public void handleEvent(Event e) {
+ if (null == canvas.getBackgroundImage())
+ return;
+ Image image = canvas.getBackgroundImage();
+ Rectangle rect = image.getBounds();
+ Rectangle client = canvas.getClientArea();
+ hBar.setMaximum(rect.width);
+ vBar.setMaximum(rect.height);
+ hBar.setThumb(Math.min(rect.width, client.width));
+ vBar.setThumb(Math.min(rect.height, client.height));
+ int hPage = rect.width - client.width;
+ int vPage = rect.height - client.height;
+ int hSelection = hBar.getSelection();
+ int vSelection = vBar.getSelection();
+ if (hSelection >= hPage) {
+ if (hPage <= 0)
+ hSelection = 0;
+ origin.x = -hSelection;
+ }
+ if (vSelection >= vPage) {
+ if (vPage <= 0)
+ vSelection = 0;
+ origin.y = -vSelection;
+ }
+ canvas.redraw();
+ }
+ });
+ canvas.addListener(SWT.Paint, new Listener() {
+ @Override
+ public void handleEvent(Event e) {
+ if (null == canvas.getBackgroundImage())
+ return;
+ Image image = canvas.getBackgroundImage();
+ GC gc = e.gc;
+ gc.drawImage(image, origin.x, origin.y);
+ Rectangle rect = image.getBounds();
+ Rectangle client = canvas.getClientArea();
+ int marginWidth = client.width - rect.width;
+ if (marginWidth > 0) {
+ gc.fillRectangle(rect.width, 0, marginWidth, client.height);
+ }
+ int marginHeight = client.height - rect.height;
+ if (marginHeight > 0) {
+ gc.fillRectangle(0, rect.height, client.width, marginHeight);
+ }
+ }
+ });
+ }
+
+ private void hookContextMenu() {
+ MenuManager menuMgr = new MenuManager("#PopupMenu");
+ menuMgr.setRemoveAllWhenShown(true);
+ menuMgr.addMenuListener(new IMenuListener() {
+ @Override
+ public void menuAboutToShow(IMenuManager manager) {
+ SampleView.this.fillContextMenu(manager);
+ }
+ });
+ Menu menu = menuMgr.createContextMenu(viewer.getControl());
+ viewer.getControl().setMenu(menu);
+ getSite().registerContextMenu(menuMgr, viewer);
+ }
+
+ private void contributeToActionBars() {
+ IActionBars bars = getViewSite().getActionBars();
+ fillLocalPullDown(bars.getMenuManager());
+ fillLocalToolBar(bars.getToolBarManager());
+ }
+
+ private void fillLocalPullDown(IMenuManager manager) {
+ // manager.add(actionConnect);
+ // manager.add(new Separator());
+ // manager.add(actionDisconnect);
+ }
+
+ private void fillContextMenu(IMenuManager manager) {
+ // manager.add(actionConnect);
+ // manager.add(actionDisconnect);
+ // Other plug-ins can contribute there actions here
+ manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+ }
+
+ private void fillLocalToolBar(final IToolBarManager manager) {
+ manager.add(actionConnect);
+ final Shell shell = this.getViewSite().getShell();
+ actionAutoScroll = new Action("Auto Scroll", Action.AS_CHECK_BOX) {
+ @Override
+ public void run() {
+ }
+ };
+ actionAutoScroll.setChecked(true);
+ manager.add(actionAutoScroll);
+
+ actionFilter = new Action("*", Action.AS_DROP_DOWN_MENU) {
+ @Override
+ public void run() {
+ org.eclipse.jface.dialogs.InputDialog dialog = new org.eclipse.jface.dialogs.InputDialog(
+ shell, "Contains Filter",
+ "case sensitive substring or *",
+ actionFilter.getText(), null);
+ if (dialog.OK == dialog.open()) {
+ actionFilter.setText(dialog.getValue());
+ manager.update(true);
+ filters = dialog.getValue().split("\\|");
+ if (filters.length == 1 && filters[0].equals("*"))
+ filters = null;
+ viewer.refresh();
+ }
+
+ }
+ };
+ manager.add(actionFilter);
+
+ actionCapture = new Action("Capture", Action.AS_CHECK_BOX) {
+ @Override
+ public void run() {
+ DebuggerMessage.Message.Builder builder = DebuggerMessage.Message.newBuilder();
+ builder.setContextId(0); // FIXME: proper context id
+ builder.setType(Type.Response);
+ builder.setExpectResponse(false);
+ builder.setFunction(Function.SETPROP);
+ builder.setProp(Prop.Capture);
+ builder.setArg0(isChecked() ? 1 : 0);
+ messageQueue.AddCommand(builder.build());
+ manager.update(true);
+ }
+ };
+ actionCapture.setChecked(false);
+ manager.add(actionCapture);
+
+ manager.add(new Action("SYSTEM_TIME_THREAD", Action.AS_DROP_DOWN_MENU)
+ {
+ @Override
+ public void run()
+ {
+ final String[] timeModes = {
+ "SYSTEM_TIME_REALTIME", "SYSTEM_TIME_MONOTONIC", "SYSTEM_TIME_PROCESS",
+ "SYSTEM_TIME_THREAD"
+ };
+ int i = java.util.Arrays.asList(timeModes).indexOf(this.getText());
+ i = (i + 1) % timeModes.length;
+ DebuggerMessage.Message.Builder builder = DebuggerMessage.Message.newBuilder();
+ builder.setContextId(0); // FIXME: proper context id
+ builder.setType(Type.Response);
+ builder.setExpectResponse(false);
+ builder.setFunction(DebuggerMessage.Message.Function.SETPROP);
+ builder.setProp(Prop.TimeMode);
+ builder.setArg0(i);
+ messageQueue.AddCommand(builder.build());
+ this.setText(timeModes[i]);
+ manager.update(true);
+ }
+ });
+ }
+
+ private void ConnectDisconnect() {
+ if (!running) {
+ running = true;
+ messageQueue.Start();
+ thread = new Thread(this);
+ thread.start();
+ actionConnect.setText("Disconnect");
+ actionConnect.setToolTipText("Disconnect from debuggee");
+ } else {
+ running = false;
+ messageQueue.Stop();
+ actionConnect.setText("Connect");
+ actionConnect.setToolTipText("Connect to debuggee");
+ }
+ this.getSite().getShell().getDisplay().syncExec(new Runnable() {
+ @Override
+ public void run() {
+ getViewSite().getActionBars().getToolBarManager().update(true);
+ }
+ });
+ }
+
+ private void makeActions() {
+ actionConnect = new Action() {
+ @Override
+ public void run() {
+ ConnectDisconnect();
+ }
+ };
+ actionConnect.setText("Connect");
+ actionConnect.setToolTipText("Connect to debuggee");
+ // action1.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages()
+ // .getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK));
+
+ doubleClickAction = new Action() {
+ @Override
+ public void run() {
+ IStructuredSelection selection = (IStructuredSelection) viewer
+ .getSelection();
+ MessageData msgData = (MessageData) selection.getFirstElement();
+ if (null != msgData.shader)
+ showMessage(msgData.shader);
+ else if (null != msgData.data)
+ {
+ String str = "";
+ for (int i = 0; i < msgData.data.length; i++)
+ {
+ str += str.format("%.2f", msgData.data[i]);
+ if (i < msgData.data.length - 1)
+ str += ", ";
+ }
+ showMessage(str);
+ }
+ else
+ showMessage(msgData.columns[3].toString());
+ }
+ };
+ }
+
+ private void hookDoubleClickAction() {
+ viewer.addDoubleClickListener(new IDoubleClickListener() {
+ @Override
+ public void doubleClick(DoubleClickEvent event) {
+ doubleClickAction.run();
+ }
+ });
+ }
+
+ private void hookSelectionChanged() {
+ viewer.addSelectionChangedListener(new ISelectionChangedListener() {
+ @Override
+ public void selectionChanged(SelectionChangedEvent event) {
+ StructuredSelection selection = (StructuredSelection) event
+ .getSelection();
+ if (null == selection)
+ return;
+ if (1 != selection.size())
+ return;
+ MessageData msgData = (MessageData) selection.getFirstElement();
+ if (null == msgData)
+ return;
+ if (null != msgData.image)
+ canvas.setBackgroundImage(msgData.image);
+ }
+
+ });
+ }
+
+ private void showMessage(final String message) {
+ viewer.getControl().getDisplay().syncExec(new Runnable() {
+ @Override
+ public void run() {
+ MessageDialog.openInformation(viewer.getControl().getShell(),
+ "GL ES 2.0 Debugger Client", message);
+ }
+ });
+
+ }
+
+ public void showError(final Exception e) {
+ viewer.getControl().getDisplay().syncExec(new Runnable() {
+ @Override
+ public void run() {
+ MessageDialog.openError(viewer.getControl().getShell(),
+ "GL ES 2.0 Debugger Client", e.getMessage());
+ }
+ });
+
+ }
+
+ /**
+ * Passing the focus request to the viewer's control.
+ */
+ @Override
+ public void setFocus() {
+ viewer.getControl().setFocus();
+ }
+
+ @Override
+ public void run() {
+ boolean refresh = false;
+ ArrayList<MessageData> msgs = new ArrayList<MessageData>();
+ while (running) {
+ if (!messageQueue.IsRunning())
+ break;
+
+ DebuggerMessage.Message msg = messageQueue.RemoveMessage(0);
+ if (msgs.size() > 20) {
+ viewContentProvider.add(msgs);
+ msgs.clear();
+ }
+ if (null == msg) {
+ try {
+ Thread.sleep(1);
+ continue;
+ } catch (InterruptedException e) {
+ showError(e);
+ }
+ }
+ final MessageData msgData = new MessageData(this.getViewSite()
+ .getShell().getDisplay(), msg);
+ msgs.add(msgData);
+ }
+ if (running)
+ ConnectDisconnect(); // error occurred, disconnect
+ }
+}