Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 60511fbd authored by Derek Sollenberger's avatar Derek Sollenberger Committed by Android (Google) Code Review
Browse files

Merge "Performance fixes and additional logging for RE Blur."

parents 1119c515 55603e12
Loading
Loading
Loading
Loading
+12 −8
Original line number Diff line number Diff line
@@ -14,6 +14,8 @@
 * limitations under the License.
 */

#define ATRACE_TAG ATRACE_TAG_GRAPHICS

#include "BlurFilter.h"
#include <SkCanvas.h>
#include <SkData.h>
@@ -38,11 +40,11 @@ BlurFilter::BlurFilter() {
        half4 main(float2 xy) {
            float2 scaled_xy = float2(xy.x * in_inverseScale, xy.y * in_inverseScale);

            float4 c = float4(sample(input, scaled_xy));
            c += float4(sample(input, scaled_xy + float2( in_blurOffset.x,  in_blurOffset.y)));
            c += float4(sample(input, scaled_xy + float2( in_blurOffset.x, -in_blurOffset.y)));
            c += float4(sample(input, scaled_xy + float2(-in_blurOffset.x,  in_blurOffset.y)));
            c += float4(sample(input, scaled_xy + float2(-in_blurOffset.x, -in_blurOffset.y)));
            half4 c = sample(input, scaled_xy);
            c += sample(input, scaled_xy + float2( in_blurOffset.x,  in_blurOffset.y));
            c += sample(input, scaled_xy + float2( in_blurOffset.x, -in_blurOffset.y));
            c += sample(input, scaled_xy + float2(-in_blurOffset.x,  in_blurOffset.y));
            c += sample(input, scaled_xy + float2(-in_blurOffset.x, -in_blurOffset.y));

            return half4(c.rgb * 0.2, 1.0);
        }
@@ -57,8 +59,6 @@ BlurFilter::BlurFilter() {

sk_sp<SkSurface> BlurFilter::generate(SkCanvas* canvas, const sk_sp<SkSurface> input,
                                      const uint32_t blurRadius, SkRect rect) const {
    ATRACE_CALL();

    // Kawase is an approximation of Gaussian, but it behaves differently from it.
    // A radius transformation is required for approximating them, and also to introduce
    // non-integer steps, necessary to smoothly interpolate large radii.
@@ -126,7 +126,11 @@ sk_sp<SkSurface> BlurFilter::generate(SkCanvas* canvas, const sk_sp<SkSurface> i
        }
        lastDrawTarget = readSurface;
    }

    {
        ATRACE_NAME("Flush Offscreen Surfaces");
        lastDrawTarget->flushAndSubmit();
    }
    return lastDrawTarget;
}