summaryrefslogtreecommitdiffstats
path: root/opengl/libs/GLES_trace/src/gltrace_context.cpp
diff options
context:
space:
mode:
authorBen Clayton <bclayton@google.com>2014-08-18 17:25:34 +0100
committerBen Clayton <bclayton@google.com>2014-08-20 15:21:44 +0000
commit16d7b6a8bb6f22ddd9252c6c0aefa84a53b65d53 (patch)
treee9cf15511cee885b5ace5adc8ad435e38c152599 /opengl/libs/GLES_trace/src/gltrace_context.cpp
parent62205596b9848d9d7d9de90aa0f5682d6ce17ea3 (diff)
downloadframeworks_native-16d7b6a8bb6f22ddd9252c6c0aefa84a53b65d53.zip
frameworks_native-16d7b6a8bb6f22ddd9252c6c0aefa84a53b65d53.tar.gz
frameworks_native-16d7b6a8bb6f22ddd9252c6c0aefa84a53b65d53.tar.bz2
Don't try to capture the pointer when using PBOs for texture APIs
If a PBO is bound, then the pointer argument is a relative offset from the start of the PBO, not an absolute address. Fixes b/17063439 Change-Id: I39629ce6c9bb3cb6bac5c9b0311287628306ddd4 (cherry picked from commit 0ad707f2f3d714af7d983d68330ed51dace815f5)
Diffstat (limited to 'opengl/libs/GLES_trace/src/gltrace_context.cpp')
-rw-r--r--opengl/libs/GLES_trace/src/gltrace_context.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/opengl/libs/GLES_trace/src/gltrace_context.cpp b/opengl/libs/GLES_trace/src/gltrace_context.cpp
index 0323e8f..d1b3586 100644
--- a/opengl/libs/GLES_trace/src/gltrace_context.cpp
+++ b/opengl/libs/GLES_trace/src/gltrace_context.cpp
@@ -133,6 +133,9 @@ GLTraceContext::GLTraceContext(int id, int version, GLTraceState *state,
BufferedOutputStream *stream) :
mId(id),
mVersion(version),
+ mVersionMajor(0),
+ mVersionMinor(0),
+ mVersionParsed(false),
mState(state),
mBufferedOutputStream(stream),
mElementArrayBuffers(DefaultKeyedVector<GLuint, ElementArrayBuffer*>(NULL))
@@ -149,10 +152,40 @@ int GLTraceContext::getVersion() {
return mVersion;
}
+int GLTraceContext::getVersionMajor() {
+ if (!mVersionParsed) {
+ parseGlesVersion();
+ mVersionParsed = true;
+ }
+ return mVersionMajor;
+}
+
+int GLTraceContext::getVersionMinor() {
+ if (!mVersionParsed) {
+ parseGlesVersion();
+ mVersionParsed = true;
+ }
+ return mVersionMinor;
+}
+
GLTraceState *GLTraceContext::getGlobalTraceState() {
return mState;
}
+void GLTraceContext::parseGlesVersion() {
+ const char* str = (const char*)hooks->gl.glGetString(GL_VERSION);
+ int major, minor;
+ if (sscanf(str, "OpenGL ES-CM %d.%d", &major, &minor) != 2) {
+ if (sscanf(str, "OpenGL ES %d.%d", &major, &minor) != 2) {
+ ALOGW("Unable to parse GL_VERSION string: \"%s\"", str);
+ major = 1;
+ minor = 0;
+ }
+ }
+ mVersionMajor = major;
+ mVersionMinor = minor;
+}
+
void GLTraceContext::resizeFBMemory(unsigned minSize) {
if (fbcontentsSize >= minSize) {
return;