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

Commit 5c8edcf9 authored by Xin Li's avatar Xin Li Committed by Android (Google) Code Review
Browse files

Merge "Merge 24Q3 (ab/AP3A.240905.001) to aosp-main-future" into aosp-main-future

parents d91f36a9 57f907ae
Loading
Loading
Loading
Loading
+44 −14
Original line number Diff line number Diff line
@@ -239,8 +239,9 @@ protected:
    float const luma_green = 0.7152;
    uint32_t const rgba_blue = 0xFFFF0000;
    float const luma_blue = 0.0722;
    float const error_margin = 0.01;
    float const error_margin = 0.1;
    float const luma_gray = 0.50;
    static constexpr std::chrono::milliseconds EVENT_WAIT_TIME_MS = 5000ms;
};

TEST_F(RegionSamplingTest, invalidLayerHandle_doesNotCrash) {
@@ -261,7 +262,7 @@ TEST_F(RegionSamplingTest, invalidLayerHandle_doesNotCrash) {
    composer->removeRegionSamplingListener(listener);
}

TEST_F(RegionSamplingTest, DISABLED_CollectsLuma) {
TEST_F(RegionSamplingTest, CollectsLuma) {
    fill_render(rgba_green);

    sp<gui::ISurfaceComposer> composer = ComposerServiceAIDL::getComposerService();
@@ -273,7 +274,30 @@ TEST_F(RegionSamplingTest, DISABLED_CollectsLuma) {
    sampleArea.bottom = 200;
    composer->addRegionSamplingListener(sampleArea, mTopLayer->getHandle(), listener);

    EXPECT_TRUE(listener->wait_event(300ms)) << "timed out waiting for luma event to be received";
    EXPECT_TRUE(listener->wait_event(EVENT_WAIT_TIME_MS))
            << "timed out waiting for luma event to be received";
    EXPECT_NEAR(listener->luma(), luma_green, error_margin);

    composer->removeRegionSamplingListener(listener);
}

TEST_F(RegionSamplingTest, CollectsLumaForSecureLayer) {
    fill_render(rgba_green);
    SurfaceComposerClient::Transaction()
            .setFlags(mContentLayer, layer_state_t::eLayerSecure, layer_state_t::eLayerSecure)
            .apply(/*synchronous=*/true);

    sp<gui::ISurfaceComposer> composer = ComposerServiceAIDL::getComposerService();
    sp<Listener> listener = new Listener();
    gui::ARect sampleArea;
    sampleArea.left = 100;
    sampleArea.top = 100;
    sampleArea.right = 200;
    sampleArea.bottom = 200;
    composer->addRegionSamplingListener(sampleArea, mTopLayer->getHandle(), listener);

    EXPECT_TRUE(listener->wait_event(EVENT_WAIT_TIME_MS))
            << "timed out waiting for luma event to be received";
    EXPECT_NEAR(listener->luma(), luma_green, error_margin);

    composer->removeRegionSamplingListener(listener);
@@ -291,13 +315,14 @@ TEST_F(RegionSamplingTest, DISABLED_CollectsChangingLuma) {
    sampleArea.bottom = 200;
    composer->addRegionSamplingListener(sampleArea, mTopLayer->getHandle(), listener);

    EXPECT_TRUE(listener->wait_event(300ms)) << "timed out waiting for luma event to be received";
    EXPECT_TRUE(listener->wait_event(EVENT_WAIT_TIME_MS))
            << "timed out waiting for luma event to be received";
    EXPECT_NEAR(listener->luma(), luma_green, error_margin);

    listener->reset();

    fill_render(rgba_blue);
    EXPECT_TRUE(listener->wait_event(300ms))
    EXPECT_TRUE(listener->wait_event(EVENT_WAIT_TIME_MS))
            << "timed out waiting for 2nd luma event to be received";
    EXPECT_NEAR(listener->luma(), luma_blue, error_margin);

@@ -323,10 +348,10 @@ TEST_F(RegionSamplingTest, DISABLED_CollectsLumaFromTwoRegions) {
    graySampleArea.bottom = 200;
    composer->addRegionSamplingListener(graySampleArea, mTopLayer->getHandle(), grayListener);

    EXPECT_TRUE(grayListener->wait_event(300ms))
    EXPECT_TRUE(grayListener->wait_event(EVENT_WAIT_TIME_MS))
            << "timed out waiting for luma event to be received";
    EXPECT_NEAR(grayListener->luma(), luma_gray, error_margin);
    EXPECT_TRUE(greenListener->wait_event(300ms))
    EXPECT_TRUE(greenListener->wait_event(EVENT_WAIT_TIME_MS))
            << "timed out waiting for luma event to be received";
    EXPECT_NEAR(greenListener->luma(), luma_green, error_margin);

@@ -334,7 +359,7 @@ TEST_F(RegionSamplingTest, DISABLED_CollectsLumaFromTwoRegions) {
    composer->removeRegionSamplingListener(grayListener);
}

TEST_F(RegionSamplingTest, DISABLED_TestIfInvalidInputParameters) {
TEST_F(RegionSamplingTest, TestIfInvalidInputParameters) {
    sp<gui::ISurfaceComposer> composer = ComposerServiceAIDL::getComposerService();
    sp<Listener> listener = new Listener();

@@ -369,7 +394,7 @@ TEST_F(RegionSamplingTest, DISABLED_TestIfInvalidInputParameters) {
    composer->removeRegionSamplingListener(listener);
}

TEST_F(RegionSamplingTest, DISABLED_TestCallbackAfterRemoveListener) {
TEST_F(RegionSamplingTest, TestCallbackAfterRemoveListener) {
    fill_render(rgba_green);
    sp<gui::ISurfaceComposer> composer = ComposerServiceAIDL::getComposerService();
    sp<Listener> listener = new Listener();
@@ -381,7 +406,8 @@ TEST_F(RegionSamplingTest, DISABLED_TestCallbackAfterRemoveListener) {
    composer->addRegionSamplingListener(sampleArea, mTopLayer->getHandle(), listener);
    fill_render(rgba_green);

    EXPECT_TRUE(listener->wait_event(300ms)) << "timed out waiting for luma event to be received";
    EXPECT_TRUE(listener->wait_event(EVENT_WAIT_TIME_MS))
            << "timed out waiting for luma event to be received";
    EXPECT_NEAR(listener->luma(), luma_green, error_margin);

    listener->reset();
@@ -404,11 +430,13 @@ TEST_F(RegionSamplingTest, DISABLED_CollectsLumaFromMovingLayer) {
    // Test: listener in (100, 100). See layer before move, no layer after move.
    fill_render(rgba_blue);
    composer->addRegionSamplingListener(sampleAreaA, mTopLayer->getHandle(), listener);
    EXPECT_TRUE(listener->wait_event(300ms)) << "timed out waiting for luma event to be received";
    EXPECT_TRUE(listener->wait_event(EVENT_WAIT_TIME_MS))
            << "timed out waiting for luma event to be received";
    EXPECT_NEAR(listener->luma(), luma_blue, error_margin);
    listener->reset();
    SurfaceComposerClient::Transaction{}.setPosition(mContentLayer, 600, 600).apply();
    EXPECT_TRUE(listener->wait_event(300ms)) << "timed out waiting for luma event to be received";
    EXPECT_TRUE(listener->wait_event(EVENT_WAIT_TIME_MS))
            << "timed out waiting for luma event to be received";
    EXPECT_NEAR(listener->luma(), luma_gray, error_margin);
    composer->removeRegionSamplingListener(listener);

@@ -420,11 +448,13 @@ TEST_F(RegionSamplingTest, DISABLED_CollectsLumaFromMovingLayer) {
    sampleAreaA.right = sampleArea.right;
    sampleAreaA.bottom = sampleArea.bottom;
    composer->addRegionSamplingListener(sampleAreaA, mTopLayer->getHandle(), listener);
    EXPECT_TRUE(listener->wait_event(300ms)) << "timed out waiting for luma event to be received";
    EXPECT_TRUE(listener->wait_event(EVENT_WAIT_TIME_MS))
            << "timed out waiting for luma event to be received";
    EXPECT_NEAR(listener->luma(), luma_gray, error_margin);
    listener->reset();
    SurfaceComposerClient::Transaction{}.setPosition(mContentLayer, 600, 600).apply();
    EXPECT_TRUE(listener->wait_event(300ms)) << "timed out waiting for luma event to be received";
    EXPECT_TRUE(listener->wait_event(EVENT_WAIT_TIME_MS))
            << "timed out waiting for luma event to be received";
    EXPECT_NEAR(listener->luma(), luma_green, error_margin);
    composer->removeRegionSamplingListener(listener);
}
+3 −1
Original line number Diff line number Diff line
@@ -300,7 +300,9 @@ int AHardwareBuffer_lockPlanes(AHardwareBuffer* buffer, uint64_t usage,
      if (result == 0) {
        outPlanes->planeCount = 3;
        outPlanes->planes[0].data = yuvData.y;
        if (format == AHARDWAREBUFFER_FORMAT_YCbCr_P010) {
        // P010 is word-aligned 10-bit semiplaner, and YCbCr_422_I is a single interleaved plane
        if (format == AHARDWAREBUFFER_FORMAT_YCbCr_P010 ||
            format == AHARDWAREBUFFER_FORMAT_YCbCr_422_I) {
            outPlanes->planes[0].pixelStride = 2;
        } else {
            outPlanes->planes[0].pixelStride = 1;
+1 −1
Original line number Diff line number Diff line
@@ -1102,7 +1102,7 @@ void Output::prepareFrame() {
}

ftl::Future<std::monostate> Output::presentFrameAndReleaseLayersAsync(bool flushEvenWhenDisabled) {
    return ftl::Future<bool>(std::move(mHwComposerAsyncWorker->send([&]() {
    return ftl::Future<bool>(std::move(mHwComposerAsyncWorker->send([this, flushEvenWhenDisabled]() {
               presentFrameAndReleaseLayers(flushEvenWhenDisabled);
               return true;
           })))
+6 −0
Original line number Diff line number Diff line
@@ -467,6 +467,12 @@ bool DisplayDevice::onKernelTimerChanged(std::optional<DisplayModeId> desiredMod
    return false;
}

void DisplayDevice::onVrrIdle(bool idle) {
    if (mRefreshRateOverlay) {
        mRefreshRateOverlay->onVrrIdle(idle);
    }
}

void DisplayDevice::animateOverlay() {
    if (mRefreshRateOverlay) {
        mRefreshRateOverlay->animate();
+1 −0
Original line number Diff line number Diff line
@@ -196,6 +196,7 @@ public:
    bool isRefreshRateOverlayEnabled() const { return mRefreshRateOverlay != nullptr; }
    void animateOverlay();
    bool onKernelTimerChanged(std::optional<DisplayModeId>, bool timerExpired);
    void onVrrIdle(bool idle);

    // Enables an overlay to be display with the hdr/sdr ratio
    void enableHdrSdrRatioOverlay(bool enable) REQUIRES(kMainThreadContext);
Loading