summaryrefslogtreecommitdiff
path: root/services/surfaceflinger/BufferLayer.cpp
diff options
context:
space:
mode:
author Vishnu Nair <vishnun@google.com> 2020-10-29 14:45:03 -0700
committer Vishnu Nair <vishnun@google.com> 2020-10-29 14:45:03 -0700
commite7f79c51ec0d00bc79d9e4f017a56cdb627667bb (patch)
tree6e56b2749c59007401856ca41dd9299d9073e471 /services/surfaceflinger/BufferLayer.cpp
parentc88cf4a5a81f89894696623b0560954d162e5217 (diff)
Check if the buffer is actually being scaled instead of only checking scaling mode
BufferStateLayers have a default scale to window scaling mode which means the layers would be set use texture filtering regardless of the buffer size. This was breaking some pixel by pixel screenshot comparison tests. Instead check if the buffer size, after applying any buffer transforms, matches the layer size. Test: android.view.inputmethod.cts.FocusHandlingTest#testNonFocusablePopupWindowDoesNotAffectImeVisibility Change-Id: I90b05187a2e22834a99d3690095293fa37118734
Diffstat (limited to 'services/surfaceflinger/BufferLayer.cpp')
-rw-r--r--services/surfaceflinger/BufferLayer.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/services/surfaceflinger/BufferLayer.cpp b/services/surfaceflinger/BufferLayer.cpp
index 9c3fdbb405..d302f987b1 100644
--- a/services/surfaceflinger/BufferLayer.cpp
+++ b/services/surfaceflinger/BufferLayer.cpp
@@ -204,8 +204,8 @@ std::optional<compositionengine::LayerFE::LayerSettings> BufferLayer::prepareCli
layer.frameNumber = mCurrentFrameNumber;
layer.bufferId = mBufferInfo.mBuffer ? mBufferInfo.mBuffer->getId() : 0;
- // TODO: we could be more subtle with isFixedSize()
- const bool useFiltering = targetSettings.needsFiltering || mNeedsFiltering || isFixedSize();
+ const bool useFiltering =
+ targetSettings.needsFiltering || mNeedsFiltering || bufferNeedsFiltering();
// Query the texture matrix given our current filtering mode.
float textureMatrix[16];
@@ -822,6 +822,10 @@ void BufferLayer::setTransformHint(ui::Transform::RotationFlags displayTransform
}
}
+bool BufferLayer::bufferNeedsFiltering() const {
+ return isFixedSize();
+}
+
} // namespace android
#if defined(__gl_h_)