diff options
author | 2013-08-23 20:55:46 +0000 | |
---|---|---|
committer | 2013-08-23 20:55:46 +0000 | |
commit | 726e621000582e4de7c9ce0f7e9950c3af4e5d9b (patch) | |
tree | 2d801b91afd37d6c6c5e4b06cb8462cd6035e74c /src/gpu | |
parent | cbe63fe1a8fc98a657b637b580e04518019ce021 (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.cpp | 16 | ||||
-rw-r--r-- | src/gpu/gl/GrGLInterface.cpp | 3 | ||||
-rw-r--r-- | src/gpu/gl/android/GrGLCreateNativeInterface_android.cpp | 10 |
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; |