summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Nader Jawad <njawad@google.com> 2023-03-27 13:02:41 -0700
committer Nader Jawad <njawad@google.com> 2023-03-27 13:36:49 -0700
commitf5ce45285ea937c1d83c2c13c77c00d9591a350a (patch)
tree38b8958cc768d547dff17e8b5ab1fad18fdd55be
parent04fa4ea3e7cb21513710a0978d408f641904f1d6 (diff)
Fixed issue where HardwareBufferRenderer was not preserving contents
Updated RenderProxy creation to pass false for the opaque flag in order to avoid an unnecessary canvas->clear invocation within SkiaPipeline::draw Fixes: 275398000 Test: Added test to HardwareBufferRendererTests Change-Id: I5f884240439bf3e57500ed1404f31fbe2ea122fa
-rw-r--r--libs/hwui/jni/android_graphics_HardwareBufferRenderer.cpp2
-rw-r--r--libs/hwui/pipeline/skia/SkiaPipeline.cpp3
2 files changed, 2 insertions, 3 deletions
diff --git a/libs/hwui/jni/android_graphics_HardwareBufferRenderer.cpp b/libs/hwui/jni/android_graphics_HardwareBufferRenderer.cpp
index ae22213f4bf4..768dfcd52840 100644
--- a/libs/hwui/jni/android_graphics_HardwareBufferRenderer.cpp
+++ b/libs/hwui/jni/android_graphics_HardwareBufferRenderer.cpp
@@ -74,7 +74,7 @@ static long android_graphics_HardwareBufferRenderer_create(JNIEnv* env, jobject,
auto* hardwareBuffer = HardwareBufferHelpers::AHardwareBuffer_fromHardwareBuffer(env, buffer);
auto* rootRenderNode = reinterpret_cast<RootRenderNode*>(renderNodePtr);
ContextFactoryImpl factory(rootRenderNode);
- auto* proxy = new RenderProxy(true, rootRenderNode, &factory);
+ auto* proxy = new RenderProxy(false, rootRenderNode, &factory);
proxy->setHardwareBuffer(hardwareBuffer);
return (jlong)proxy;
}
diff --git a/libs/hwui/pipeline/skia/SkiaPipeline.cpp b/libs/hwui/pipeline/skia/SkiaPipeline.cpp
index 6628463bcabf..8ea71f11e2f0 100644
--- a/libs/hwui/pipeline/skia/SkiaPipeline.cpp
+++ b/libs/hwui/pipeline/skia/SkiaPipeline.cpp
@@ -499,8 +499,7 @@ void SkiaPipeline::renderFrameImpl(const SkRect& clip,
}
canvas->concat(preTransform);
- // STOPSHIP: Revert, temporary workaround to clear always F16 frame buffer for b/74976293
- if (!opaque || getSurfaceColorType() == kRGBA_F16_SkColorType) {
+ if (!opaque) {
canvas->clear(SK_ColorTRANSPARENT);
}