summaryrefslogtreecommitdiff
path: root/include/ui/Fence.h
diff options
context:
space:
mode:
author Brian Anderson <brianderson@google.com> 2016-09-21 16:53:28 -0700
committer Brian Anderson <brianderson@google.com> 2016-11-17 11:46:20 -0800
commit221de2a33d456738f7f64db0b015a960211d4834 (patch)
tree0ad10e90d9193386452ee568eafba8bbc3735481 /include/ui/Fence.h
parent7c3ba8aa288755fad78ddbabcee0ad5a0610ac1c (diff)
Add Fence helpers: Time, Timeline, Snapshot
FenceTime will be used to: 1) Cache and share the result of a Fence's getSignalTime with all clients that care about it, instead of requiring a syscall for each client. 2) Allow tests to override the valid state and signalTimes of the underlying fence by acting as a shim. FenceTimeline will be used to efficiently get the signal times of Fences without having query for Fences that likely haven't signaled. FenceTime::Snapshot is a stable copy of a FenceTime that can be used for serialization since it doesn't change while flattening. Test: adb shell /data/nativetest/libgui_test/libgui_test --gtest_filter=*GetFrameTimestamps* Change-Id: I9a28df7ce797311dc4d56b1147edf590e9de1517
Diffstat (limited to 'include/ui/Fence.h')
-rw-r--r--include/ui/Fence.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/include/ui/Fence.h b/include/ui/Fence.h
index 1df15f897c..99b39d8423 100644
--- a/include/ui/Fence.h
+++ b/include/ui/Fence.h
@@ -42,6 +42,11 @@ class Fence
{
public:
static const sp<Fence> NO_FENCE;
+ static constexpr nsecs_t SIGNAL_TIME_PENDING = INT64_MAX;
+ static constexpr nsecs_t SIGNAL_TIME_INVALID = -1;
+ static inline bool isValidTimestamp(nsecs_t time) {
+ return time >= 0 && time < INT64_MAX;
+ }
// TIMEOUT_NEVER may be passed to the wait method to indicate that it
// should wait indefinitely for the fence to signal.
@@ -94,8 +99,8 @@ public:
// getSignalTime returns the system monotonic clock time at which the
// fence transitioned to the signaled state. If the fence is not signaled
- // then INT64_MAX is returned. If the fence is invalid or if an error
- // occurs then -1 is returned.
+ // then SIGNAL_TIME_PENDING is returned. If the fence is invalid or if an
+ // error occurs then SIGNAL_TIME_INVALID is returned.
nsecs_t getSignalTime() const;
#if __cplusplus > 201103L