summaryrefslogtreecommitdiff
path: root/libs/hwui/DeferredLayerUpdater.cpp
diff options
context:
space:
mode:
authorbsears <bsears@google.com>2021-08-06 15:18:26 +0000
committerbsears <bsears@google.com>2021-08-06 15:18:26 +0000
commit9df09ccff953f45f1990796e0e558e5ec4e3ccb9 (patch)
tree82cb93be984820194fc5a436c550a937cdf69f58 /libs/hwui/DeferredLayerUpdater.cpp
parentef54c038e1d650c000ee97fd5652eee98e9b8c32 (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.cpp21
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);
}