summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorTeng-Hui Zhu <ztenghui@google.com>2012-01-23 14:31:50 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-01-23 14:31:50 -0800
commit53f436aa7cd90d8c691b1fbfd92d6a6a4b01db77 (patch)
tree1dd2e44fa5a27ae81cbf9051cf88839a9b27dd21 /Source
parentd55290bbd55407134adcb454b6b5c77efaeb7432 (diff)
parenta88a02318873ea1ed00398091f92d6ebe1dc1139 (diff)
downloadexternal_webkit-53f436aa7cd90d8c691b1fbfd92d6a6a4b01db77.zip
external_webkit-53f436aa7cd90d8c691b1fbfd92d6a6a4b01db77.tar.gz
external_webkit-53f436aa7cd90d8c691b1fbfd92d6a6a4b01db77.tar.bz2
Merge "Delay the shader init till the draw time."
Diffstat (limited to 'Source')
-rw-r--r--Source/WebCore/platform/graphics/android/ShaderProgram.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/Source/WebCore/platform/graphics/android/ShaderProgram.cpp b/Source/WebCore/platform/graphics/android/ShaderProgram.cpp
index a706276..a4af713 100644
--- a/Source/WebCore/platform/graphics/android/ShaderProgram.cpp
+++ b/Source/WebCore/platform/graphics/android/ShaderProgram.cpp
@@ -219,11 +219,15 @@ ShaderProgram::ShaderProgram()
, m_currentScale(1.0f)
, m_needsInit(true)
{
- init();
}
void ShaderProgram::init()
{
+ // To detect whether or not resources for ShaderProgram allocated
+ // successfully, we clean up pre-existing errors here and will check for
+ // new errors at the end of this function.
+ GLUtils::checkGlError("before init");
+
GLint tex2DProgram = createProgram(gVertexShader, gFragmentShader);
GLint pureColorProgram = createProgram(gPureColorVertexShader, gPureColorFragmentShader);
GLint tex2DInvProgram = createProgram(gVertexShader, gFragmentShaderInverted);
@@ -242,7 +246,6 @@ void ShaderProgram::init()
m_needsInit = true;
return;
}
- m_needsInit = false;
GLint pureColorPosition = glGetAttribLocation(pureColorProgram, "vPosition");
GLint pureColorProjMtx = glGetUniformLocation(pureColorProgram, "projectionMatrix");
@@ -309,7 +312,12 @@ void ShaderProgram::init()
matrix.translate3d(-0.5, -0.5, 0);
GLUtils::toGLMatrix(m_transferProjMtx, matrix);
- GLUtils::checkGlError("init");
+ if (GLUtils::checkGlError("init"))
+ m_needsInit = true;
+ else
+ m_needsInit = false;
+
+ return;
}
void ShaderProgram::resetBlending()