diff options
author | bsears <bsears@google.com> | 2021-08-06 15:18:26 +0000 |
---|---|---|
committer | bsears <bsears@google.com> | 2021-08-06 15:18:26 +0000 |
commit | 9df09ccff953f45f1990796e0e558e5ec4e3ccb9 (patch) | |
tree | 82cb93be984820194fc5a436c550a937cdf69f58 /libs/hwui/DeferredLayerUpdater.cpp | |
parent | ef54c038e1d650c000ee97fd5652eee98e9b8c32 (diff) |
Revert "Added crop rect to LayerDrawable to not crop TextureView..."
Revert "Adds out parameters for crop rectangle and transform"
Revert "Add test to crop TextureView and verify if outer edge ha..."
Revert submission 15339442-1texelcrop
Reason for revert: Bisection identified these CLs as the likely cause of Droidfood blocking bugs b/195620803 and b/195637414
Bug: 195637414
Bug: 195620803
Reverted Changes:
If1f448a94:Added crop rect to LayerDrawable to not crop Textu...
Iefde6bdf7:Add test to crop TextureView and verify if outer e...
Icf0ee20e8:Adds out parameters for crop rectangle and transfo...
Change-Id: I3448ebe193f25de79d186ae705911d99da2cef2b
Diffstat (limited to 'libs/hwui/DeferredLayerUpdater.cpp')
-rw-r--r-- | libs/hwui/DeferredLayerUpdater.cpp | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/libs/hwui/DeferredLayerUpdater.cpp b/libs/hwui/DeferredLayerUpdater.cpp index 6cb53206f60b..8d112d1c64bf 100644 --- a/libs/hwui/DeferredLayerUpdater.cpp +++ b/libs/hwui/DeferredLayerUpdater.cpp @@ -21,6 +21,7 @@ // TODO: Use public SurfaceTexture APIs once available and include public NDK header file instead. #include <surfacetexture/surface_texture_platform.h> #include "AutoBackendTextureRelease.h" +#include "Matrix.h" #include "Properties.h" #include "renderstate/RenderState.h" #include "renderthread/EglManager.h" @@ -144,17 +145,16 @@ void DeferredLayerUpdater::apply() { } if (mUpdateTexImage) { mUpdateTexImage = false; + float transformMatrix[16]; android_dataspace dataspace; int slot; bool newContent = false; - ARect rect; - uint32_t textureTransform; // Note: ASurfaceTexture_dequeueBuffer discards all but the last frame. This // is necessary if the SurfaceTexture queue is in synchronous mode, and we // cannot tell which mode it is in. AHardwareBuffer* hardwareBuffer = ASurfaceTexture_dequeueBuffer( - mSurfaceTexture.get(), &slot, &dataspace, &newContent, createReleaseFence, - fenceWait, this, &rect, &textureTransform); + mSurfaceTexture.get(), &slot, &dataspace, transformMatrix, &newContent, + createReleaseFence, fenceWait, this); if (hardwareBuffer) { mCurrentSlot = slot; @@ -165,12 +165,12 @@ void DeferredLayerUpdater::apply() { // (invoked by createIfNeeded) will add a ref to the AHardwareBuffer. AHardwareBuffer_release(hardwareBuffer); if (layerImage.get()) { + SkMatrix textureTransform; + mat4(transformMatrix).copyTo(textureTransform); // force filtration if buffer size != layer size bool forceFilter = mWidth != layerImage->width() || mHeight != layerImage->height(); - SkRect cropRect = - SkRect::MakeLTRB(rect.left, rect.top, rect.right, rect.bottom); - updateLayer(forceFilter, textureTransform, cropRect, layerImage); + updateLayer(forceFilter, textureTransform, layerImage); } } } @@ -182,13 +182,12 @@ void DeferredLayerUpdater::apply() { } } -void DeferredLayerUpdater::updateLayer(bool forceFilter, const uint32_t textureTransform, - const SkRect cropRect, const sk_sp<SkImage>& layerImage) { +void DeferredLayerUpdater::updateLayer(bool forceFilter, const SkMatrix& textureTransform, + const sk_sp<SkImage>& layerImage) { mLayer->setBlend(mBlend); mLayer->setForceFilter(forceFilter); mLayer->setSize(mWidth, mHeight); - mLayer->setTextureTransform(textureTransform); - mLayer->setCropRect(cropRect); + mLayer->getTexTransform() = textureTransform; mLayer->setImage(layerImage); } |