diff options
author | Teng-Hui Zhu <ztenghui@google.com> | 2012-01-23 14:31:50 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-01-23 14:31:50 -0800 |
commit | 53f436aa7cd90d8c691b1fbfd92d6a6a4b01db77 (patch) | |
tree | 1dd2e44fa5a27ae81cbf9051cf88839a9b27dd21 /Source | |
parent | d55290bbd55407134adcb454b6b5c77efaeb7432 (diff) | |
parent | a88a02318873ea1ed00398091f92d6ebe1dc1139 (diff) | |
download | external_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.cpp | 14 |
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() |