diff options
author | 2023-09-06 15:32:34 -0400 | |
---|---|---|
committer | 2023-09-06 15:32:38 -0400 | |
commit | 74fe47124e89ba2a60256920f219ee113541a685 (patch) | |
tree | 9a9a608098e484f6ce498869a2fd863f1d9c48f4 | |
parent | 7c140b1683207cd3ad5d9ac68a294bf3b483a08a (diff) |
Remove usage of deprecated SkImage::makeWithFilter API call
Test: compiles and Skia images are generated correctly
SkImage::makeWithFilter has been deprecated and replaced with three
factory functions in the SkImages namespace in:
https://skia-review.googlesource.com/c/skia/+/749138
Bug: b/293326072
Bug: b/293475819
Change-Id: I13fc0fa7ac0acda0663b4b78e600bb60f771eb24
-rw-r--r-- | libs/hwui/RenderNode.cpp | 31 | ||||
-rw-r--r-- | libs/hwui/pipeline/skia/BackdropFilterDrawable.cpp | 17 | ||||
-rw-r--r-- | libs/hwui/pipeline/skia/RenderNodeDrawable.cpp | 28 |
3 files changed, 55 insertions, 21 deletions
diff --git a/libs/hwui/RenderNode.cpp b/libs/hwui/RenderNode.cpp index eee93c153b9a..d28bb499c907 100644 --- a/libs/hwui/RenderNode.cpp +++ b/libs/hwui/RenderNode.cpp @@ -28,16 +28,20 @@ #include "DamageAccumulator.h" #include "pipeline/skia/SkiaDisplayList.h" #endif +#include <SkPathOps.h> #include <gui/TraceUtils.h> -#include "utils/MathUtils.h" -#include "utils/StringUtils.h" +#include <ui/FatVector.h> -#include <SkPathOps.h> #include <algorithm> #include <atomic> #include <sstream> #include <string> -#include <ui/FatVector.h> + +#ifdef __ANDROID__ +#include "include/gpu/ganesh/SkImageGanesh.h" +#endif +#include "utils/MathUtils.h" +#include "utils/StringUtils.h" namespace android { namespace uirenderer { @@ -370,13 +374,18 @@ std::optional<RenderNode::SnapshotResult> RenderNode::updateSnapshotIfRequired( mImageFilterClipBounds != clipBounds || mTargetImageFilterLayerSurfaceGenerationId != layerSurfaceGenerationId) { // Otherwise create a new snapshot with the given filter and snapshot - mSnapshotResult.snapshot = - snapshot->makeWithFilter(context, - imageFilter, - subset, - clipBounds, - &mSnapshotResult.outSubset, - &mSnapshotResult.outOffset); +#ifdef __ANDROID__ + if (context) { + mSnapshotResult.snapshot = SkImages::MakeWithFilter( + context, snapshot, imageFilter, subset, clipBounds, &mSnapshotResult.outSubset, + &mSnapshotResult.outOffset); + } else +#endif + { + mSnapshotResult.snapshot = SkImages::MakeWithFilter( + snapshot, imageFilter, subset, clipBounds, &mSnapshotResult.outSubset, + &mSnapshotResult.outOffset); + } mTargetImageFilter = sk_ref_sp(imageFilter); mImageFilterClipBounds = clipBounds; mTargetImageFilterLayerSurfaceGenerationId = layerSurfaceGenerationId; diff --git a/libs/hwui/pipeline/skia/BackdropFilterDrawable.cpp b/libs/hwui/pipeline/skia/BackdropFilterDrawable.cpp index ffad69993fd8..e81cbfb508ae 100644 --- a/libs/hwui/pipeline/skia/BackdropFilterDrawable.cpp +++ b/libs/hwui/pipeline/skia/BackdropFilterDrawable.cpp @@ -21,6 +21,9 @@ #include "RenderNode.h" #include "RenderNodeDrawable.h" +#ifdef __ANDROID__ +#include "include/gpu/ganesh/SkImageGanesh.h" +#endif namespace android { namespace uirenderer { @@ -72,9 +75,17 @@ void BackdropFilterDrawable::onDraw(SkCanvas* canvas) { } auto imageSubset = mImageSubset.roundOut(); - backdropImage = - backdropImage->makeWithFilter(canvas->recordingContext(), backdropFilter, imageSubset, - imageSubset, &mOutSubset, &mOutOffset); +#ifdef __ANDROID__ + if (canvas->recordingContext()) { + backdropImage = + SkImages::MakeWithFilter(canvas->recordingContext(), backdropImage, backdropFilter, + imageSubset, imageSubset, &mOutSubset, &mOutOffset); + } else +#endif + { + backdropImage = SkImages::MakeWithFilter(backdropImage, backdropFilter, imageSubset, + imageSubset, &mOutSubset, &mOutOffset); + } canvas->drawImageRect(backdropImage, SkRect::Make(mOutSubset), mDstBounds, SkSamplingOptions(SkFilterMode::kLinear), &mPaint, SkCanvas::kStrict_SrcRectConstraint); diff --git a/libs/hwui/pipeline/skia/RenderNodeDrawable.cpp b/libs/hwui/pipeline/skia/RenderNodeDrawable.cpp index 9d72c2315198..2b2e3995d17e 100644 --- a/libs/hwui/pipeline/skia/RenderNodeDrawable.cpp +++ b/libs/hwui/pipeline/skia/RenderNodeDrawable.cpp @@ -15,21 +15,25 @@ */ #include "RenderNodeDrawable.h" + #include <SkPaint.h> #include <SkPaintFilterCanvas.h> #include <SkPoint.h> #include <SkRRect.h> #include <SkRect.h> #include <gui/TraceUtils.h> +#include <include/effects/SkImageFilters.h> +#ifdef __ANDROID__ +#include <include/gpu/ganesh/SkImageGanesh.h> +#endif + +#include <optional> + #include "RenderNode.h" #include "SkiaDisplayList.h" #include "StretchMask.h" #include "TransformCanvas.h" -#include <include/effects/SkImageFilters.h> - -#include <optional> - namespace android { namespace uirenderer { namespace skiapipeline { @@ -255,9 +259,19 @@ void RenderNodeDrawable::drawContent(SkCanvas* canvas) const { snapshotImage = renderNode->getLayerSurface()->makeImageSnapshot(); if (imageFilter) { auto subset = SkIRect::MakeWH(srcBounds.width(), srcBounds.height()); - snapshotImage = snapshotImage->makeWithFilter(recordingContext, imageFilter, - subset, clipBounds.roundOut(), - &srcBounds, &offset); + +#ifdef __ANDROID__ + if (recordingContext) { + snapshotImage = SkImages::MakeWithFilter( + recordingContext, snapshotImage, imageFilter, subset, + clipBounds.roundOut(), &srcBounds, &offset); + } else +#endif + { + snapshotImage = SkImages::MakeWithFilter(snapshotImage, imageFilter, subset, + clipBounds.roundOut(), &srcBounds, + &offset); + } } } else { const auto snapshotResult = renderNode->updateSnapshotIfRequired( |