diff options
| author | 2019-01-11 18:13:25 +0000 | |
|---|---|---|
| committer | 2019-01-11 18:13:25 +0000 | |
| commit | 90da84b8ea53aa8a2a69a031c5eef945d599c12c (patch) | |
| tree | 8ed32c1e650884547c6b4785d3bc66f007d3c37f /services/surfaceflinger/BufferLayer.cpp | |
| parent | 0693e71608ba9477c9187f3d43feb5e8f4756ae3 (diff) | |
| parent | c2020cacc744eea150948b68498e664fc211d6c8 (diff) | |
Merge "[SurfaceFlinger] Turn on Filtering when scaling."
Diffstat (limited to 'services/surfaceflinger/BufferLayer.cpp')
| -rw-r--r-- | services/surfaceflinger/BufferLayer.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/services/surfaceflinger/BufferLayer.cpp b/services/surfaceflinger/BufferLayer.cpp index 4e4d7dd371..4eafeac293 100644 --- a/services/surfaceflinger/BufferLayer.cpp +++ b/services/surfaceflinger/BufferLayer.cpp @@ -176,7 +176,7 @@ void BufferLayer::onDraw(const RenderArea& renderArea, const Region& clip, if (!blackOutLayer) { // TODO: we could be more subtle with isFixedSize() - const bool useFiltering = needsFiltering(renderArea) || isFixedSize(); + const bool useFiltering = needsFiltering() || renderArea.needsFiltering() || isFixedSize(); // Query the texture matrix given our current filtering mode. float textureMatrix[16]; @@ -597,8 +597,11 @@ bool BufferLayer::getOpacityForFormat(uint32_t format) { return true; } -bool BufferLayer::needsFiltering(const RenderArea& renderArea) const { - return mNeedsFiltering || renderArea.needsFiltering(); +bool BufferLayer::needsFiltering() const { + const auto displayFrame = getBE().compositionInfo.hwc.displayFrame; + const auto sourceCrop = getBE().compositionInfo.hwc.sourceCrop; + return mNeedsFiltering || sourceCrop.getHeight() != displayFrame.getHeight() || + sourceCrop.getWidth() != displayFrame.getWidth(); } void BufferLayer::drawWithOpenGL(const RenderArea& renderArea, bool useIdentityTransform) const { @@ -623,7 +626,6 @@ void BufferLayer::drawWithOpenGL(const RenderArea& renderArea, bool useIdentityT */ const Rect bounds{computeBounds()}; // Rounds from FloatRect - ui::Transform t = getTransform(); Rect win = bounds; const int bufferWidth = getBufferSize(s).getWidth(); const int bufferHeight = getBufferSize(s).getHeight(); |