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

Commit 2dfdd17f authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Kawase blur filter"

parents 72a2189c 453932d5
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -59,7 +59,7 @@ filegroup {
        "gl/Program.cpp",
        "gl/ProgramCache.cpp",
        "gl/filters/BlurFilter.cpp",
        "gl/filters/LensBlurFilter.cpp",
        "gl/filters/KawaseBlurFilter.cpp",
        "gl/filters/GaussianBlurFilter.cpp",
        "gl/filters/GenericProgram.cpp",
    ],
+6 −3
Original line number Diff line number Diff line
@@ -51,7 +51,7 @@
#include "ProgramCache.h"
#include "filters/BlurFilter.h"
#include "filters/GaussianBlurFilter.h"
#include "filters/LensBlurFilter.h"
#include "filters/KawaseBlurFilter.h"

extern "C" EGLAPI const char* eglQueryStringImplementationANDROID(EGLDisplay dpy, EGLint name);

@@ -285,6 +285,9 @@ std::unique_ptr<GLESRenderEngine> GLESRenderEngine::create(const RenderEngineCre
    // now figure out what version of GL did we actually get
    GlesVersion version = parseGlesVersion(extensions.getVersion());

    LOG_ALWAYS_FATAL_IF(args.supportsBackgroundBlur && version < GLES_VERSION_3_0,
        "Blurs require OpenGL ES 3.0. Please unset ro.surface_flinger.supports_background_blur");

    // initialize the renderer while GL is current
    std::unique_ptr<GLESRenderEngine> engine;
    switch (version) {
@@ -428,11 +431,11 @@ GLESRenderEngine::GLESRenderEngine(const RenderEngineCreationArgs& args, EGLDisp

    if (args.supportsBackgroundBlur) {
        char isGaussian[PROPERTY_VALUE_MAX];
        property_get("debug.sf.gaussianBlur", isGaussian, "1");
        property_get("debug.sf.gaussianBlur", isGaussian, "0");
        if (atoi(isGaussian)) {
            mBlurFilter = new GaussianBlurFilter(*this);
        } else {
            mBlurFilter = new LensBlurFilter(*this);
            mBlurFilter = new KawaseBlurFilter(*this);
        }
        checkErrors("BlurFilter creation");
    }
+1 −1
Original line number Diff line number Diff line
@@ -262,7 +262,7 @@ private:
    friend class GLFramebuffer;
    friend class BlurFilter;
    friend class GaussianBlurFilter;
    friend class LensBlurFilter;
    friend class KawaseBlurFilter;
    friend class GenericProgram;
    std::unique_ptr<FlushTracer> mFlushTracer;
    std::unique_ptr<ImageManager> mImageManager = std::make_unique<ImageManager>(this);
+13 −3
Original line number Diff line number Diff line
@@ -71,8 +71,18 @@ status_t BlurFilter::setAsDrawTarget(const DisplaySettings& display, uint32_t ra
}

void BlurFilter::drawMesh(GLuint uv, GLuint position) {
    GLfloat positions[] = {-1.0f, -1.0f, -1.0f, 1.0f, 1.0f, 1.0f, 1.0f, -1.0f};
    GLfloat texCoords[] = {0.0, 0.0, 0.0, 1.0f, 1.0f, 1.0f, 1.0f, 0};
    static constexpr auto size = 2.0f;
    static constexpr auto translation = 1.0f;
    GLfloat positions[] = {
        translation-size, -translation-size,
        translation-size, -translation+size,
        translation+size, -translation+size
    };
    GLfloat texCoords[] = {
        0.0f, 0.0f-translation,
        0.0f, size-translation,
        size, size-translation
    };

    // set attributes
    glEnableVertexAttribArray(uv);
@@ -82,7 +92,7 @@ void BlurFilter::drawMesh(GLuint uv, GLuint position) {
                          positions);

    // draw mesh
    glDrawArrays(GL_TRIANGLE_FAN, 0 /* first */, 4 /* count */);
    glDrawArrays(GL_TRIANGLES, 0 /* first */, 3 /* count */);
    mEngine.checkErrors("Drawing blur mesh");
}

+1 −1
Original line number Diff line number Diff line
@@ -33,7 +33,7 @@ public:
    static constexpr float kFboScale = 0.25f;
    // To avoid downscaling artifacts, we interpolate the blurred fbo with the full composited
    // image, up to this radius.
    static constexpr float kMaxCrossFadeRadius = 15.0f;
    static constexpr float kMaxCrossFadeRadius = 30.0f;

    explicit BlurFilter(GLESRenderEngine& engine);
    virtual ~BlurFilter(){};
Loading