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

Commit 3b2ad8c5 authored by Alec Mouri's avatar Alec Mouri Committed by Android (Google) Code Review
Browse files

Merge "Remove useFramebufferCache parameter in drawLayers()" into main

parents b956058d f29700fb
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -68,13 +68,11 @@ void RenderEngine::validateOutputBufferUsage(const sp<GraphicBuffer>& buffer) {
ftl::Future<FenceResult> RenderEngine::drawLayers(const DisplaySettings& display,
                                                  const std::vector<LayerSettings>& layers,
                                                  const std::shared_ptr<ExternalTexture>& buffer,
                                                  const bool useFramebufferCache,
                                                  base::unique_fd&& bufferFence) {
    const auto resultPromise = std::make_shared<std::promise<FenceResult>>();
    std::future<FenceResult> resultFuture = resultPromise->get_future();
    updateProtectedContext(layers, buffer);
    drawLayersInternal(std::move(resultPromise), display, layers, buffer, useFramebufferCache,
                       std::move(bufferFence));
    drawLayersInternal(std::move(resultPromise), display, layers, buffer, std::move(bufferFence));
    return resultFuture;
}

+3 −12
Original line number Diff line number Diff line
@@ -104,10 +104,6 @@ std::pair<uint32_t, uint32_t> getDisplaySize() {
    return std::pair<uint32_t, uint32_t>(width, height);
}

// This value doesn't matter, as it's not read. TODO(b/199918329): Once we remove
// GLESRenderEngine we can remove this, too.
static constexpr const bool kUseFrameBufferCache = false;

static std::unique_ptr<RenderEngine> createRenderEngine(RenderEngine::RenderEngineType type) {
    auto args = RenderEngineCreationArgs::Builder()
                        .setPixelFormat(static_cast<int>(ui::PixelFormat::RGBA_8888))
@@ -168,10 +164,7 @@ static std::shared_ptr<ExternalTexture> copyBuffer(RenderEngine& re,
    };
    auto layers = std::vector<LayerSettings>{layer};

    sp<Fence> waitFence =
            re.drawLayers(display, layers, texture, kUseFrameBufferCache, base::unique_fd())
                    .get()
                    .value();
    sp<Fence> waitFence = re.drawLayers(display, layers, texture, base::unique_fd()).get().value();
    waitFence->waitForever(LOG_TAG);
    return texture;
}
@@ -200,10 +193,8 @@ static void benchDrawLayers(RenderEngine& re, const std::vector<LayerSettings>&

    // This loop starts and stops the timer.
    for (auto _ : benchState) {
        sp<Fence> waitFence = re.drawLayers(display, layers, outputBuffer, kUseFrameBufferCache,
                                            base::unique_fd())
                                      .get()
                                      .value();
        sp<Fence> waitFence =
                re.drawLayers(display, layers, outputBuffer, base::unique_fd()).get().value();
        waitFence->waitForever(LOG_TAG);
    }

+1 −6
Original line number Diff line number Diff line
@@ -145,9 +145,6 @@ public:
    // @param layers The layers to draw onto the display, in Z-order.
    // @param buffer The buffer which will be drawn to. This buffer will be
    // ready once drawFence fires.
    // @param useFramebufferCache True if the framebuffer cache should be used.
    // If an implementation does not cache output framebuffers, then this
    // parameter does nothing.
    // @param bufferFence Fence signalling that the buffer is ready to be drawn
    // to.
    // @return A future object of FenceResult indicating whether drawing was
@@ -155,7 +152,6 @@ public:
    virtual ftl::Future<FenceResult> drawLayers(const DisplaySettings& display,
                                                const std::vector<LayerSettings>& layers,
                                                const std::shared_ptr<ExternalTexture>& buffer,
                                                const bool useFramebufferCache,
                                                base::unique_fd&& bufferFence);

    // Clean-up method that should be called on the main thread after the
@@ -244,8 +240,7 @@ protected:
    virtual void drawLayersInternal(
            const std::shared_ptr<std::promise<FenceResult>>&& resultPromise,
            const DisplaySettings& display, const std::vector<LayerSettings>& layers,
            const std::shared_ptr<ExternalTexture>& buffer, const bool useFramebufferCache,
            base::unique_fd&& bufferFence) = 0;
            const std::shared_ptr<ExternalTexture>& buffer, base::unique_fd&& bufferFence) = 0;
};

