Merge "Fix: Release skia resources when RenderNode layer is configured" into sc-dev am: 43038ca7a7
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15081298 Change-Id: Ic0b26acf06e5add1bac87aeb95c1e2e7ed698b94
This commit is contained in:
@@ -331,6 +331,8 @@ public:
|
||||
mSkiaLayer.reset();
|
||||
}
|
||||
|
||||
mProperties.mutateLayerProperties().mutableStretchEffect().clear();
|
||||
mStretchMask.clear();
|
||||
// Clear out the previous snapshot and the image filter the previous
|
||||
// snapshot was created with whenever the layer changes.
|
||||
mSnapshotResult.snapshot = nullptr;
|
||||
|
||||
@@ -186,6 +186,7 @@ static const SkString stretchShader = SkString(R"(
|
||||
|
||||
static const float ZERO = 0.f;
|
||||
static const float INTERPOLATION_STRENGTH_VALUE = 0.7f;
|
||||
static const char CONTENT_TEXTURE[] = "uContentTexture";
|
||||
|
||||
sk_sp<SkShader> StretchEffect::getShader(float width, float height,
|
||||
const sk_sp<SkImage>& snapshotImage,
|
||||
@@ -207,7 +208,7 @@ sk_sp<SkShader> StretchEffect::getShader(float width, float height,
|
||||
mBuilder = std::make_unique<SkRuntimeShaderBuilder>(getStretchEffect());
|
||||
}
|
||||
|
||||
mBuilder->child("uContentTexture") =
|
||||
mBuilder->child(CONTENT_TEXTURE) =
|
||||
snapshotImage->makeShader(SkTileMode::kClamp, SkTileMode::kClamp,
|
||||
SkSamplingOptions(SkFilterMode::kLinear), matrix);
|
||||
mBuilder->uniform("uInterpolationStrength").set(&INTERPOLATION_STRENGTH_VALUE, 1);
|
||||
@@ -226,7 +227,9 @@ sk_sp<SkShader> StretchEffect::getShader(float width, float height,
|
||||
mBuilder->uniform("viewportWidth").set(&width, 1);
|
||||
mBuilder->uniform("viewportHeight").set(&height, 1);
|
||||
|
||||
return mBuilder->makeShader(nullptr, false);
|
||||
auto result = mBuilder->makeShader(nullptr, false);
|
||||
mBuilder->child(CONTENT_TEXTURE) = nullptr;
|
||||
return result;
|
||||
}
|
||||
|
||||
sk_sp<SkRuntimeEffect> StretchEffect::getStretchEffect() {
|
||||
|
||||
@@ -113,6 +113,10 @@ public:
|
||||
return !isEmpty();
|
||||
}
|
||||
|
||||
void clear() {
|
||||
mBuilder = nullptr;
|
||||
}
|
||||
|
||||
private:
|
||||
static sk_sp<SkRuntimeEffect> getStretchEffect();
|
||||
mutable SkVector mStretchDirection{0, 0};
|
||||
|
||||
Reference in New Issue
Block a user