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

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

Merge "Improve handling of hwcomposer with unsupported present fences"

parents b0e0a29a 205c6dda
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -1175,7 +1175,7 @@ float FrameTimeline::computeFps(const std::unordered_set<int32_t>& layerIds) {
std::optional<size_t> FrameTimeline::getFirstSignalFenceIndex() const {
std::optional<size_t> FrameTimeline::getFirstSignalFenceIndex() const {
    for (size_t i = 0; i < mPendingPresentFences.size(); i++) {
    for (size_t i = 0; i < mPendingPresentFences.size(); i++) {
        const auto& [fence, _] = mPendingPresentFences[i];
        const auto& [fence, _] = mPendingPresentFences[i];
        if (fence && fence->isValid() && fence->getSignalTime() != Fence::SIGNAL_TIME_PENDING) {
        if (fence && fence->getSignalTime() != Fence::SIGNAL_TIME_PENDING) {
            return i;
            return i;
        }
        }
    }
    }
+3 −1
Original line number Original line Diff line number Diff line
@@ -2514,7 +2514,9 @@ void SurfaceFlinger::postComposition() {
    const TimePoint compositeTime =
    const TimePoint compositeTime =
            TimePoint::fromNs(mCompositionEngine->getLastFrameRefreshTimestamp());
            TimePoint::fromNs(mCompositionEngine->getLastFrameRefreshTimestamp());
    const Duration presentLatency =
    const Duration presentLatency =
            mPresentLatencyTracker.trackPendingFrame(compositeTime, presentFenceTime);
            !getHwComposer().hasCapability(Capability::PRESENT_FENCE_IS_NOT_RELIABLE)
            ? mPresentLatencyTracker.trackPendingFrame(compositeTime, presentFenceTime)
            : Duration::zero();


    const auto& schedule = mScheduler->getVsyncSchedule();
    const auto& schedule = mScheduler->getVsyncSchedule();
    const TimePoint vsyncDeadline = schedule.vsyncDeadlineAfter(presentTime);
    const TimePoint vsyncDeadline = schedule.vsyncDeadlineAfter(presentTime);