Loading libs/hwui/RenderNode.h +2 −0 Original line number Diff line number Diff line Loading @@ -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; Loading libs/hwui/effects/StretchEffect.cpp +5 −2 Original line number Diff line number Diff line Loading @@ -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, Loading @@ -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); Loading @@ -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() { Loading libs/hwui/effects/StretchEffect.h +4 −0 Original line number Diff line number Diff line Loading @@ -113,6 +113,10 @@ public: return !isEmpty(); } void clear() { mBuilder = nullptr; } private: static sk_sp<SkRuntimeEffect> getStretchEffect(); mutable SkVector mStretchDirection{0, 0}; Loading Loading
libs/hwui/RenderNode.h +2 −0 Original line number Diff line number Diff line Loading @@ -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; Loading
libs/hwui/effects/StretchEffect.cpp +5 −2 Original line number Diff line number Diff line Loading @@ -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, Loading @@ -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); Loading @@ -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() { Loading
libs/hwui/effects/StretchEffect.h +4 −0 Original line number Diff line number Diff line Loading @@ -113,6 +113,10 @@ public: return !isEmpty(); } void clear() { mBuilder = nullptr; } private: static sk_sp<SkRuntimeEffect> getStretchEffect(); mutable SkVector mStretchDirection{0, 0}; Loading