diff options
author | Teng-Hui Zhu <ztenghui@google.com> | 2011-07-08 14:32:32 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-07-08 14:32:32 -0700 |
commit | 77d90f3f7ad7c71249eb8ac6ff1b8956b63270d5 (patch) | |
tree | e5ce889fad4bcdbd318fc84450cf35fe818781a4 /Source | |
parent | 9adf5177551dad45641f324b22ee019b08d24a02 (diff) | |
parent | 45f7a371fd57f35bac0b3cdd237d9a3bd2e80958 (diff) | |
download | external_webkit-77d90f3f7ad7c71249eb8ac6ff1b8956b63270d5.zip external_webkit-77d90f3f7ad7c71249eb8ac6ff1b8956b63270d5.tar.gz external_webkit-77d90f3f7ad7c71249eb8ac6ff1b8956b63270d5.tar.bz2 |
Merge "Add the matrix handle to the shaders."
Diffstat (limited to 'Source')
-rw-r--r-- | Source/WebCore/platform/graphics/android/ShaderProgram.cpp | 10 | ||||
-rw-r--r-- | Source/WebCore/platform/graphics/android/ShaderProgram.h | 5 |
2 files changed, 10 insertions, 5 deletions
diff --git a/Source/WebCore/platform/graphics/android/ShaderProgram.cpp b/Source/WebCore/platform/graphics/android/ShaderProgram.cpp index 655af0e..f9f4c4c 100644 --- a/Source/WebCore/platform/graphics/android/ShaderProgram.cpp +++ b/Source/WebCore/platform/graphics/android/ShaderProgram.cpp @@ -267,7 +267,7 @@ void ShaderProgram::setViewport(SkRect& viewport) m_viewport = viewport; } -void ShaderProgram::setProjectionMatrix(SkRect& geometry) +void ShaderProgram::setProjectionMatrix(SkRect& geometry, GLint projectionMatrixHandle) { TransformationMatrix translate; translate.translate3d(geometry.fLeft, geometry.fTop, 0.0); @@ -278,20 +278,21 @@ void ShaderProgram::setProjectionMatrix(SkRect& geometry) GLfloat projectionMatrix[16]; GLUtils::toGLMatrix(projectionMatrix, total); - glUniformMatrix4fv(m_hProjectionMatrix, 1, GL_FALSE, projectionMatrix); + glUniformMatrix4fv(projectionMatrixHandle, 1, GL_FALSE, projectionMatrix); } void ShaderProgram::drawQuadInternal(SkRect& geometry, GLint textureId, float opacity, GLint program, + GLint projectionMatrixHandle, GLint texSampler, GLenum textureTarget, GLint position, GLint alpha) { glUseProgram(program); - setProjectionMatrix(geometry); + setProjectionMatrix(geometry, projectionMatrixHandle); glActiveTexture(GL_TEXTURE0); glUniform1i(texSampler, 0); @@ -315,14 +316,17 @@ void ShaderProgram::drawQuad(SkRect& geometry, int textureId, float opacity, { if (textureTarget == GL_TEXTURE_2D) { drawQuadInternal(geometry, textureId, opacity, m_program, + m_hProjectionMatrix, m_hTexSampler, GL_TEXTURE_2D, m_hPosition, alpha()); } else if (textureTarget == GL_TEXTURE_EXTERNAL_OES) { drawQuadInternal(geometry, textureId, opacity, m_surfTexOESProgram, + m_hSTOESProjectionMatrix, m_hSTOESTexSampler, GL_TEXTURE_EXTERNAL_OES, m_hSTOESPosition, m_hSTOESAlpha); } else if (!textureTarget) { drawQuadInternal(geometry, textureId, opacity, m_surfTex2DProgram, + m_hST2DProjectionMatrix, m_hST2DTexSampler, GL_TEXTURE_2D, m_hST2DPosition, m_hST2DAlpha); } diff --git a/Source/WebCore/platform/graphics/android/ShaderProgram.h b/Source/WebCore/platform/graphics/android/ShaderProgram.h index 2577fb0..c64a9b9 100644 --- a/Source/WebCore/platform/graphics/android/ShaderProgram.h +++ b/Source/WebCore/platform/graphics/android/ShaderProgram.h @@ -81,12 +81,13 @@ class ShaderProgram { private: GLuint loadShader(GLenum shaderType, const char* pSource); GLuint createProgram(const char* vertexSource, const char* fragmentSource); - void setProjectionMatrix(SkRect& geometry); + void setProjectionMatrix(SkRect& geometry, GLint projectionMatrixHandle); void setBlendingState(bool enableBlending); void drawQuadInternal(SkRect& geometry, GLint textureId, float opacity, - GLint program, GLint texSampler, GLenum textureTarget, + GLint program, GLint projectionMatrixHandle, + GLint texSampler, GLenum textureTarget, GLint position, GLint alpha); void drawLayerQuadInternal(const GLfloat* projectionMatrix, int textureId, |