diff options
author | David Li <davidxli@google.com> | 2011-03-01 16:08:10 -0800 |
---|---|---|
committer | David Li <davidxli@google.com> | 2011-03-03 18:28:43 -0800 |
commit | 28ca2abb1ab92b2cc3a5c9119ec2f697ec3401b2 (patch) | |
tree | f6bcb82ff2a68a5bd30218326def0f95fb6734f2 /opengl/libs/GLES2_dbg/src/shader.cpp | |
parent | e5f823ccf1cce4cab5699f1a07c1ee2290a69169 (diff) | |
download | frameworks_base-28ca2abb1ab92b2cc3a5c9119ec2f697ec3401b2.zip frameworks_base-28ca2abb1ab92b2cc3a5c9119ec2f697ec3401b2.tar.gz frameworks_base-28ca2abb1ab92b2cc3a5c9119ec2f697ec3401b2.tar.bz2 |
Initial commit of GLESv2 debugger server
Use debug.egl.debug_proc property to match process cmdline.
Binds to TCP:5039 and waits for client connection.
Sends function call parameters, textures and shaders using Protobuf.
Java Eclipse client plug-in is next.
Change-Id: I183b755263663f87e86dde1ad12f527d0445fd57
Signed-off-by: David Li <davidxli@google.com>
Diffstat (limited to 'opengl/libs/GLES2_dbg/src/shader.cpp')
-rw-r--r-- | opengl/libs/GLES2_dbg/src/shader.cpp | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/opengl/libs/GLES2_dbg/src/shader.cpp b/opengl/libs/GLES2_dbg/src/shader.cpp new file mode 100644 index 0000000..c2b2557 --- /dev/null +++ b/opengl/libs/GLES2_dbg/src/shader.cpp @@ -0,0 +1,66 @@ +/* + ** Copyright 2011, The Android Open Source Project + ** + ** Licensed under the Apache License, Version 2.0 (the "License"); + ** you may not use this file except in compliance with the License. + ** You may obtain a copy of the License at + ** + ** http://www.apache.org/licenses/LICENSE-2.0 + ** + ** Unless required by applicable law or agreed to in writing, software + ** distributed under the License is distributed on an "AS IS" BASIS, + ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ** See the License for the specific language governing permissions and + ** limitations under the License. + */ + +#include "header.h" + +void API_ENTRY(glShaderSource)(GLuint shader, GLsizei count, const GLchar** string, const GLint* length) +{ + gl_hooks_t::gl_t const * const _c = &getGLTraceThreadSpecific()->gl; + GLESv2Debugger::Message msg, cmd; + msg.set_context_id(0); + msg.set_has_next_message(true); + const bool expectResponse = false; + msg.set_expect_response(expectResponse); + msg.set_function(GLESv2Debugger::Message_Function_glShaderSource); + msg.set_arg0(shader); + msg.set_arg1(count); + msg.set_arg2((int)string); + msg.set_arg3((int)length); + + std::string data; + for (unsigned i = 0; i < count; i++) + if (!length || length[i] < 0) + data.append(string[i]); + else + data.append(string[i], length[i]); + msg.set_data(data); + + Send(msg, cmd); + if (!expectResponse) + cmd.set_function(GLESv2Debugger::Message_Function_CONTINUE); + while (true) { + msg.Clear(); + clock_t c0 = clock(); + switch (cmd.function()) { + case GLESv2Debugger::Message_Function_CONTINUE: + _c->glShaderSource(shader, count, string, length); + msg.set_time((float(clock()) - c0) / CLOCKS_PER_SEC); + msg.set_context_id(0); + msg.set_function(GLESv2Debugger::Message_Function_glShaderSource); + msg.set_has_next_message(false); + msg.set_expect_response(expectResponse); + Send(msg, cmd); + if (!expectResponse) + cmd.set_function(GLESv2Debugger::Message_Function_SKIP); + break; + case GLESv2Debugger::Message_Function_SKIP: + return; + default: + ASSERT(0); //GenerateCall(msg, cmd); + break; + } + } +} |