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

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

Merge "Fix renderengine_test to work with new async drawLayers API"

parents 945bf5fa ec41121e
Loading
Loading
Loading
Loading
+14 −34
Original line number Diff line number Diff line
@@ -424,13 +424,11 @@ public:
        ASSERT_TRUE(result.valid());
        auto [status, fence] = result.get();

        int fd = fence.release();
        if (fd >= 0) {
            sync_wait(fd, -1);
            close(fd);
        ASSERT_EQ(NO_ERROR, status);
        if (fence.ok()) {
            sync_wait(fence.get(), -1);
        }

        ASSERT_EQ(NO_ERROR, status);
        if (layers.size() > 0 && mGLESRE != nullptr) {
            ASSERT_TRUE(mGLESRE->isFramebufferImageCachedForTesting(mBuffer->getBuffer()->getId()));
        }
@@ -1317,31 +1315,9 @@ TEST_P(RenderEngineTest, drawLayers_nullOutputBuffer) {
            mRE->drawLayers(settings, layers, nullptr, true, base::unique_fd());

    ASSERT_TRUE(result.valid());
    auto [status, _] = result.get();
    auto [status, fence] = result.get();
    ASSERT_EQ(BAD_VALUE, status);
}

TEST_P(RenderEngineTest, drawLayers_nullOutputFence) {
    initializeRenderEngine();

    renderengine::DisplaySettings settings;
    settings.outputDataspace = ui::Dataspace::V0_SRGB_LINEAR;
    settings.physicalDisplay = fullscreenRect();
    settings.clip = fullscreenRect();

    std::vector<const renderengine::LayerSettings*> layers;
    renderengine::LayerSettings layer;
    layer.geometry.boundaries = fullscreenRect().toFloatRect();
    BufferSourceVariant<ForceOpaqueBufferVariant>::fillColor(layer, 1.0f, 0.0f, 0.0f, this);
    layer.alpha = 1.0;
    layers.push_back(&layer);

    std::future<renderengine::RenderEngineResult> result =
            mRE->drawLayers(settings, layers, mBuffer, true, base::unique_fd());
    ASSERT_TRUE(result.valid());
    auto [status, _] = result.get();
    ASSERT_EQ(NO_ERROR, status);
    expectBufferColor(fullscreenRect(), 255, 0, 0, 255);
    ASSERT_FALSE(fence.ok());
}

TEST_P(RenderEngineTest, drawLayers_doesNotCacheFramebuffer) {
@@ -1369,8 +1345,13 @@ TEST_P(RenderEngineTest, drawLayers_doesNotCacheFramebuffer) {
    std::future<renderengine::RenderEngineResult> result =
            mRE->drawLayers(settings, layers, mBuffer, false, base::unique_fd());
    ASSERT_TRUE(result.valid());
    auto [status, _] = result.get();
    auto [status, fence] = result.get();

    ASSERT_EQ(NO_ERROR, status);
    if (fence.ok()) {
        sync_wait(fence.get(), -1);
    }

    ASSERT_FALSE(mGLESRE->isFramebufferImageCachedForTesting(mBuffer->getBuffer()->getId()));
    expectBufferColor(fullscreenRect(), 255, 0, 0, 255);
}
@@ -1780,11 +1761,10 @@ TEST_P(RenderEngineTest, cleanupPostRender_cleansUpOnce) {
    ASSERT_TRUE(resultTwo.valid());
    auto [statusTwo, fenceTwo] = resultTwo.get();
    ASSERT_EQ(NO_ERROR, statusTwo);

    const int fd = fenceTwo.get();
    if (fd >= 0) {
        sync_wait(fd, -1);
    if (fenceTwo.ok()) {
        sync_wait(fenceTwo.get(), -1);
    }

    // Only cleanup the first time.
    EXPECT_FALSE(mRE->canSkipPostRenderCleanup());
    mRE->cleanupPostRender();