diff --git a/include/gui/FrameTimestamps.h b/include/gui/FrameTimestamps.h
index b8bfcd7..6d3bd6c 100644
--- a/include/gui/FrameTimestamps.h
+++ b/include/gui/FrameTimestamps.h
@@ -17,11 +17,20 @@
 #ifndef ANDROID_GUI_FRAMETIMESTAMPS_H
 #define ANDROID_GUI_FRAMETIMESTAMPS_H
 
-#include <utils/Timers.h>
+#include <ui/Fence.h>
 #include <utils/Flattenable.h>
+#include <utils/StrongPointer.h>
+#include <utils/Timers.h>
+
+#include <array>
 
 namespace android {
 
+
+struct FrameEvents;
+class String8;
+
+
 enum class SupportableFrameTimestamps {
     REQUESTED_PRESENT,
     ACQUIRE,
@@ -32,8 +41,14 @@
     RELEASE_TIME,
 };
 
+
+// The timestamps the consumer sends to the producer over binder.
 struct FrameTimestamps : public LightFlattenablePod<FrameTimestamps> {
+    FrameTimestamps() = default;
+    explicit FrameTimestamps(const FrameEvents& fences);
+
     uint64_t frameNumber{0};
+    nsecs_t postedTime{0};
     nsecs_t requestedPresentTime{0};
     nsecs_t acquireTime{0};
     nsecs_t refreshStartTime{0};
@@ -43,5 +58,72 @@
     nsecs_t releaseTime{0};
 };
 
+
+// A collection of timestamps corresponding to a single frame.
+struct FrameEvents {
+    void checkFencesForCompletion();
+    void dump(String8& outString) const;
+
+    bool valid{false};
+    uint64_t frameNumber{0};
+
+    // Whether or not certain points in the frame's life cycle have been
+    // encountered help us determine if timestamps aren't available because
+    // a) we'll just never get them or b) they're not ready yet.
+    bool addPostCompositeCalled{false};
+    bool addRetireCalled{false};
+
+    nsecs_t postedTime{0};
+    nsecs_t requestedPresentTime{0};
+    nsecs_t latchTime{0};
+    nsecs_t firstRefreshStartTime{0};
+    nsecs_t lastRefreshStartTime{0};
+
+    nsecs_t acquireTime{0};
+    nsecs_t gpuCompositionDoneTime{0};
+    nsecs_t displayPresentTime{0};
+    nsecs_t displayRetireTime{0};
+    nsecs_t releaseTime{0};
+
+    sp<Fence> acquireFence{Fence::NO_FENCE};
+    sp<Fence> gpuCompositionDoneFence{Fence::NO_FENCE};
+    sp<Fence> displayPresentFence{Fence::NO_FENCE};
+    sp<Fence> displayRetireFence{Fence::NO_FENCE};
+    sp<Fence> releaseFence{Fence::NO_FENCE};
+};
+
+
+struct NewFrameEventsEntry {
+    uint64_t frameNumber{0};
+    nsecs_t postedTime{0};
+    nsecs_t requestedPresentTime{0};
+    sp<Fence> acquireFence{Fence::NO_FENCE};
+};
+
+
+class FrameEventHistory {
+public:
+    FrameEvents* getFrame(uint64_t frameNumber);
+    FrameEvents* getFrame(uint64_t frameNumber, size_t* iHint);
+    void checkFencesForCompletion();
+    void dump(String8& outString) const;
+
+    void addQueue(const NewFrameEventsEntry& newFrameEntry);
+    void addLatch(uint64_t frameNumber, nsecs_t latchTime);
+    void addPreComposition(uint64_t frameNumber, nsecs_t refreshStartTime);
+    void addPostComposition(uint64_t frameNumber,
+            sp<Fence> gpuCompositionDone, sp<Fence> displayPresent);
+    void addRetire(uint64_t frameNumber, sp<Fence> displayRetire);
+    void addRelease(uint64_t frameNumber, sp<Fence> release);
+
+private:
+    static constexpr size_t MAX_FRAME_HISTORY = 8;
+    std::array<FrameEvents, MAX_FRAME_HISTORY> mFrames;
+    size_t mQueueOffset{0};
+    size_t mCompositionOffset{0};
+    size_t mRetireOffset{0};
+    size_t mReleaseOffset{0};
+};
+
 } // namespace android
 #endif
