Index: cc/output/begin_frame_args.h |
diff --git a/cc/output/begin_frame_args.h b/cc/output/begin_frame_args.h |
index 78ddce99ddfcde3c4508f1d706d4b1eb205ff89f..9352b1c890b62dca5d2e3a5dca5a9202718a1f3d 100644 |
--- a/cc/output/begin_frame_args.h |
+++ b/cc/output/begin_frame_args.h |
@@ -5,6 +5,8 @@ |
#ifndef CC_OUTPUT_BEGIN_FRAME_ARGS_H_ |
#define CC_OUTPUT_BEGIN_FRAME_ARGS_H_ |
+#include <stdint.h> |
+ |
#include <memory> |
#include "base/location.h" |
@@ -63,6 +65,8 @@ struct CC_EXPORT BeginFrameArgs { |
// created by searching for "BeginFrameArgs::Create". |
// The location argument should **always** be BEGINFRAME_FROM_HERE macro. |
static BeginFrameArgs Create(CreationLocation location, |
+ uint64_t source_id, |
+ uint64_t sequence_number, |
base::TimeTicks frame_time, |
base::TimeTicks deadline, |
base::TimeDelta interval, |
@@ -81,6 +85,8 @@ struct CC_EXPORT BeginFrameArgs { |
std::unique_ptr<base::trace_event::ConvertableToTraceFormat> AsValue() const; |
void AsValueInto(base::trace_event::TracedValue* dict) const; |
+ uint64_t source_id; |
+ uint64_t sequence_number; |
base::TimeTicks frame_time; |
base::TimeTicks deadline; |
base::TimeDelta interval; |
@@ -88,12 +94,50 @@ struct CC_EXPORT BeginFrameArgs { |
bool on_critical_path; |
private: |
- BeginFrameArgs(base::TimeTicks frame_time, |
+ BeginFrameArgs(uint64_t source_id, |
+ uint64_t sequence_number, |
+ base::TimeTicks frame_time, |
base::TimeTicks deadline, |
base::TimeDelta interval, |
BeginFrameArgsType type); |
}; |
+// Sent by a BeginFrameObserver as acknowledgment of completing a BeginFrame. |
+struct CC_EXPORT BeginFrameAck { |
+ BeginFrameAck(); |
+ BeginFrameAck(uint64_t source_id, |
+ uint64_t sequence_number, |
+ uint64_t oldest_incorporated_frame, |
+ uint32_t remaining_frames, |
+ bool has_updates); |
+ |
+ // Source identifier of the BeginFrame that is acknowledged. |
+ uint64_t source_id; |
+ |
+ // Sequence number of the BeginFrame that is acknowledged. |
+ uint64_t sequence_number; |
+ |
+ // Sequence number of the oldest frame that contributed contents to the last |
+ // update the consumer sent. It describes the "staleness" of the last update. |
+ // Note that the last update may remain "fresh" even if the consumer did not |
+ // produce an update for this frame (|has_updates == false|): If the consumer |
+ // does not have any pending updates for a frame, the frame will be considered |
+ // to have contributed its contents to the last update. |
+ // |
+ // The compositor Scheduler indicates the latest frame that both an impl and |
+ // main frame contributed to (or didn't have any updates). The |
+ // DisplayScheduler indicates the minimum oldest_incorporated_frame that all |
+ // its BeginFrameObservers acknowledged. |
+ uint64_t oldest_incorporated_frame; |
+ |
+ // Number of BeginFrames queued at the observer at time of acknowledgment. |
+ uint32_t remaining_frames; |
+ |
+ // |true| if the consumer has produced updates (e.g. sent a CompositorFrame or |
+ // damaged a surface) as part of responding to the BeginFrame. |
+ bool has_updates; |
+}; |
+ |
} // namespace cc |
#endif // CC_OUTPUT_BEGIN_FRAME_ARGS_H_ |