Merge "Updated SkiaGLRenderEngine to no longer adjust stretch bounds" into sc-dev
diff --git a/libs/renderengine/skia/SkiaGLRenderEngine.cpp b/libs/renderengine/skia/SkiaGLRenderEngine.cpp
index 40a24cc..0bc7f93 100644
--- a/libs/renderengine/skia/SkiaGLRenderEngine.cpp
+++ b/libs/renderengine/skia/SkiaGLRenderEngine.cpp
@@ -560,7 +560,11 @@
const LayerSettings* layer, const DisplaySettings& display, bool undoPremultipliedAlpha,
bool requiresLinearEffect) {
const auto stretchEffect = layer->stretchEffect;
- if (stretchEffect.hasEffect()) {
+ // The given surface will be stretched by HWUI via matrix transformation
+ // which gets similar results for most surfaces
+ // Determine later on if we need to leverage the stertch shader within
+ // surface flinger
+ if (stretchEffect.hasEffect() && /* DISABLES CODE */ (false)) {
const auto targetBuffer = layer->source.buffer.buffer;
const auto graphicsBuffer = targetBuffer ? targetBuffer->getBuffer() : nullptr;
if (graphicsBuffer && shader) {
@@ -653,33 +657,6 @@
int mSaveCount;
};
-void drawStretch(const SkRect& bounds, const StretchEffect& stretchEffect,
- SkCanvas* canvas, const SkPaint& paint) {
- float top = bounds.top();
- float left = bounds.left();
- float bottom = bounds.bottom();
- float right = bounds.right();
- // Adjust the drawing bounds based on the stretch itself.
- float stretchOffsetX =
- round(bounds.width() * stretchEffect.getStretchWidthMultiplier());
- float stretchOffsetY =
- round(bounds.height() * stretchEffect.getStretchHeightMultiplier());
- if (stretchEffect.vectorY < 0.f) {
- top -= stretchOffsetY;
- } else if (stretchEffect.vectorY > 0.f){
- bottom += stretchOffsetY;
- }
-
- if (stretchEffect.vectorX < 0.f) {
- left -= stretchOffsetX;
- } else if (stretchEffect.vectorX > 0.f) {
- right += stretchOffsetX;
- }
-
- auto stretchBounds = SkRect::MakeLTRB(left, top, right, bottom);
- canvas->drawRect(stretchBounds, paint);
-}
-
static SkRRect getBlurRRect(const BlurRegion& region) {
const auto rect = SkRect::MakeLTRB(region.left, region.top, region.right, region.bottom);
const SkVector radii[4] = {SkVector::Make(region.cornerRadiusTL, region.cornerRadiusTL),
@@ -1053,17 +1030,7 @@
paint.setAntiAlias(true);
canvas->drawRRect(bounds, paint);
} else {
- auto& stretchEffect = layer->stretchEffect;
- // TODO (njawad) temporarily disable manipulation of geometry
- // the layer bounds will be updated in HWUI instead of RenderEngine
- // in a subsequent CL
- // Keep the method call in a dead code path to make -Werror happy
- // with unused methods
- if (stretchEffect.hasEffect() && /* DISABLES CODE */ (false)) {
- drawStretch(bounds.rect(), stretchEffect, canvas, paint);
- } else {
- canvas->drawRect(bounds.rect(), paint);
- }
+ canvas->drawRect(bounds.rect(), paint);
}
if (kFlushAfterEveryLayer) {
ATRACE_NAME("flush surface");
diff --git a/libs/renderengine/skia/filters/StretchShaderFactory.cpp b/libs/renderengine/skia/filters/StretchShaderFactory.cpp
index 9b62789..4ac5c40 100644
--- a/libs/renderengine/skia/filters/StretchShaderFactory.cpp
+++ b/libs/renderengine/skia/filters/StretchShaderFactory.cpp
@@ -69,9 +69,8 @@
// and the other way around.
uniform float uInterpolationStrength;
- float easeInCubic(float t, float d) {
- float tmp = t * d;
- return tmp * tmp * tmp;
+ float easeIn(float t, float d) {
+ return t * d;
}
float computeOverscrollStart(
@@ -84,7 +83,7 @@
) {
float offsetPos = uStretchAffectedDist - inPos;
float posBasedVariation = mix(
- 1. ,easeInCubic(offsetPos, uInverseStretchAffectedDist), interpolationStrength);
+ 1. ,easeIn(offsetPos, uInverseStretchAffectedDist), interpolationStrength);
float stretchIntensity = overscroll * posBasedVariation;
return distanceStretched - (offsetPos / (1. + stretchIntensity));
}
@@ -100,7 +99,7 @@
) {
float offsetPos = inPos - reverseStretchDist;
float posBasedVariation = mix(
- 1. ,easeInCubic(offsetPos, uInverseStretchAffectedDist), interpolationStrength);
+ 1. ,easeIn(offsetPos, uInverseStretchAffectedDist), interpolationStrength);
float stretchIntensity = (-overscroll) * posBasedVariation;
return 1 - (distanceStretched - (offsetPos / (1. + stretchIntensity)));
}