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

Commit ff07c8fd authored by Alec Mouri's avatar Alec Mouri
Browse files

[HWUI] use native_window timestamp apis

These aren't finalized as stable yet until we sort out some BufferQueue
challenges.

Bug: 137012798
Test: builds
Change-Id: Icd5eb02afc4cf16a2be485e6710f71818b300b9d
parent 6521c744
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -174,7 +174,7 @@ void CanvasContext::setSurface(sp<Surface>&& surface, bool enableTimeout) {
        // Enable frame stats after the surface has been bound to the appropriate graphics API.
        // Order is important when new and old surfaces are the same, because old surface has
        // its frame stats disabled automatically.
        mNativeSurface->enableFrameTimestamps(true);
        native_window_enable_frame_timestamps(mNativeSurface->getNativeWindow(), true);
    } else {
        mRenderThread.removeFrameCallback(this);
        mGenerationID++;
@@ -556,8 +556,9 @@ void CanvasContext::draw() {
        FrameInfo* forthBehind = mLast4FrameInfos.front().first;
        int64_t composedFrameId = mLast4FrameInfos.front().second;
        nsecs_t acquireTime = -1;
        mNativeSurface->getFrameTimestamps(composedFrameId, nullptr, &acquireTime, nullptr, nullptr,
            nullptr, nullptr, nullptr, nullptr, nullptr);
        native_window_get_frame_timestamps(mNativeSurface->getNativeWindow(), composedFrameId,
                                           nullptr, &acquireTime, nullptr, nullptr, nullptr,
                                           nullptr, nullptr, nullptr, nullptr);
        // Ignore default -1, NATIVE_WINDOW_TIMESTAMP_INVALID and NATIVE_WINDOW_TIMESTAMP_PENDING
        forthBehind->set(FrameInfoIndex::GpuCompleted) = acquireTime > 0 ? acquireTime : -1;
        mJankTracker.finishGpuDraw(*forthBehind);
+0 −15
Original line number Diff line number Diff line
@@ -49,21 +49,6 @@ public:
        return ret;
    }

    status_t getFrameTimestamps(uint64_t frameNumber,
            nsecs_t* outRequestedPresentTime, nsecs_t* outAcquireTime,
            nsecs_t* outLatchTime, nsecs_t* outFirstRefreshStartTime,
            nsecs_t* outLastRefreshStartTime, nsecs_t* outGlCompositionDoneTime,
            nsecs_t* outDisplayPresentTime, nsecs_t* outDequeueReadyTime,
            nsecs_t* outReleaseTime) {
        return mSurface->getFrameTimestamps(frameNumber, outRequestedPresentTime, outAcquireTime,
            outLatchTime, outFirstRefreshStartTime, outLastRefreshStartTime,
            outGlCompositionDoneTime, outDisplayPresentTime, outDequeueReadyTime, outReleaseTime);
    }

    void enableFrameTimestamps(bool enable) {
        return mSurface->enableFrameTimestamps(enable);
    }

private:
    sp<Surface> mSurface;