summaryrefslogtreecommitdiffstats
path: root/libs
diff options
context:
space:
mode:
authorChris Craik <ccraik@google.com>2014-01-29 13:00:33 -0800
committerChris Craik <ccraik@google.com>2014-03-19 20:09:04 +0000
commit5d39a77992ba6573fbc0cd4d85e0390bb5feb637 (patch)
tree88219a1ba621772b5f643c202d48e994040cef97 /libs
parentf260ed09263d60ff941225e31e22d344afd90c0f (diff)
downloadframeworks_base-5d39a77992ba6573fbc0cd4d85e0390bb5feb637.zip
frameworks_base-5d39a77992ba6573fbc0cd4d85e0390bb5feb637.tar.gz
frameworks_base-5d39a77992ba6573fbc0cd4d85e0390bb5feb637.tar.bz2
Fix projection offset caching - DO NOT MERGE
bug:13214038 Because the caching of projection matrix didn't account for changes in the offset flag, the flag could be ignored. Now we use both to verify that the cached matrix can be used. Change-Id: I193b94eaf0b98f046a6484f0866c3d25048653fd (cherry picked from commit d04a6b15f74035fd2068f34225825b55e94521f4)
Diffstat (limited to 'libs')
-rw-r--r--libs/hwui/Program.cpp3
-rw-r--r--libs/hwui/Program.h1
2 files changed, 3 insertions, 1 deletions
diff --git a/libs/hwui/Program.cpp b/libs/hwui/Program.cpp
index 7814a01..58f5325 100644
--- a/libs/hwui/Program.cpp
+++ b/libs/hwui/Program.cpp
@@ -163,7 +163,7 @@ GLuint Program::buildShader(const char* source, GLenum type) {
void Program::set(const mat4& projectionMatrix, const mat4& modelViewMatrix,
const mat4& transformMatrix, bool offset) {
- if (projectionMatrix != mProjection) {
+ if (projectionMatrix != mProjection || offset != mOffset) {
if (CC_LIKELY(!offset)) {
glUniformMatrix4fv(projection, 1, GL_FALSE, &projectionMatrix.data[0]);
} else {
@@ -177,6 +177,7 @@ void Program::set(const mat4& projectionMatrix, const mat4& modelViewMatrix,
glUniformMatrix4fv(projection, 1, GL_FALSE, &p.data[0]);
}
mProjection = projectionMatrix;
+ mOffset = offset;
}
mat4 t(transformMatrix);
diff --git a/libs/hwui/Program.h b/libs/hwui/Program.h
index 4f94afc..f6ac8ec 100644
--- a/libs/hwui/Program.h
+++ b/libs/hwui/Program.h
@@ -431,6 +431,7 @@ private:
bool mHasSampler;
mat4 mProjection;
+ bool mOffset;
}; // class Program
}; // namespace uirenderer