diff options
Diffstat (limited to 'opengl/libs/GLES_trace/src/gltrace_context.cpp')
-rw-r--r-- | opengl/libs/GLES_trace/src/gltrace_context.cpp | 33 |
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; |