struct RenderEngineCreationArgs {
+4 −4
Original line number Diff line number Diff line
@@ -42,14 +42,14 @@ public:
    MOCK_METHOD1(useProtectedContext, void(bool));
    MOCK_METHOD0(cleanupPostRender, void());
    MOCK_CONST_METHOD0(canSkipPostRenderCleanup, bool());
    MOCK_METHOD5(drawLayers,
    MOCK_METHOD4(drawLayers,
                 ftl::Future<FenceResult>(const DisplaySettings&, const std::vector<LayerSettings>&,
                                          const std::shared_ptr<ExternalTexture>&, const bool,
                                          const std::shared_ptr<ExternalTexture>&,
                                          base::unique_fd&&));
    MOCK_METHOD6(drawLayersInternal,
    MOCK_METHOD5(drawLayersInternal,
                 void(const std::shared_ptr<std::promise<FenceResult>>&&, const DisplaySettings&,
                      const std::vector<LayerSettings>&, const std::shared_ptr<ExternalTexture>&,
                      const bool, base::unique_fd&&));
                      base::unique_fd&&));
    MOCK_METHOD0(getContextPriority, int());
    MOCK_METHOD0(supportsBackgroundBlur, bool());
    MOCK_METHOD1(onActiveDisplaySizeChanged, void(ui::Size));
+8 −17
Original line number Diff line number Diff line
@@ -29,8 +29,6 @@
namespace android::renderengine::skia {

namespace {
// Warming shader cache, not framebuffer cache.
constexpr bool kUseFrameBufferCache = false;

// clang-format off
// Any non-identity matrix will do.
@@ -116,8 +114,7 @@ static void drawShadowLayers(SkiaRenderEngine* renderengine, const DisplaySettin
        caster.geometry.positionTransform = transform;

        auto layers = std::vector<LayerSettings>{layer, caster};
        renderengine->drawLayers(display, layers, dstTexture, kUseFrameBufferCache,
                                 base::unique_fd());
        renderengine->drawLayers(display, layers, dstTexture, base::unique_fd());
    }
}

@@ -154,8 +151,7 @@ static void drawImageLayers(SkiaRenderEngine* renderengine, const DisplaySetting
                for (auto alpha : {half(.2f), half(1.0f)}) {
                    layer.alpha = alpha;
                    auto layers = std::vector<LayerSettings>{layer};
                    renderengine->drawLayers(display, layers, dstTexture, kUseFrameBufferCache,
                                             base::unique_fd());
                    renderengine->drawLayers(display, layers, dstTexture, base::unique_fd());
                }
            }
        }
@@ -183,8 +179,7 @@ static void drawSolidLayers(SkiaRenderEngine* renderengine, const DisplaySetting
        for (float roundedCornersRadius : {0.0f, 50.f}) {
            layer.geometry.roundedCornersRadius = {roundedCornersRadius, roundedCornersRadius};
            auto layers = std::vector<LayerSettings>{layer};
            renderengine->drawLayers(display, layers, dstTexture, kUseFrameBufferCache,
                                     base::unique_fd());
            renderengine->drawLayers(display, layers, dstTexture, base::unique_fd());
        }
    }
}
@@ -207,8 +202,7 @@ static void drawBlurLayers(SkiaRenderEngine* renderengine, const DisplaySettings
    for (int radius : {9, 60}) {
        layer.backgroundBlurRadius = radius;
        auto layers = std::vector<LayerSettings>{layer};
        renderengine->drawLayers(display, layers, dstTexture, kUseFrameBufferCache,
                                 base::unique_fd());
        renderengine->drawLayers(display, layers, dstTexture, base::unique_fd());
    }
}

@@ -254,8 +248,7 @@ static void drawClippedLayers(SkiaRenderEngine* renderengine, const DisplaySetti
                for (float alpha : {0.5f, 1.f}) {
                    layer.alpha = alpha;
                    auto layers = std::vector<LayerSettings>{layer};
                    renderengine->drawLayers(display, layers, dstTexture, kUseFrameBufferCache,
                                             base::unique_fd());
                    renderengine->drawLayers(display, layers, dstTexture, base::unique_fd());
                }
            }
        }
@@ -292,7 +285,7 @@ static void drawPIPImageLayer(SkiaRenderEngine* renderengine, const DisplaySetti
    };

    auto layers = std::vector<LayerSettings>{layer};
    renderengine->drawLayers(display, layers, dstTexture, kUseFrameBufferCache, base::unique_fd());
    renderengine->drawLayers(display, layers, dstTexture, base::unique_fd());
}

static void drawHolePunchLayer(SkiaRenderEngine* renderengine, const DisplaySettings& display,
@@ -321,7 +314,7 @@ static void drawHolePunchLayer(SkiaRenderEngine* renderengine, const DisplaySett
    };

    auto layers = std::vector<LayerSettings>{layer};
    renderengine->drawLayers(display, layers, dstTexture, kUseFrameBufferCache, base::unique_fd());
    renderengine->drawLayers(display, layers, dstTexture, base::unique_fd());
}

//
@@ -436,9 +429,7 @@ void Cache::primeShaderCache(SkiaRenderEngine* renderengine) {
        };
        auto layers = std::vector<LayerSettings>{layer};
        // call get() to make it synchronous
        renderengine
                ->drawLayers(display, layers, dstTexture, kUseFrameBufferCache, base::unique_fd())
                .get();
        renderengine->drawLayers(display, layers, dstTexture, base::unique_fd()).get();

        const nsecs_t timeAfter = systemTime();
        const float compileTimeMs = static_cast<float>(timeAfter - timeBefore) / 1.0E6;
Loading