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

Side by Side Diff: ui/compositor/compositor.h

Issue 738983002: Move output surface fallback from cc to embedders (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 6 years 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 UI_COMPOSITOR_COMPOSITOR_H_ 5 #ifndef UI_COMPOSITOR_COMPOSITOR_H_
6 #define UI_COMPOSITOR_COMPOSITOR_H_ 6 #define UI_COMPOSITOR_COMPOSITOR_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/containers/hash_tables.h" 10 #include "base/containers/hash_tables.h"
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 public: 67 public:
68 virtual ~ContextFactory() {} 68 virtual ~ContextFactory() {}
69 69
70 // Creates an output surface for the given compositor. The factory may keep 70 // Creates an output surface for the given compositor. The factory may keep
71 // per-compositor data (e.g. a shared context), that needs to be cleaned up 71 // per-compositor data (e.g. a shared context), that needs to be cleaned up
72 // by calling RemoveCompositor when the compositor gets destroyed. 72 // by calling RemoveCompositor when the compositor gets destroyed.
73 virtual void CreateOutputSurface(base::WeakPtr<Compositor> compositor, 73 virtual void CreateOutputSurface(base::WeakPtr<Compositor> compositor,
74 bool software_fallback) = 0; 74 bool software_fallback) = 0;
75 75
76 // Creates a reflector that copies the content of the |mirrored_compositor| 76 // Creates a reflector that copies the content of the |mirrored_compositor|
77 // onto |mirroing_layer|. 77 // onto |mirroring_layer|.
78 virtual scoped_refptr<Reflector> CreateReflector( 78 virtual scoped_refptr<Reflector> CreateReflector(
79 Compositor* mirrored_compositor, 79 Compositor* mirrored_compositor,
80 Layer* mirroring_layer) = 0; 80 Layer* mirroring_layer) = 0;
81 // Removes the reflector, which stops the mirroring. 81 // Removes the reflector, which stops the mirroring.
82 virtual void RemoveReflector(scoped_refptr<Reflector> reflector) = 0; 82 virtual void RemoveReflector(scoped_refptr<Reflector> reflector) = 0;
83 83
84 // Return a reference to a shared offscreen context provider usable from the 84 // Return a reference to a shared offscreen context provider usable from the
85 // main thread. 85 // main thread.
86 virtual scoped_refptr<cc::ContextProvider> 86 virtual scoped_refptr<cc::ContextProvider>
87 SharedMainThreadContextProvider() = 0; 87 SharedMainThreadContextProvider() = 0;
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 void DidBeginMainFrame() override {} 244 void DidBeginMainFrame() override {}
245 void BeginMainFrame(const cc::BeginFrameArgs& args) override; 245 void BeginMainFrame(const cc::BeginFrameArgs& args) override;
246 void Layout() override; 246 void Layout() override;
247 void ApplyViewportDeltas(const gfx::Vector2d& inner_delta, 247 void ApplyViewportDeltas(const gfx::Vector2d& inner_delta,
248 const gfx::Vector2d& outer_delta, 248 const gfx::Vector2d& outer_delta,
249 float page_scale, 249 float page_scale,
250 float top_controls_delta) override {} 250 float top_controls_delta) override {}
251 void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta, 251 void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta,
252 float page_scale, 252 float page_scale,
253 float top_controls_delta) override {} 253 float top_controls_delta) override {}
254 void RequestNewOutputSurface(bool fallback) override; 254 void RequestNewOutputSurface() override;
255 void DidInitializeOutputSurface() override {} 255 void DidInitializeOutputSurface() override;
256 void DidFailToInitializeOutputSurface() override;
256 void WillCommit() override {} 257 void WillCommit() override {}
257 void DidCommit() override; 258 void DidCommit() override;
258 void DidCommitAndDrawFrame() override; 259 void DidCommitAndDrawFrame() override;
259 void DidCompleteSwapBuffers() override; 260 void DidCompleteSwapBuffers() override;
260 261
261 // cc::LayerTreeHostSingleThreadClient implementation. 262 // cc::LayerTreeHostSingleThreadClient implementation.
262 void ScheduleComposite() override; 263 void ScheduleComposite() override;
263 void ScheduleAnimation() override; 264 void ScheduleAnimation() override;
264 void DidPostSwapBuffers() override; 265 void DidPostSwapBuffers() override;
265 void DidAbortSwapBuffers() override; 266 void DidAbortSwapBuffers() override;
(...skipping 12 matching lines...) Expand all
278 } 279 }
279 280
280 cc::SurfaceIdAllocator* surface_id_allocator() { 281 cc::SurfaceIdAllocator* surface_id_allocator() {
281 return surface_id_allocator_.get(); 282 return surface_id_allocator_.get();
282 } 283 }
283 284
284 private: 285 private:
285 friend class base::RefCounted<Compositor>; 286 friend class base::RefCounted<Compositor>;
286 friend class CompositorLock; 287 friend class CompositorLock;
287 288
289 enum {
290 OUTPUT_SURFACE_RETRIES_BEFORE_FALLBACK = 4,
291 MAX_OUTPUT_SURFACE_RETRIES = 5,
292 };
293
288 // Called by CompositorLock. 294 // Called by CompositorLock.
289 void UnlockCompositor(); 295 void UnlockCompositor();
290 296
291 // Called to release any pending CompositorLock 297 // Called to release any pending CompositorLock
292 void CancelCompositorLock(); 298 void CancelCompositorLock();
293 299
294 // Notifies the compositor that compositing is complete. 300 // Notifies the compositor that compositing is complete.
295 void NotifyEnd(); 301 void NotifyEnd();
296 302
297 gfx::Size size_; 303 gfx::Size size_;
(...skipping 16 matching lines...) Expand all
314 // The manager of vsync parameters for this compositor. 320 // The manager of vsync parameters for this compositor.
315 scoped_refptr<CompositorVSyncManager> vsync_manager_; 321 scoped_refptr<CompositorVSyncManager> vsync_manager_;
316 322
317 // The device scale factor of the monitor that this compositor is compositing 323 // The device scale factor of the monitor that this compositor is compositing
318 // layers on. 324 // layers on.
319 float device_scale_factor_; 325 float device_scale_factor_;
320 326
321 int last_started_frame_; 327 int last_started_frame_;
322 int last_ended_frame_; 328 int last_ended_frame_;
323 329
330 int num_failed_recreate_attempts_;
331
324 bool disable_schedule_composite_; 332 bool disable_schedule_composite_;
325 333
326 CompositorLock* compositor_lock_; 334 CompositorLock* compositor_lock_;
327 335
328 // Prevent more than one draw from being scheduled. 336 // Prevent more than one draw from being scheduled.
329 bool defer_draw_scheduling_; 337 bool defer_draw_scheduling_;
330 338
331 // Used to prevent Draw()s while a composite is in progress. 339 // Used to prevent Draw()s while a composite is in progress.
332 bool waiting_on_compositing_end_; 340 bool waiting_on_compositing_end_;
333 bool draw_on_compositing_end_; 341 bool draw_on_compositing_end_;
334 enum SwapState { SWAP_NONE, SWAP_POSTED, SWAP_COMPLETED }; 342 enum SwapState { SWAP_NONE, SWAP_POSTED, SWAP_COMPLETED };
335 SwapState swap_state_; 343 SwapState swap_state_;
336 344
337 LayerAnimatorCollection layer_animator_collection_; 345 LayerAnimatorCollection layer_animator_collection_;
338 346
339 base::WeakPtrFactory<Compositor> weak_ptr_factory_; 347 base::WeakPtrFactory<Compositor> weak_ptr_factory_;
340 348
341 DISALLOW_COPY_AND_ASSIGN(Compositor); 349 DISALLOW_COPY_AND_ASSIGN(Compositor);
342 }; 350 };
343 351
344 } // namespace ui 352 } // namespace ui
345 353
346 #endif // UI_COMPOSITOR_COMPOSITOR_H_ 354 #endif // UI_COMPOSITOR_COMPOSITOR_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698