summaryrefslogtreecommitdiffstats
path: root/libs/hwui
diff options
context:
space:
mode:
authorRomain Guy <romainguy@google.com>2013-03-29 18:32:29 -0700
committerRomain Guy <romainguy@google.com>2013-04-04 10:50:48 -0700
commitdf1dc28ba0c63b195016ad0453fc58025ee82acb (patch)
tree11f126bd3dd87fcdf97c4cd27fea8a795479578b /libs/hwui
parent02b49b70ede0b9eb760ff334823aee1d9520ed85 (diff)
downloadframeworks_base-df1dc28ba0c63b195016ad0453fc58025ee82acb.zip
frameworks_base-df1dc28ba0c63b195016ad0453fc58025ee82acb.tar.gz
frameworks_base-df1dc28ba0c63b195016ad0453fc58025ee82acb.tar.bz2
Add internal API to query GL version number
Change-Id: Idc02efc237b8e97445a9bab05c291bf193c7f279
Diffstat (limited to 'libs/hwui')
-rw-r--r--libs/hwui/Extensions.cpp23
-rw-r--r--libs/hwui/Extensions.h7
2 files changed, 30 insertions, 0 deletions
diff --git a/libs/hwui/Extensions.cpp b/libs/hwui/Extensions.cpp
index edc90fb..51aec8d 100644
--- a/libs/hwui/Extensions.cpp
+++ b/libs/hwui/Extensions.cpp
@@ -64,10 +64,32 @@ Extensions::Extensions(): Singleton<Extensions>() {
mHas4BitStencil = hasExtension("GL_OES_stencil4");
mExtensions = strdup(buffer);
+
+ const char* version = (const char*) glGetString(GL_VERSION);
+ mVersion = strdup(version);
+
+ // Section 6.1.5 of the OpenGL ES specification indicates the GL version
+ // string strictly follows this format:
+ //
+ // OpenGL<space>ES<space><version number><space><vendor-specific information>
+ //
+ // In addition section 6.1.5 describes the version number thusly:
+ //
+ // "The version number is either of the form major number.minor number or
+ // major number.minor number.release number, where the numbers all have one
+ // or more digits. The release number and vendor specific information are
+ // optional."
+
+ if (sscanf(version, "OpenGL ES %d.%d", &mVersionMajor, &mVersionMinor) !=2) {
+ // If we cannot parse the version number, assume OpenGL ES 2.0
+ mVersionMajor = 2;
+ mVersionMinor = 0;
+ }
}
Extensions::~Extensions() {
free(mExtensions);
+ free(mVersion);
}
///////////////////////////////////////////////////////////////////////////////
@@ -80,6 +102,7 @@ bool Extensions::hasExtension(const char* extension) const {
}
void Extensions::dump() const {
+ ALOGD("%s", mVersion);
ALOGD("Supported extensions:\n%s", mExtensions);
}
diff --git a/libs/hwui/Extensions.h b/libs/hwui/Extensions.h
index a069a6a..54a3987 100644
--- a/libs/hwui/Extensions.h
+++ b/libs/hwui/Extensions.h
@@ -45,6 +45,9 @@ public:
inline bool has1BitStencil() const { return mHas1BitStencil; }
inline bool has4BitStencil() const { return mHas4BitStencil; }
+ inline int getMajorGlVersion() const { return mVersionMajor; }
+ inline int getMinorGlVersion() const { return mVersionMinor; }
+
bool hasExtension(const char* extension) const;
void dump() const;
@@ -55,6 +58,7 @@ private:
SortedVector<String8> mExtensionList;
char* mExtensions;
+ char* mVersion;
bool mHasNPot;
bool mHasFramebufferFetch;
@@ -64,6 +68,9 @@ private:
bool mHasTiledRendering;
bool mHas1BitStencil;
bool mHas4BitStencil;
+
+ int mVersionMajor;
+ int mVersionMinor;
}; // class Extensions
}; // namespace uirenderer