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

Commit 18554172 authored by Nathaniel Nifong's avatar Nathaniel Nifong Committed by Automerger Merge Worker
Browse files

Merge "Include skipContentDraw flag to cache blur and shadow shaders" into...

Merge "Include skipContentDraw flag to cache blur and shadow shaders" into sc-dev am: 504a4d8f am: f9d81374

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/15081398

Change-Id: I3eb248e8c0aa4672e32f8155d59416f9a511044c
parents 027806a9 f9d81374
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -72,6 +72,8 @@ static void drawShadowLayers(SkiaRenderEngine* renderengine, const DisplaySettin
            // have color correction added, and important that it be srgb, so the *vertex* shader
            // doesn't have color correction added.
            .sourceDataspace = kDestDataSpace,
            // setting this is mandatory for shadows and blurs
            .skipContentDraw = true,
    };

    auto layers = std::vector<const LayerSettings*>{&layer};
@@ -173,9 +175,12 @@ static void drawBlurLayers(SkiaRenderEngine* renderengine, const DisplaySettings
                            .boundaries = rect,
                    },
            .alpha = 1,
            // setting this is mandatory for shadows and blurs
            .skipContentDraw = true,
    };

    auto layers = std::vector<const LayerSettings*>{&layer};
    // Different blur code is invoked for radii less and greater than 30 pixels
    for (int radius : {9, 60}) {
        layer.backgroundBlurRadius = radius;
        renderengine->drawLayers(display, layers, dstTexture, kUseFrameBufferCache,
@@ -290,10 +295,13 @@ void Cache::primeShaderCache(SkiaRenderEngine* renderengine) {
                                                  ExternalTexture::Usage::READABLE |
                                                          ExternalTexture::Usage::WRITEABLE);

        // 6 shaders
        drawSolidLayers(renderengine, display, dstTexture);
        // 8 shaders
        drawShadowLayers(renderengine, display, srcTexture);

        if (renderengine->supportsBackgroundBlur()) {
            // 2 shaders
            drawBlurLayers(renderengine, display, dstTexture);
        }