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

Side by Side Diff: cc/trees/layer_tree_host_impl.h

Issue 2194013002: cc: Delete the Renderer base class. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@dcheck-delegating
Patch Set: delete-renderer-base-class: rebase Created 4 years, 4 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 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_TREES_LAYER_TREE_HOST_IMPL_H_ 5 #ifndef CC_TREES_LAYER_TREE_HOST_IMPL_H_
6 #define CC_TREES_LAYER_TREE_HOST_IMPL_H_ 6 #define CC_TREES_LAYER_TREE_HOST_IMPL_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 9
10 #include <bitset> 10 #include <bitset>
11 #include <memory> 11 #include <memory>
12 #include <set> 12 #include <set>
13 #include <string> 13 #include <string>
14 #include <unordered_map> 14 #include <unordered_map>
15 #include <vector> 15 #include <vector>
16 16
17 #include "base/callback.h" 17 #include "base/callback.h"
18 #include "base/macros.h" 18 #include "base/macros.h"
19 #include "base/time/time.h" 19 #include "base/time/time.h"
20 #include "cc/animation/layer_tree_mutator.h" 20 #include "cc/animation/layer_tree_mutator.h"
21 #include "cc/base/cc_export.h" 21 #include "cc/base/cc_export.h"
22 #include "cc/base/synced_property.h" 22 #include "cc/base/synced_property.h"
23 #include "cc/debug/micro_benchmark_controller_impl.h" 23 #include "cc/debug/micro_benchmark_controller_impl.h"
24 #include "cc/input/input_handler.h" 24 #include "cc/input/input_handler.h"
25 #include "cc/input/scrollbar_animation_controller.h" 25 #include "cc/input/scrollbar_animation_controller.h"
26 #include "cc/input/top_controls_manager_client.h" 26 #include "cc/input/top_controls_manager_client.h"
27 #include "cc/layers/layer_collections.h" 27 #include "cc/layers/layer_collections.h"
28 #include "cc/layers/render_pass_sink.h" 28 #include "cc/layers/render_pass_sink.h"
29 #include "cc/output/begin_frame_args.h" 29 #include "cc/output/begin_frame_args.h"
30 #include "cc/output/delegating_renderer.h"
30 #include "cc/output/managed_memory_policy.h" 31 #include "cc/output/managed_memory_policy.h"
31 #include "cc/output/output_surface_client.h" 32 #include "cc/output/output_surface_client.h"
32 #include "cc/output/renderer.h" 33 #include "cc/output/renderer.h"
33 #include "cc/quads/render_pass.h" 34 #include "cc/quads/render_pass.h"
34 #include "cc/resources/resource_provider.h" 35 #include "cc/resources/resource_provider.h"
35 #include "cc/resources/ui_resource_client.h" 36 #include "cc/resources/ui_resource_client.h"
36 #include "cc/scheduler/begin_frame_tracker.h" 37 #include "cc/scheduler/begin_frame_tracker.h"
37 #include "cc/scheduler/commit_earlyout_reason.h" 38 #include "cc/scheduler/commit_earlyout_reason.h"
38 #include "cc/scheduler/draw_result.h" 39 #include "cc/scheduler/draw_result.h"
39 #include "cc/scheduler/video_frame_controller.h" 40 #include "cc/scheduler/video_frame_controller.h"
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 virtual void OnDrawForOutputSurface(bool resourceless_software_draw) = 0; 133 virtual void OnDrawForOutputSurface(bool resourceless_software_draw) = 0;
133 134
134 protected: 135 protected:
135 virtual ~LayerTreeHostImplClient() {} 136 virtual ~LayerTreeHostImplClient() {}
136 }; 137 };
137 138
138 // LayerTreeHostImpl owns the LayerImpl trees as well as associated rendering 139 // LayerTreeHostImpl owns the LayerImpl trees as well as associated rendering
139 // state. 140 // state.
140 class CC_EXPORT LayerTreeHostImpl 141 class CC_EXPORT LayerTreeHostImpl
141 : public InputHandler, 142 : public InputHandler,
142 public RendererClient,
143 public TileManagerClient, 143 public TileManagerClient,
144 public OutputSurfaceClient, 144 public OutputSurfaceClient,
145 public TopControlsManagerClient, 145 public TopControlsManagerClient,
146 public ScrollbarAnimationControllerClient, 146 public ScrollbarAnimationControllerClient,
147 public VideoFrameControllerClient, 147 public VideoFrameControllerClient,
148 public LayerTreeMutatorClient, 148 public LayerTreeMutatorClient,
149 public MutatorHostClient, 149 public MutatorHostClient,
150 public base::SupportsWeakPtr<LayerTreeHostImpl> { 150 public base::SupportsWeakPtr<LayerTreeHostImpl> {
151 public: 151 public:
152 static std::unique_ptr<LayerTreeHostImpl> Create( 152 static std::unique_ptr<LayerTreeHostImpl> Create(
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 virtual void BeginCommit(); 240 virtual void BeginCommit();
241 virtual void CommitComplete(); 241 virtual void CommitComplete();
242 virtual void UpdateAnimationState(bool start_ready_animations); 242 virtual void UpdateAnimationState(bool start_ready_animations);
243 bool Mutate(base::TimeTicks monotonic_time); 243 bool Mutate(base::TimeTicks monotonic_time);
244 void ActivateAnimations(); 244 void ActivateAnimations();
245 void Animate(); 245 void Animate();
246 void AnimatePendingTreeAfterCommit(); 246 void AnimatePendingTreeAfterCommit();
247 void MainThreadHasStoppedFlinging(); 247 void MainThreadHasStoppedFlinging();
248 void DidAnimateScrollOffset(); 248 void DidAnimateScrollOffset();
249 void SetViewportDamage(const gfx::Rect& damage_rect); 249 void SetViewportDamage(const gfx::Rect& damage_rect);
250 void SetFullViewportDamage();
250 251
251 void SetTreeLayerFilterMutated(ElementId element_id, 252 void SetTreeLayerFilterMutated(ElementId element_id,
252 LayerTreeImpl* tree, 253 LayerTreeImpl* tree,
253 const FilterOperations& filters); 254 const FilterOperations& filters);
254 void SetTreeLayerOpacityMutated(ElementId element_id, 255 void SetTreeLayerOpacityMutated(ElementId element_id,
255 LayerTreeImpl* tree, 256 LayerTreeImpl* tree,
256 float opacity); 257 float opacity);
257 void SetTreeLayerTransformMutated(ElementId element_id, 258 void SetTreeLayerTransformMutated(ElementId element_id,
258 LayerTreeImpl* tree, 259 LayerTreeImpl* tree,
259 const gfx::Transform& transform); 260 const gfx::Transform& transform);
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 330
330 DrawMode GetDrawMode() const; 331 DrawMode GetDrawMode() const;
331 332
332 // Viewport size in draw space: this size is in physical pixels and is used 333 // Viewport size in draw space: this size is in physical pixels and is used
333 // for draw properties, tilings, quads and render passes. 334 // for draw properties, tilings, quads and render passes.
334 gfx::Size DrawViewportSize() const; 335 gfx::Size DrawViewportSize() const;
335 336
336 // Viewport rect in view space used for tiling prioritization. 337 // Viewport rect in view space used for tiling prioritization.
337 const gfx::Rect ViewportRectForTilePriority() const; 338 const gfx::Rect ViewportRectForTilePriority() const;
338 339
339 // RendererClient implementation.
340 void SetFullRootLayerDamage() override;
341
342 // TileManagerClient implementation. 340 // TileManagerClient implementation.
343 void NotifyReadyToActivate() override; 341 void NotifyReadyToActivate() override;
344 void NotifyReadyToDraw() override; 342 void NotifyReadyToDraw() override;
345 void NotifyAllTileTasksCompleted() override; 343 void NotifyAllTileTasksCompleted() override;
346 void NotifyTileStateChanged(const Tile* tile) override; 344 void NotifyTileStateChanged(const Tile* tile) override;
347 std::unique_ptr<RasterTilePriorityQueue> BuildRasterQueue( 345 std::unique_ptr<RasterTilePriorityQueue> BuildRasterQueue(
348 TreePriority tree_priority, 346 TreePriority tree_priority,
349 RasterTilePriorityQueue::Type type) override; 347 RasterTilePriorityQueue::Type type) override;
350 std::unique_ptr<EvictionTilePriorityQueue> BuildEvictionQueue( 348 std::unique_ptr<EvictionTilePriorityQueue> BuildEvictionQueue(
351 TreePriority tree_priority) override; 349 TreePriority tree_priority) override;
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 bool use_msaa() const { return use_msaa_; } 413 bool use_msaa() const { return use_msaa_; }
416 414
417 GpuRasterizationStatus gpu_rasterization_status() const { 415 GpuRasterizationStatus gpu_rasterization_status() const {
418 return gpu_rasterization_status_; 416 return gpu_rasterization_status_;
419 } 417 }
420 418
421 bool create_low_res_tiling() const { 419 bool create_low_res_tiling() const {
422 return settings_.create_low_res_tiling && !use_gpu_rasterization_; 420 return settings_.create_low_res_tiling && !use_gpu_rasterization_;
423 } 421 }
424 ResourcePool* resource_pool() { return resource_pool_.get(); } 422 ResourcePool* resource_pool() { return resource_pool_.get(); }
425 Renderer* renderer() { return renderer_.get(); } 423 DelegatingRenderer* renderer() { return renderer_.get(); }
426 ImageDecodeController* image_decode_controller() { 424 ImageDecodeController* image_decode_controller() {
427 return image_decode_controller_.get(); 425 return image_decode_controller_.get();
428 } 426 }
429 const RendererCapabilitiesImpl& GetRendererCapabilities() const; 427 const RendererCapabilitiesImpl& GetRendererCapabilities() const;
430 428
431 bool SwapBuffers(const FrameData& frame); 429 bool SwapBuffers(const FrameData& frame);
432 virtual void WillBeginImplFrame(const BeginFrameArgs& args); 430 virtual void WillBeginImplFrame(const BeginFrameArgs& args);
433 virtual void DidFinishImplFrame(); 431 virtual void DidFinishImplFrame();
434 void DidModifyTilePriorities(); 432 void DidModifyTilePriorities();
435 433
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
559 557
560 // Returns the amount of delta that can be applied to scroll_node, taking 558 // Returns the amount of delta that can be applied to scroll_node, taking
561 // page scale into account. 559 // page scale into account.
562 gfx::Vector2dF ComputeScrollDelta(ScrollNode* scroll_node, 560 gfx::Vector2dF ComputeScrollDelta(ScrollNode* scroll_node,
563 const gfx::Vector2dF& delta); 561 const gfx::Vector2dF& delta);
564 562
565 void ScheduleMicroBenchmark(std::unique_ptr<MicroBenchmarkImpl> benchmark); 563 void ScheduleMicroBenchmark(std::unique_ptr<MicroBenchmarkImpl> benchmark);
566 564
567 CompositorFrameMetadata MakeCompositorFrameMetadata() const; 565 CompositorFrameMetadata MakeCompositorFrameMetadata() const;
568 // Viewport rectangle and clip in nonflipped window space. These rects 566 // Viewport rectangle and clip in nonflipped window space. These rects
569 // should only be used by Renderer subclasses to populate glViewport/glClip 567 // should only be used in the CompositorFrame to describe the physical
570 // and their software-mode equivalents. 568 // viewport for drawing.
571 gfx::Rect DeviceViewport() const; 569 gfx::Rect DeviceViewport() const;
572 570
573 // When a SwapPromiseMonitor is created on the impl thread, it calls 571 // When a SwapPromiseMonitor is created on the impl thread, it calls
574 // InsertSwapPromiseMonitor() to register itself with LayerTreeHostImpl. 572 // InsertSwapPromiseMonitor() to register itself with LayerTreeHostImpl.
575 // When the monitor is destroyed, it calls RemoveSwapPromiseMonitor() 573 // When the monitor is destroyed, it calls RemoveSwapPromiseMonitor()
576 // to unregister itself. 574 // to unregister itself.
577 void InsertSwapPromiseMonitor(SwapPromiseMonitor* monitor); 575 void InsertSwapPromiseMonitor(SwapPromiseMonitor* monitor);
578 void RemoveSwapPromiseMonitor(SwapPromiseMonitor* monitor); 576 void RemoveSwapPromiseMonitor(SwapPromiseMonitor* monitor);
579 577
580 // TODO(weiliangc): Replace RequiresHighResToDraw with scheduler waits for 578 // TODO(weiliangc): Replace RequiresHighResToDraw with scheduler waits for
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
735 std::unique_ptr<ResourceProvider> resource_provider_; 733 std::unique_ptr<ResourceProvider> resource_provider_;
736 bool content_is_suitable_for_gpu_rasterization_; 734 bool content_is_suitable_for_gpu_rasterization_;
737 bool has_gpu_rasterization_trigger_; 735 bool has_gpu_rasterization_trigger_;
738 bool use_gpu_rasterization_; 736 bool use_gpu_rasterization_;
739 bool use_msaa_; 737 bool use_msaa_;
740 GpuRasterizationStatus gpu_rasterization_status_; 738 GpuRasterizationStatus gpu_rasterization_status_;
741 bool tree_resources_for_gpu_rasterization_dirty_; 739 bool tree_resources_for_gpu_rasterization_dirty_;
742 std::unique_ptr<RasterBufferProvider> raster_buffer_provider_; 740 std::unique_ptr<RasterBufferProvider> raster_buffer_provider_;
743 std::unique_ptr<TileTaskManager> tile_task_manager_; 741 std::unique_ptr<TileTaskManager> tile_task_manager_;
744 std::unique_ptr<ResourcePool> resource_pool_; 742 std::unique_ptr<ResourcePool> resource_pool_;
745 std::unique_ptr<Renderer> renderer_; 743 std::unique_ptr<DelegatingRenderer> renderer_;
746 std::unique_ptr<ImageDecodeController> image_decode_controller_; 744 std::unique_ptr<ImageDecodeController> image_decode_controller_;
747 745
748 GlobalStateThatImpactsTilePriority global_tile_state_; 746 GlobalStateThatImpactsTilePriority global_tile_state_;
749 747
750 // Tree currently being drawn. 748 // Tree currently being drawn.
751 std::unique_ptr<LayerTreeImpl> active_tree_; 749 std::unique_ptr<LayerTreeImpl> active_tree_;
752 750
753 // In impl-side painting mode, tree with possibly incomplete rasterized 751 // In impl-side painting mode, tree with possibly incomplete rasterized
754 // content. May be promoted to active by ActivatePendingTree(). 752 // content. May be promoted to active by ActivatePendingTree().
755 std::unique_ptr<LayerTreeImpl> pending_tree_; 753 std::unique_ptr<LayerTreeImpl> pending_tree_;
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
850 848
851 std::unique_ptr<PendingTreeDurationHistogramTimer> 849 std::unique_ptr<PendingTreeDurationHistogramTimer>
852 pending_tree_duration_timer_; 850 pending_tree_duration_timer_;
853 851
854 DISALLOW_COPY_AND_ASSIGN(LayerTreeHostImpl); 852 DISALLOW_COPY_AND_ASSIGN(LayerTreeHostImpl);
855 }; 853 };
856 854
857 } // namespace cc 855 } // namespace cc
858 856
859 #endif // CC_TREES_LAYER_TREE_HOST_IMPL_H_ 857 #endif // CC_TREES_LAYER_TREE_HOST_IMPL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698