summaryrefslogtreecommitdiffstats
path: root/libs
diff options
context:
space:
mode:
authorRomain Guy <romainguy@google.com>2011-07-07 21:28:41 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-07-07 21:28:41 -0700
commite92096fa6ad01eb022386d2ca536d99bc068e817 (patch)
treeba91f71972ba7d5e9bfc9856b796e4f84b650048 /libs
parent7024e0b9020e4ec2d544d687c98c30bd21c2526c (diff)
parentec19b4a764d512091a780fc93ced567dfbf80914 (diff)
downloadframeworks_base-e92096fa6ad01eb022386d2ca536d99bc068e817.zip
frameworks_base-e92096fa6ad01eb022386d2ca536d99bc068e817.tar.gz
frameworks_base-e92096fa6ad01eb022386d2ca536d99bc068e817.tar.bz2
Merge "Use NEAREST filtering mode for TextureView.getBitmap()."
Diffstat (limited to 'libs')
-rw-r--r--libs/hwui/LayerRenderer.cpp4
-rw-r--r--libs/hwui/OpenGLRenderer.cpp8
2 files changed, 8 insertions, 4 deletions
diff --git a/libs/hwui/LayerRenderer.cpp b/libs/hwui/LayerRenderer.cpp
index 44f2a40..1fa343b 100644
--- a/libs/hwui/LayerRenderer.cpp
+++ b/libs/hwui/LayerRenderer.cpp
@@ -368,8 +368,8 @@ bool LayerRenderer::copyLayer(Layer* layer, SkBitmap* bitmap) {
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texture);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index cb5a82b..06e3b29 100644
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -645,7 +645,9 @@ void OpenGLRenderer::drawTextureLayer(Layer* layer, const Rect& rect) {
} else {
setupDrawExternalTexture(layer->getTexture());
}
- if (mSnapshot->transform->isPureTranslate()) {
+ if (mSnapshot->transform->isPureTranslate() &&
+ layer->getWidth() == (uint32_t) rect.getWidth() &&
+ layer->getHeight() == (uint32_t) rect.getHeight()) {
const float x = (int) floorf(rect.left + mSnapshot->transform->getTranslateX() + 0.5f);
const float y = (int) floorf(rect.top + mSnapshot->transform->getTranslateY() + 0.5f);
@@ -673,7 +675,9 @@ void OpenGLRenderer::composeLayerRect(Layer* layer, const Rect& rect, bool swap)
float y = rect.top;
bool simpleTransform = mSnapshot->transform->isPureTranslate();
- if (simpleTransform) {
+ if (simpleTransform &&
+ layer->getWidth() == (uint32_t) rect.getWidth() &&
+ layer->getHeight() == (uint32_t) rect.getHeight()) {
// When we're swapping, the layer is already in screen coordinates
if (!swap) {
x = (int) floorf(rect.left + mSnapshot->transform->getTranslateX() + 0.5f);