SurfaceFlinger: Shared timeline plumbing

Add plumbing to get shared timeline data from Surface Flinger to HWUI
and back.

Bug: 162890382
Bug: 162888881

Test: SF unit tests
Change-Id: Ifb76e6bf28d43c051e6c8ff568437ec9a106b865
diff --git a/services/surfaceflinger/Layer.h b/services/surfaceflinger/Layer.h
index 913f13a..f77a828 100644
--- a/services/surfaceflinger/Layer.h
+++ b/services/surfaceflinger/Layer.h
@@ -822,6 +822,8 @@
 
     bool setFrameRate(FrameRate);
 
+    void setFrameTimelineVsync(int64_t frameTimelineVsyncId);
+
     // Creates a new handle each time, so we only expect
     // this to be called once.
     sp<IBinder> getHandle();
@@ -1022,6 +1024,8 @@
     // Can only be accessed with the SF state lock held.
     bool mChildrenChanged{false};
 
+    std::optional<int64_t> mFrameTimelineVsyncId;
+
     // Window types from WindowManager.LayoutParams
     const InputWindowInfo::Type mWindowType;