Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(496)

Side by Side Diff: cc/output/begin_frame_args.cc

Issue 1165853002: Pipe impl_latency_takes_priority_ to the RenderScheduler. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/output/begin_frame_args.h" 5 #include "cc/output/begin_frame_args.h"
6 6
7 #include "base/trace_event/trace_event_argument.h" 7 #include "base/trace_event/trace_event_argument.h"
8 8
9 namespace cc { 9 namespace cc {
10 10
11 const char* BeginFrameArgs::TypeToString(BeginFrameArgsType type) { 11 const char* BeginFrameArgs::TypeToString(BeginFrameArgsType type) {
12 switch (type) { 12 switch (type) {
13 case BeginFrameArgs::INVALID: 13 case BeginFrameArgs::INVALID:
14 return "INVALID"; 14 return "INVALID";
15 case BeginFrameArgs::NORMAL: 15 case BeginFrameArgs::NORMAL:
16 return "NORMAL"; 16 return "NORMAL";
17 case BeginFrameArgs::MISSED: 17 case BeginFrameArgs::MISSED:
18 return "MISSED"; 18 return "MISSED";
19 case BeginFrameArgs::BEGIN_FRAME_ARGS_TYPE_MAX: 19 case BeginFrameArgs::BEGIN_FRAME_ARGS_TYPE_MAX:
20 return "BEGIN_FRAME_ARGS_TYPE_MAX"; 20 return "BEGIN_FRAME_ARGS_TYPE_MAX";
21 } 21 }
22 NOTREACHED(); 22 NOTREACHED();
23 return "???"; 23 return "???";
24 } 24 }
25 25
26 BeginFrameArgs::BeginFrameArgs() 26 BeginFrameArgs::BeginFrameArgs()
27 : frame_time(base::TimeTicks()), 27 : frame_time(base::TimeTicks()),
28 deadline(base::TimeTicks()), 28 deadline(base::TimeTicks()),
29 interval(base::TimeDelta::FromMicroseconds(-1)), 29 interval(base::TimeDelta::FromMicroseconds(-1)),
30 type(BeginFrameArgs::INVALID) { 30 type(BeginFrameArgs::INVALID),
31 on_critical_path(false) {
Sami 2015/06/08 11:47:53 I'm wondering if we should default this to true an
alex clarke (OOO till 29th) 2015/06/08 16:58:07 Done.
31 } 32 }
32 33
33 BeginFrameArgs::BeginFrameArgs(base::TimeTicks frame_time, 34 BeginFrameArgs::BeginFrameArgs(base::TimeTicks frame_time,
34 base::TimeTicks deadline, 35 base::TimeTicks deadline,
35 base::TimeDelta interval, 36 base::TimeDelta interval,
36 BeginFrameArgs::BeginFrameArgsType type) 37 BeginFrameArgs::BeginFrameArgsType type,
38 bool on_critical_path)
37 : frame_time(frame_time), 39 : frame_time(frame_time),
38 deadline(deadline), 40 deadline(deadline),
39 interval(interval), 41 interval(interval),
40 type(type) { 42 type(type),
43 on_critical_path(on_critical_path) {
41 } 44 }
42 45
43 BeginFrameArgs BeginFrameArgs::Create(BeginFrameArgs::CreationLocation location, 46 BeginFrameArgs BeginFrameArgs::Create(BeginFrameArgs::CreationLocation location,
44 base::TimeTicks frame_time, 47 base::TimeTicks frame_time,
45 base::TimeTicks deadline, 48 base::TimeTicks deadline,
46 base::TimeDelta interval, 49 base::TimeDelta interval,
47 BeginFrameArgs::BeginFrameArgsType type) { 50 BeginFrameArgs::BeginFrameArgsType type,
51 bool on_critical_path) {
48 DCHECK_NE(type, BeginFrameArgs::INVALID); 52 DCHECK_NE(type, BeginFrameArgs::INVALID);
49 DCHECK_NE(type, BeginFrameArgs::BEGIN_FRAME_ARGS_TYPE_MAX); 53 DCHECK_NE(type, BeginFrameArgs::BEGIN_FRAME_ARGS_TYPE_MAX);
50 #ifdef NDEBUG 54 #ifdef NDEBUG
51 return BeginFrameArgs(frame_time, deadline, interval, type); 55 return BeginFrameArgs(frame_time, deadline, interval, type, on_critical_path);
52 #else 56 #else
53 BeginFrameArgs args = BeginFrameArgs(frame_time, deadline, interval, type); 57 BeginFrameArgs args =
58 BeginFrameArgs(frame_time, deadline, interval, type, on_critical_path);
54 args.created_from = location; 59 args.created_from = location;
55 return args; 60 return args;
56 #endif 61 #endif
57 } 62 }
58 63
59 scoped_refptr<base::trace_event::ConvertableToTraceFormat> 64 scoped_refptr<base::trace_event::ConvertableToTraceFormat>
60 BeginFrameArgs::AsValue() const { 65 BeginFrameArgs::AsValue() const {
61 scoped_refptr<base::trace_event::TracedValue> state = 66 scoped_refptr<base::trace_event::TracedValue> state =
62 new base::trace_event::TracedValue(); 67 new base::trace_event::TracedValue();
63 AsValueInto(state.get()); 68 AsValueInto(state.get());
64 return state; 69 return state;
65 } 70 }
66 71
67 void BeginFrameArgs::AsValueInto(base::trace_event::TracedValue* state) const { 72 void BeginFrameArgs::AsValueInto(base::trace_event::TracedValue* state) const {
68 state->SetString("type", "BeginFrameArgs"); 73 state->SetString("type", "BeginFrameArgs");
69 state->SetString("subtype", TypeToString(type)); 74 state->SetString("subtype", TypeToString(type));
70 state->SetDouble("frame_time_us", frame_time.ToInternalValue()); 75 state->SetDouble("frame_time_us", frame_time.ToInternalValue());
71 state->SetDouble("deadline_us", deadline.ToInternalValue()); 76 state->SetDouble("deadline_us", deadline.ToInternalValue());
72 state->SetDouble("interval_us", interval.InMicroseconds()); 77 state->SetDouble("interval_us", interval.InMicroseconds());
73 #ifndef NDEBUG 78 #ifndef NDEBUG
74 state->SetString("created_from", created_from.ToString()); 79 state->SetString("created_from", created_from.ToString());
75 #endif 80 #endif
81 state->SetBoolean("on_critical_path", on_critical_path);
76 } 82 }
77 83
78 // This is a hard-coded deadline adjustment that assumes 60Hz, to be used in 84 // This is a hard-coded deadline adjustment that assumes 60Hz, to be used in
79 // cases where a good estimated draw time is not known. Using 1/3 of the vsync 85 // cases where a good estimated draw time is not known. Using 1/3 of the vsync
80 // as the default adjustment gives the Browser the last 1/3 of a frame to 86 // as the default adjustment gives the Browser the last 1/3 of a frame to
81 // produce output, the Renderer Impl thread the middle 1/3 of a frame to produce 87 // produce output, the Renderer Impl thread the middle 1/3 of a frame to produce
82 // ouput, and the Renderer Main thread the first 1/3 of a frame to produce 88 // ouput, and the Renderer Main thread the first 1/3 of a frame to produce
83 // output. 89 // output.
84 base::TimeDelta BeginFrameArgs::DefaultEstimatedParentDrawTime() { 90 base::TimeDelta BeginFrameArgs::DefaultEstimatedParentDrawTime() {
85 return base::TimeDelta::FromMicroseconds(16666 / 3); 91 return base::TimeDelta::FromMicroseconds(16666 / 3);
86 } 92 }
87 93
88 base::TimeDelta BeginFrameArgs::DefaultInterval() { 94 base::TimeDelta BeginFrameArgs::DefaultInterval() {
89 return base::TimeDelta::FromMicroseconds(16666); 95 return base::TimeDelta::FromMicroseconds(16666);
90 } 96 }
91 97
92 } // namespace cc 98 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698