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

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

Merge "SF: wait instead of presenting early" into sc-dev

parents 86f5c950 3645e64d
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -79,6 +79,9 @@ struct CompositionRefreshArgs {


    // If set, causes the dirty regions to flash with the delay
    // If set, causes the dirty regions to flash with the delay
    std::optional<std::chrono::microseconds> devOptFlashDirtyRegionsDelay;
    std::optional<std::chrono::microseconds> devOptFlashDirtyRegionsDelay;

    // The earliest time to send the present command to the HAL
    std::chrono::steady_clock::time_point earliestPresentTime;
};
};


} // namespace android::compositionengine
} // namespace android::compositionengine
+3 −0
Original line number Original line Diff line number Diff line
@@ -115,6 +115,9 @@ struct OutputCompositionState {
    // Current target dataspace
    // Current target dataspace
    ui::Dataspace targetDataspace{ui::Dataspace::UNKNOWN};
    ui::Dataspace targetDataspace{ui::Dataspace::UNKNOWN};


    // The earliest time to send the present command to the HAL
    std::chrono::steady_clock::time_point earliestPresentTime;

    // Debugging
    // Debugging
    void dump(std::string& result) const;
    void dump(std::string& result) const;
};
};
+5 −0
Original line number Original line Diff line number Diff line
@@ -367,6 +367,11 @@ compositionengine::Output::FrameFences Display::presentAndGetFrameFences() {
        return fences;
        return fences;
    }
    }


    {
        ATRACE_NAME("wait for earliest present time");
        std::this_thread::sleep_until(getState().earliestPresentTime);
    }

    auto& hwc = getCompositionEngine().getHwComposer();
    auto& hwc = getCompositionEngine().getHwComposer();
    hwc.presentAndGetReleaseFences(*halDisplayIdOpt);
    hwc.presentAndGetReleaseFences(*halDisplayIdOpt);


+2 −0
Original line number Original line Diff line number Diff line
@@ -711,6 +711,8 @@ void Output::writeCompositionState(const compositionengine::CompositionRefreshAr
        return;
        return;
    }
    }


    editState().earliestPresentTime = refreshArgs.earliestPresentTime;

    sp<GraphicBuffer> previousOverride = nullptr;
    sp<GraphicBuffer> previousOverride = nullptr;
    for (auto* layer : getOutputLayersOrderedByZ()) {
    for (auto* layer : getOutputLayersOrderedByZ()) {
        bool skipLayer = false;
        bool skipLayer = false;
+7 −0
Original line number Original line Diff line number Diff line
@@ -927,4 +927,11 @@ void Scheduler::setPreferredRefreshRateForUid(FrameRateOverride frameRateOverrid
    }
    }
}
}


std::chrono::steady_clock::time_point Scheduler::getPreviousVsyncFrom(
        nsecs_t expectedPresentTime) const {
    const auto presentTime = std::chrono::nanoseconds(expectedPresentTime);
    const auto vsyncPeriod = std::chrono::nanoseconds(mVsyncSchedule.tracker->currentPeriod());
    return std::chrono::steady_clock::time_point(presentTime - vsyncPeriod);
}

} // namespace android
} // namespace android
Loading