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

Side by Side Diff: cc/scheduler/scheduler_state_machine.h

Issue 227413011: Remove old texture path in TextureLayer (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « cc/scheduler/scheduler.cc ('k') | cc/scheduler/scheduler_state_machine.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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 #ifndef CC_SCHEDULER_SCHEDULER_STATE_MACHINE_H_ 5 #ifndef CC_SCHEDULER_SCHEDULER_STATE_MACHINE_H_
6 #define CC_SCHEDULER_SCHEDULER_STATE_MACHINE_H_ 6 #define CC_SCHEDULER_SCHEDULER_STATE_MACHINE_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 enum CommitState { 61 enum CommitState {
62 COMMIT_STATE_IDLE, 62 COMMIT_STATE_IDLE,
63 COMMIT_STATE_BEGIN_MAIN_FRAME_SENT, 63 COMMIT_STATE_BEGIN_MAIN_FRAME_SENT,
64 COMMIT_STATE_BEGIN_MAIN_FRAME_STARTED, 64 COMMIT_STATE_BEGIN_MAIN_FRAME_STARTED,
65 COMMIT_STATE_READY_TO_COMMIT, 65 COMMIT_STATE_READY_TO_COMMIT,
66 COMMIT_STATE_WAITING_FOR_ACTIVATION, 66 COMMIT_STATE_WAITING_FOR_ACTIVATION,
67 COMMIT_STATE_WAITING_FOR_FIRST_DRAW, 67 COMMIT_STATE_WAITING_FOR_FIRST_DRAW,
68 }; 68 };
69 static const char* CommitStateToString(CommitState state); 69 static const char* CommitStateToString(CommitState state);
70 70
71 enum TextureState {
72 LAYER_TEXTURE_STATE_UNLOCKED,
73 LAYER_TEXTURE_STATE_ACQUIRED_BY_MAIN_THREAD,
74 LAYER_TEXTURE_STATE_ACQUIRED_BY_IMPL_THREAD,
75 };
76 static const char* TextureStateToString(TextureState state);
77
78 enum SynchronousReadbackState { 71 enum SynchronousReadbackState {
79 READBACK_STATE_IDLE, 72 READBACK_STATE_IDLE,
80 READBACK_STATE_NEEDS_BEGIN_MAIN_FRAME, 73 READBACK_STATE_NEEDS_BEGIN_MAIN_FRAME,
81 READBACK_STATE_WAITING_FOR_COMMIT, 74 READBACK_STATE_WAITING_FOR_COMMIT,
82 READBACK_STATE_WAITING_FOR_ACTIVATION, 75 READBACK_STATE_WAITING_FOR_ACTIVATION,
83 READBACK_STATE_WAITING_FOR_DRAW_AND_READBACK, 76 READBACK_STATE_WAITING_FOR_DRAW_AND_READBACK,
84 READBACK_STATE_WAITING_FOR_REPLACEMENT_COMMIT, 77 READBACK_STATE_WAITING_FOR_REPLACEMENT_COMMIT,
85 READBACK_STATE_WAITING_FOR_REPLACEMENT_ACTIVATION, 78 READBACK_STATE_WAITING_FOR_REPLACEMENT_ACTIVATION,
86 }; 79 };
87 static const char* SynchronousReadbackStateToString( 80 static const char* SynchronousReadbackStateToString(
(...skipping 22 matching lines...) Expand all
110 ACTION_NONE, 103 ACTION_NONE,
111 ACTION_SEND_BEGIN_MAIN_FRAME, 104 ACTION_SEND_BEGIN_MAIN_FRAME,
112 ACTION_COMMIT, 105 ACTION_COMMIT,
113 ACTION_UPDATE_VISIBLE_TILES, 106 ACTION_UPDATE_VISIBLE_TILES,
114 ACTION_ACTIVATE_PENDING_TREE, 107 ACTION_ACTIVATE_PENDING_TREE,
115 ACTION_DRAW_AND_SWAP_IF_POSSIBLE, 108 ACTION_DRAW_AND_SWAP_IF_POSSIBLE,
116 ACTION_DRAW_AND_SWAP_FORCED, 109 ACTION_DRAW_AND_SWAP_FORCED,
117 ACTION_DRAW_AND_SWAP_ABORT, 110 ACTION_DRAW_AND_SWAP_ABORT,
118 ACTION_DRAW_AND_READBACK, 111 ACTION_DRAW_AND_READBACK,
119 ACTION_BEGIN_OUTPUT_SURFACE_CREATION, 112 ACTION_BEGIN_OUTPUT_SURFACE_CREATION,
120 ACTION_ACQUIRE_LAYER_TEXTURES_FOR_MAIN_THREAD,
121 ACTION_MANAGE_TILES, 113 ACTION_MANAGE_TILES,
122 }; 114 };
123 static const char* ActionToString(Action action); 115 static const char* ActionToString(Action action);
124 116
125 scoped_ptr<base::Value> AsValue() const; 117 scoped_ptr<base::Value> AsValue() const;
126 118
127 Action NextAction() const; 119 Action NextAction() const;
128 void UpdateState(Action action); 120 void UpdateState(Action action);
129 121
130 void CheckInvariants(); 122 void CheckInvariants();
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 // Call this only in response to receiving an ACTION_SEND_BEGIN_MAIN_FRAME 194 // Call this only in response to receiving an ACTION_SEND_BEGIN_MAIN_FRAME
203 // from NextAction. 195 // from NextAction.
204 // Indicates that all painting is complete. 196 // Indicates that all painting is complete.
205 void NotifyReadyToCommit(); 197 void NotifyReadyToCommit();
206 198
207 // Call this only in response to receiving an ACTION_SEND_BEGIN_MAIN_FRAME 199 // Call this only in response to receiving an ACTION_SEND_BEGIN_MAIN_FRAME
208 // from NextAction if the client rejects the BeginMainFrame message. 200 // from NextAction if the client rejects the BeginMainFrame message.
209 // If did_handle is false, then another commit will be retried soon. 201 // If did_handle is false, then another commit will be retried soon.
210 void BeginMainFrameAborted(bool did_handle); 202 void BeginMainFrameAborted(bool did_handle);
211 203
212 // Request exclusive access to the textures that back single buffered
213 // layers on behalf of the main thread. Upon acquisition,
214 // ACTION_DRAW_AND_SWAP_IF_POSSIBLE will not draw until the main thread
215 // releases the
216 // textures to the impl thread by committing the layers.
217 void SetMainThreadNeedsLayerTextures();
218
219 // Set that we can create the first OutputSurface and start the scheduler. 204 // Set that we can create the first OutputSurface and start the scheduler.
220 void SetCanStart() { can_start_ = true; } 205 void SetCanStart() { can_start_ = true; }
221 206
222 void SetSkipNextBeginMainFrameToReduceLatency(); 207 void SetSkipNextBeginMainFrameToReduceLatency();
223 208
224 // Indicates whether drawing would, at this time, make sense. 209 // Indicates whether drawing would, at this time, make sense.
225 // CanDraw can be used to suppress flashes or checkerboarding 210 // CanDraw can be used to suppress flashes or checkerboarding
226 // when such behavior would be undesirable. 211 // when such behavior would be undesirable.
227 void SetCanDraw(bool can); 212 void SetCanDraw(bool can);
228 213
(...skipping 26 matching lines...) Expand all
255 bool BeginImplFrameNeededToDraw() const; 240 bool BeginImplFrameNeededToDraw() const;
256 bool ProactiveBeginImplFrameWanted() const; 241 bool ProactiveBeginImplFrameWanted() const;
257 242
258 // True if we need to force activations to make forward progress. 243 // True if we need to force activations to make forward progress.
259 bool PendingActivationsShouldBeForced() const; 244 bool PendingActivationsShouldBeForced() const;
260 245
261 bool ShouldBeginOutputSurfaceCreation() const; 246 bool ShouldBeginOutputSurfaceCreation() const;
262 bool ShouldDrawForced() const; 247 bool ShouldDrawForced() const;
263 bool ShouldDraw() const; 248 bool ShouldDraw() const;
264 bool ShouldActivatePendingTree() const; 249 bool ShouldActivatePendingTree() const;
265 bool ShouldAcquireLayerTexturesForMainThread() const;
266 bool ShouldUpdateVisibleTiles() const; 250 bool ShouldUpdateVisibleTiles() const;
267 bool ShouldSendBeginMainFrame() const; 251 bool ShouldSendBeginMainFrame() const;
268 bool ShouldCommit() const; 252 bool ShouldCommit() const;
269 bool ShouldManageTiles() const; 253 bool ShouldManageTiles() const;
270 254
271 void AdvanceCurrentFrameNumber(); 255 void AdvanceCurrentFrameNumber();
272 bool HasSentBeginMainFrameThisFrame() const; 256 bool HasSentBeginMainFrameThisFrame() const;
273 bool HasScheduledManageTilesThisFrame() const; 257 bool HasScheduledManageTilesThisFrame() const;
274 bool HasUpdatedVisibleTilesThisFrame() const; 258 bool HasUpdatedVisibleTilesThisFrame() const;
275 bool HasSwappedThisFrame() const; 259 bool HasSwappedThisFrame() const;
276 260
277 void UpdateStateOnCommit(bool commit_was_aborted); 261 void UpdateStateOnCommit(bool commit_was_aborted);
278 void UpdateStateOnActivation(); 262 void UpdateStateOnActivation();
279 void UpdateStateOnDraw(bool did_swap); 263 void UpdateStateOnDraw(bool did_swap);
280 void UpdateStateOnManageTiles(); 264 void UpdateStateOnManageTiles();
281 265
282 const SchedulerSettings settings_; 266 const SchedulerSettings settings_;
283 267
284 OutputSurfaceState output_surface_state_; 268 OutputSurfaceState output_surface_state_;
285 BeginImplFrameState begin_impl_frame_state_; 269 BeginImplFrameState begin_impl_frame_state_;
286 CommitState commit_state_; 270 CommitState commit_state_;
287 TextureState texture_state_;
288 ForcedRedrawOnTimeoutState forced_redraw_state_; 271 ForcedRedrawOnTimeoutState forced_redraw_state_;
289 SynchronousReadbackState readback_state_; 272 SynchronousReadbackState readback_state_;
290 273
291 BeginFrameArgs last_begin_impl_frame_args_; 274 BeginFrameArgs last_begin_impl_frame_args_;
292 275
293 int commit_count_; 276 int commit_count_;
294 int current_frame_number_; 277 int current_frame_number_;
295 int last_frame_number_swap_performed_; 278 int last_frame_number_swap_performed_;
296 int last_frame_number_begin_main_frame_sent_; 279 int last_frame_number_begin_main_frame_sent_;
297 int last_frame_number_update_visible_tiles_was_called_; 280 int last_frame_number_update_visible_tiles_was_called_;
298 281
299 // manage_tiles_funnel_ is "filled" each time ManageTiles is called 282 // manage_tiles_funnel_ is "filled" each time ManageTiles is called
300 // and "drained" on each BeginImplFrame. If the funnel gets too full, 283 // and "drained" on each BeginImplFrame. If the funnel gets too full,
301 // we start throttling ACTION_MANAGE_TILES such that we average one 284 // we start throttling ACTION_MANAGE_TILES such that we average one
302 // ManageTile per BeginImplFrame. 285 // ManageTile per BeginImplFrame.
303 int manage_tiles_funnel_; 286 int manage_tiles_funnel_;
304 int consecutive_checkerboard_animations_; 287 int consecutive_checkerboard_animations_;
305 bool needs_redraw_; 288 bool needs_redraw_;
306 bool needs_manage_tiles_; 289 bool needs_manage_tiles_;
307 bool swap_used_incomplete_tile_; 290 bool swap_used_incomplete_tile_;
308 bool needs_commit_; 291 bool needs_commit_;
309 bool main_thread_needs_layer_textures_;
310 bool inside_poll_for_anticipated_draw_triggers_; 292 bool inside_poll_for_anticipated_draw_triggers_;
311 bool visible_; 293 bool visible_;
312 bool can_start_; 294 bool can_start_;
313 bool can_draw_; 295 bool can_draw_;
314 bool has_pending_tree_; 296 bool has_pending_tree_;
315 bool pending_tree_is_ready_for_activation_; 297 bool pending_tree_is_ready_for_activation_;
316 bool active_tree_needs_first_draw_; 298 bool active_tree_needs_first_draw_;
317 bool draw_if_possible_failed_; 299 bool draw_if_possible_failed_;
318 bool did_create_and_initialize_first_output_surface_; 300 bool did_create_and_initialize_first_output_surface_;
319 bool smoothness_takes_priority_; 301 bool smoothness_takes_priority_;
320 bool skip_next_begin_main_frame_to_reduce_latency_; 302 bool skip_next_begin_main_frame_to_reduce_latency_;
321 bool skip_begin_main_frame_to_reduce_latency_; 303 bool skip_begin_main_frame_to_reduce_latency_;
322 bool continuous_painting_; 304 bool continuous_painting_;
323 bool needs_back_to_back_readback_; 305 bool needs_back_to_back_readback_;
324 306
325 private: 307 private:
326 DISALLOW_COPY_AND_ASSIGN(SchedulerStateMachine); 308 DISALLOW_COPY_AND_ASSIGN(SchedulerStateMachine);
327 }; 309 };
328 310
329 } // namespace cc 311 } // namespace cc
330 312
331 #endif // CC_SCHEDULER_SCHEDULER_STATE_MACHINE_H_ 313 #endif // CC_SCHEDULER_SCHEDULER_STATE_MACHINE_H_
OLDNEW
« no previous file with comments | « cc/scheduler/scheduler.cc ('k') | cc/scheduler/scheduler_state_machine.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698