aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu
diff options
context:
space:
mode:
authorGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-08-23 20:55:46 +0000
committerGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-08-23 20:55:46 +0000
commit726e621000582e4de7c9ce0f7e9950c3af4e5d9b (patch)
tree2d801b91afd37d6c6c5e4b06cb8462cd6035e74c /src/gpu
parentcbe63fe1a8fc98a657b637b580e04518019ce021 (diff)
Use indexed extensions on ES3.
R=jvanverth@google.com Author: bsalomon@google.com Review URL: https://chromiumcodereview.appspot.com/23359002 git-svn-id: http://skia.googlecode.com/svn/trunk@10899 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/gpu')
-rw-r--r--src/gpu/gl/GrGLExtensions.cpp16
-rw-r--r--src/gpu/gl/GrGLInterface.cpp3
-rw-r--r--src/gpu/gl/android/GrGLCreateNativeInterface_android.cpp10
3 files changed, 19 insertions, 10 deletions
diff --git a/src/gpu/gl/GrGLExtensions.cpp b/src/gpu/gl/GrGLExtensions.cpp
index e886aff958..5ebab14b65 100644
--- a/src/gpu/gl/GrGLExtensions.cpp
+++ b/src/gpu/gl/GrGLExtensions.cpp
@@ -26,15 +26,15 @@ bool GrGLExtensions::init(GrGLBinding binding,
if (NULL == getString) {
return false;
}
- bool indexed = false;
- if (kDesktop_GrGLBinding == binding) {
- const GrGLubyte* verString = getString(GR_GL_VERSION);
- if (NULL == verString) {
- return false;
- }
- GrGLVersion version = GrGLGetVersionFromString((const char*) verString);
- indexed = version >= GR_GL_VER(3, 0);
+
+ // glGetStringi and indexed extensions were added in version 3.0 of desktop GL and ES.
+ const GrGLubyte* verString = getString(GR_GL_VERSION);
+ if (NULL == verString) {
+ return false;
}
+ GrGLVersion version = GrGLGetVersionFromString((const char*) verString);
+ bool indexed = version >= GR_GL_VER(3, 0);
+
if (indexed) {
if (NULL == getStringi || NULL == getIntegerv) {
return false;
diff --git a/src/gpu/gl/GrGLInterface.cpp b/src/gpu/gl/GrGLInterface.cpp
index d69f5c7520..a5ddd9f83c 100644
--- a/src/gpu/gl/GrGLInterface.cpp
+++ b/src/gpu/gl/GrGLInterface.cpp
@@ -363,7 +363,8 @@ bool GrGLInterface::validate(GrGLBinding binding) const {
}
}
- if (kDesktop_GrGLBinding == binding && glVer >= GR_GL_VER(3, 0)) {
+ // glGetStringi was added in version 3.0 of both desktop and ES.
+ if (glVer >= GR_GL_VER(3, 0)) {
if (NULL == fGetStringi) {
return false;
}
diff --git a/src/gpu/gl/android/GrGLCreateNativeInterface_android.cpp b/src/gpu/gl/android/GrGLCreateNativeInterface_android.cpp
index 5ad867c4d7..05c93a32a8 100644
--- a/src/gpu/gl/android/GrGLCreateNativeInterface_android.cpp
+++ b/src/gpu/gl/android/GrGLCreateNativeInterface_android.cpp
@@ -21,7 +21,14 @@ const GrGLInterface* GrGLCreateNativeInterface() {
static SkAutoTUnref<GrGLInterface> glInterface;
if (!glInterface.get()) {
GrGLExtensions extensions;
- if (!extensions.init(kES_GrGLBinding, glGetString, NULL, glGetIntegerv)) {
+ GrGLGetStringiProc getStringi;
+#if GL_ES_VERSION_3_0
+ getStringi = glGetStringi;
+#else
+ getStringi = (GrGLGetStringiProc) eglGetProcAddress("glGetStringi");
+#endif
+
+ if (!extensions.init(kES_GrGLBinding, glGetString, getStringi, glGetIntegerv)) {
return NULL;
}
const char* verStr = reinterpret_cast<const char*>(glGetString(GR_GL_VERSION));
@@ -80,6 +87,7 @@ const GrGLInterface* GrGLCreateNativeInterface() {
interface->fGetShaderInfoLog = glGetShaderInfoLog;
interface->fGetShaderiv = glGetShaderiv;
interface->fGetString = glGetString;
+ interface->fGetStringi = getStringi; // located above
interface->fGetUniformLocation = glGetUniformLocation;
interface->fLineWidth = glLineWidth;
interface->fLinkProgram = glLinkProgram;