Loading libs/gui/DisplayEventDispatcher.cpp +1 −0 Original line number Original line Diff line number Diff line Loading @@ -152,6 +152,7 @@ bool DisplayEventDispatcher::processPendingEvents(nsecs_t* outTimestamp, *outCount = ev.vsync.count; *outCount = ev.vsync.count; outVsyncEventData->id = ev.vsync.vsyncId; outVsyncEventData->id = ev.vsync.vsyncId; outVsyncEventData->deadlineTimestamp = ev.vsync.deadlineTimestamp; outVsyncEventData->deadlineTimestamp = ev.vsync.deadlineTimestamp; outVsyncEventData->frameInterval = ev.vsync.frameInterval; break; break; case DisplayEventReceiver::DISPLAY_EVENT_HOTPLUG: case DisplayEventReceiver::DISPLAY_EVENT_HOTPLUG: dispatchHotplug(ev.header.timestamp, ev.header.displayId, ev.hotplug.connected); dispatchHotplug(ev.header.timestamp, ev.header.displayId, ev.hotplug.connected); Loading libs/gui/include/gui/DisplayEventDispatcher.h +3 −0 Original line number Original line Diff line number Diff line Loading @@ -30,6 +30,9 @@ struct VsyncEventData { // The deadline in CLOCK_MONOTONIC that the app needs to complete its // The deadline in CLOCK_MONOTONIC that the app needs to complete its // frame by (both on the CPU and the GPU) // frame by (both on the CPU and the GPU) int64_t deadlineTimestamp = std::numeric_limits<int64_t>::max(); int64_t deadlineTimestamp = std::numeric_limits<int64_t>::max(); // The current frame interval in ns when this frame was scheduled. int64_t frameInterval = 0; }; }; class DisplayEventDispatcher : public LooperCallback { class DisplayEventDispatcher : public LooperCallback { Loading libs/gui/include/gui/DisplayEventReceiver.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -75,6 +75,7 @@ public: uint32_t count; uint32_t count; nsecs_t expectedVSyncTimestamp __attribute__((aligned(8))); nsecs_t expectedVSyncTimestamp __attribute__((aligned(8))); nsecs_t deadlineTimestamp __attribute__((aligned(8))); nsecs_t deadlineTimestamp __attribute__((aligned(8))); nsecs_t frameInterval __attribute__((aligned(8))); int64_t vsyncId; int64_t vsyncId; }; }; Loading libs/gui/tests/DisplayEventStructLayout_test.cpp +2 −1 Original line number Original line Diff line number Diff line Loading @@ -34,7 +34,8 @@ TEST(DisplayEventStructLayoutTest, TestEventAlignment) { CHECK_OFFSET(DisplayEventReceiver::Event::VSync, count, 0); CHECK_OFFSET(DisplayEventReceiver::Event::VSync, count, 0); CHECK_OFFSET(DisplayEventReceiver::Event::VSync, expectedVSyncTimestamp, 8); CHECK_OFFSET(DisplayEventReceiver::Event::VSync, expectedVSyncTimestamp, 8); CHECK_OFFSET(DisplayEventReceiver::Event::VSync, deadlineTimestamp, 16); CHECK_OFFSET(DisplayEventReceiver::Event::VSync, deadlineTimestamp, 16); CHECK_OFFSET(DisplayEventReceiver::Event::VSync, vsyncId, 24); CHECK_OFFSET(DisplayEventReceiver::Event::VSync, frameInterval, 24); CHECK_OFFSET(DisplayEventReceiver::Event::VSync, vsyncId, 32); CHECK_OFFSET(DisplayEventReceiver::Event::Hotplug, connected, 0); CHECK_OFFSET(DisplayEventReceiver::Event::Hotplug, connected, 0); Loading libs/nativedisplay/AChoreographer.cpp +9 −1 Original line number Original line Diff line number Diff line Loading @@ -130,7 +130,7 @@ public: virtual ~Choreographer() override EXCLUDES(gChoreographers.lock); virtual ~Choreographer() override EXCLUDES(gChoreographers.lock); int64_t getVsyncId() const; int64_t getVsyncId() const; int64_t getFrameDeadline() const; int64_t getFrameDeadline() const; int64_t getFrameInterval() const; private: private: Choreographer(const Choreographer&) = delete; Choreographer(const Choreographer&) = delete; Loading Loading @@ -418,6 +418,10 @@ int64_t Choreographer::getFrameDeadline() const { return mLastVsyncEventData.deadlineTimestamp; return mLastVsyncEventData.deadlineTimestamp; } } int64_t Choreographer::getFrameInterval() const { return mLastVsyncEventData.frameInterval; } } // namespace android } // namespace android using namespace android; using namespace android; Loading Loading @@ -501,6 +505,10 @@ int64_t AChoreographer_getFrameDeadline(const AChoreographer* choreographer) { return AChoreographer_to_Choreographer(choreographer)->getFrameDeadline(); return AChoreographer_to_Choreographer(choreographer)->getFrameDeadline(); } } int64_t AChoreographer_getFrameInterval(const AChoreographer* choreographer) { return AChoreographer_to_Choreographer(choreographer)->getFrameInterval(); } } // namespace android } // namespace android /* Glue for the NDK interface */ /* Glue for the NDK interface */ Loading Loading
libs/gui/DisplayEventDispatcher.cpp +1 −0 Original line number Original line Diff line number Diff line Loading @@ -152,6 +152,7 @@ bool DisplayEventDispatcher::processPendingEvents(nsecs_t* outTimestamp, *outCount = ev.vsync.count; *outCount = ev.vsync.count; outVsyncEventData->id = ev.vsync.vsyncId; outVsyncEventData->id = ev.vsync.vsyncId; outVsyncEventData->deadlineTimestamp = ev.vsync.deadlineTimestamp; outVsyncEventData->deadlineTimestamp = ev.vsync.deadlineTimestamp; outVsyncEventData->frameInterval = ev.vsync.frameInterval; break; break; case DisplayEventReceiver::DISPLAY_EVENT_HOTPLUG: case DisplayEventReceiver::DISPLAY_EVENT_HOTPLUG: dispatchHotplug(ev.header.timestamp, ev.header.displayId, ev.hotplug.connected); dispatchHotplug(ev.header.timestamp, ev.header.displayId, ev.hotplug.connected); Loading
libs/gui/include/gui/DisplayEventDispatcher.h +3 −0 Original line number Original line Diff line number Diff line Loading @@ -30,6 +30,9 @@ struct VsyncEventData { // The deadline in CLOCK_MONOTONIC that the app needs to complete its // The deadline in CLOCK_MONOTONIC that the app needs to complete its // frame by (both on the CPU and the GPU) // frame by (both on the CPU and the GPU) int64_t deadlineTimestamp = std::numeric_limits<int64_t>::max(); int64_t deadlineTimestamp = std::numeric_limits<int64_t>::max(); // The current frame interval in ns when this frame was scheduled. int64_t frameInterval = 0; }; }; class DisplayEventDispatcher : public LooperCallback { class DisplayEventDispatcher : public LooperCallback { Loading
libs/gui/include/gui/DisplayEventReceiver.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -75,6 +75,7 @@ public: uint32_t count; uint32_t count; nsecs_t expectedVSyncTimestamp __attribute__((aligned(8))); nsecs_t expectedVSyncTimestamp __attribute__((aligned(8))); nsecs_t deadlineTimestamp __attribute__((aligned(8))); nsecs_t deadlineTimestamp __attribute__((aligned(8))); nsecs_t frameInterval __attribute__((aligned(8))); int64_t vsyncId; int64_t vsyncId; }; }; Loading
libs/gui/tests/DisplayEventStructLayout_test.cpp +2 −1 Original line number Original line Diff line number Diff line Loading @@ -34,7 +34,8 @@ TEST(DisplayEventStructLayoutTest, TestEventAlignment) { CHECK_OFFSET(DisplayEventReceiver::Event::VSync, count, 0); CHECK_OFFSET(DisplayEventReceiver::Event::VSync, count, 0); CHECK_OFFSET(DisplayEventReceiver::Event::VSync, expectedVSyncTimestamp, 8); CHECK_OFFSET(DisplayEventReceiver::Event::VSync, expectedVSyncTimestamp, 8); CHECK_OFFSET(DisplayEventReceiver::Event::VSync, deadlineTimestamp, 16); CHECK_OFFSET(DisplayEventReceiver::Event::VSync, deadlineTimestamp, 16); CHECK_OFFSET(DisplayEventReceiver::Event::VSync, vsyncId, 24); CHECK_OFFSET(DisplayEventReceiver::Event::VSync, frameInterval, 24); CHECK_OFFSET(DisplayEventReceiver::Event::VSync, vsyncId, 32); CHECK_OFFSET(DisplayEventReceiver::Event::Hotplug, connected, 0); CHECK_OFFSET(DisplayEventReceiver::Event::Hotplug, connected, 0); Loading
libs/nativedisplay/AChoreographer.cpp +9 −1 Original line number Original line Diff line number Diff line Loading @@ -130,7 +130,7 @@ public: virtual ~Choreographer() override EXCLUDES(gChoreographers.lock); virtual ~Choreographer() override EXCLUDES(gChoreographers.lock); int64_t getVsyncId() const; int64_t getVsyncId() const; int64_t getFrameDeadline() const; int64_t getFrameDeadline() const; int64_t getFrameInterval() const; private: private: Choreographer(const Choreographer&) = delete; Choreographer(const Choreographer&) = delete; Loading Loading @@ -418,6 +418,10 @@ int64_t Choreographer::getFrameDeadline() const { return mLastVsyncEventData.deadlineTimestamp; return mLastVsyncEventData.deadlineTimestamp; } } int64_t Choreographer::getFrameInterval() const { return mLastVsyncEventData.frameInterval; } } // namespace android } // namespace android using namespace android; using namespace android; Loading Loading @@ -501,6 +505,10 @@ int64_t AChoreographer_getFrameDeadline(const AChoreographer* choreographer) { return AChoreographer_to_Choreographer(choreographer)->getFrameDeadline(); return AChoreographer_to_Choreographer(choreographer)->getFrameDeadline(); } } int64_t AChoreographer_getFrameInterval(const AChoreographer* choreographer) { return AChoreographer_to_Choreographer(choreographer)->getFrameInterval(); } } // namespace android } // namespace android /* Glue for the NDK interface */ /* Glue for the NDK interface */ Loading