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

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

Issue 2340143002: cc: Rename LayerTreeHost to LayerTreeHostInProcess. (Closed)
Patch Set: tests + comment updates Created 4 years, 3 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 2016 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_H_ 5 #ifndef CC_TREES_LAYER_TREE_HOST_H_
6 #define CC_TREES_LAYER_TREE_HOST_H_ 6 #define CC_TREES_LAYER_TREE_HOST_H_
7 7
8 #include <stddef.h>
9 #include <stdint.h>
10
11 #include <limits>
12 #include <memory>
13 #include <set>
14 #include <string>
15 #include <unordered_map>
16 #include <vector>
17
18 #include "base/cancelable_callback.h"
19 #include "base/macros.h" 8 #include "base/macros.h"
20 #include "base/memory/ref_counted.h"
21 #include "base/memory/weak_ptr.h" 9 #include "base/memory/weak_ptr.h"
22 #include "base/time/time.h"
23 #include "cc/animation/target_property.h"
24 #include "cc/base/cc_export.h" 10 #include "cc/base/cc_export.h"
25 #include "cc/debug/micro_benchmark.h" 11 #include "cc/debug/micro_benchmark.h"
26 #include "cc/debug/micro_benchmark_controller.h"
27 #include "cc/input/event_listener_properties.h"
28 #include "cc/input/input_handler.h"
29 #include "cc/input/layer_selection_bound.h"
30 #include "cc/input/scrollbar.h"
31 #include "cc/input/top_controls_state.h" 12 #include "cc/input/top_controls_state.h"
32 #include "cc/layers/layer_collections.h" 13
33 #include "cc/layers/layer_list_iterator.h" 14 namespace base {
34 #include "cc/output/output_surface.h" 15 class TimeTicks;
35 #include "cc/output/swap_promise.h" 16 } // namespace base
36 #include "cc/resources/resource_format.h" 17
37 #include "cc/trees/compositor_mode.h" 18 namespace gfx {
38 #include "cc/trees/layer_tree.h" 19 class Rect;
39 #include "cc/trees/layer_tree_host_client.h" 20 } // namespace gfx
40 #include "cc/trees/layer_tree_host_interface.h"
41 #include "cc/trees/layer_tree_settings.h"
42 #include "cc/trees/proxy.h"
43 #include "cc/trees/surface_sequence_generator.h"
44 #include "cc/trees/swap_promise_manager.h"
45 #include "third_party/skia/include/core/SkColor.h"
46 #include "ui/gfx/geometry/rect.h"
47 21
48 namespace gpu { 22 namespace gpu {
49 class GpuMemoryBufferManager; 23 class GpuMemoryBufferManager;
50 } 24 } // namespace gpu
51 25
52 namespace cc { 26 namespace cc {
53 27 class InputHandler;
54 class AnimationEvents; 28 class LayerTree;
55 class AnimationHost; 29 class LayerTreeDebugState;
56 class BeginFrameSource;
57 class ClientPictureCache;
58 class EnginePictureCache;
59 class HeadsUpDisplayLayer;
60 class ImageSerializationProcessor;
61 class Layer;
62 class LayerTreeHostImpl;
63 class LayerTreeHostImplClient;
64 class LayerTreeHostSingleThreadClient;
65 class LayerTreeMutator; 30 class LayerTreeMutator;
66 class PropertyTrees; 31 class LayerTreeSettings;
67 class Region; 32 class OutputSurface;
68 class RemoteProtoChannel; 33 class SurfaceSequenceGenerator;
69 class RenderingStatsInstrumentation; 34 class SwapPromise;
70 class ResourceProvider; 35 class SwapPromiseManager;
71 class ResourceUpdateQueue; 36 class SwapPromiseMonitor;
72 class SharedBitmapManager; 37 class TaskRunnerProvider;
73 class TaskGraphRunner; 38 class UIResourceManager;
74 class TopControlsManager; 39
75 struct PendingPageScaleAnimation; 40 // This encapsulates the API for any embedder to use cc. The
76 struct RenderingStats; 41 // LayerTreeHostInProcess provides the implementation where the compositor
77 struct ScrollAndScaleSet; 42 // thread components of this host run within the same process. Use
78 43 // LayerTreeHostInProcess::CreateThreaded/CreateSingleThread to get either.
79 namespace proto { 44 class CC_EXPORT LayerTreeHost {
80 class LayerTreeHost;
81 }
82
83 // This class is being refactored to an interface, see LayerTreeHostInterface,
84 // which is the API for the cc embedder. When adding new code to this class,
85 // consider the following:
86 // 1) If its state/data that gets pushed to the LayerTreeImpl during commit, add
87 // it to the LayerTree.
88 // 2) If it's a call from the embedder, add it to the LayerTreeHostInterface.
89 // 3) If it's a call from any of the internal cc classes, i.e., LayerTree or
90 // PropertyTreeBuilder, etc., add it to the LayerTreeHostInterface.
91 // 4) If it's a notification from the impl thread or a call from Proxy, add it
92 // to this class.
93 // This class will be renamed to LayerTreeHostInProcess and will be the
94 // LayerTreeHost implementation for when the impl thread for the compositor runs
95 // in the same process, and thus uses a Proxy.
96 class CC_EXPORT LayerTreeHost : public LayerTreeHostInterface {
97 public: 45 public:
98 // TODO(sad): InitParams should be a movable type so that it can be 46 virtual ~LayerTreeHost() {}
99 // std::move()d to the Create* functions. 47
100 struct CC_EXPORT InitParams { 48 // Returns the process global unique identifier for this LayerTreeHost.
101 LayerTreeHostClient* client = nullptr; 49 virtual int GetId() const = 0;
102 SharedBitmapManager* shared_bitmap_manager = nullptr; 50
103 gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager = nullptr; 51 // The current source frame number. This is incremented for each main frame
104 TaskGraphRunner* task_graph_runner = nullptr; 52 // update(commit) pushed to the compositor thread.
105 LayerTreeSettings const* settings = nullptr; 53 virtual int SourceFrameNumber() const = 0;
106 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner; 54
107 std::unique_ptr<BeginFrameSource> external_begin_frame_source; 55 // Returns the LayerTree that holds the main frame state pushed to the
108 ImageSerializationProcessor* image_serialization_processor = nullptr; 56 // LayerTreeImpl on commit.
109 std::unique_ptr<AnimationHost> animation_host; 57 virtual LayerTree* GetLayerTree() = 0;
110 58 virtual const LayerTree* GetLayerTree() const = 0;
111 InitParams(); 59
112 ~InitParams(); 60 // Returns the UIResourceManager used to create UIResources for
113 }; 61 // UIResourceLayers pushed to the LayerTree.
114 62 virtual UIResourceManager* GetUIResourceManager() const = 0;
115 // The SharedBitmapManager will be used on the compositor thread. 63
116 static std::unique_ptr<LayerTreeHostInterface> CreateThreaded( 64 // Returns the TaskRunnerProvider used to access the main and compositor
117 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner, 65 // thread task runners.
118 InitParams* params); 66 virtual TaskRunnerProvider* GetTaskRunnerProvider() const = 0;
119 67
120 static std::unique_ptr<LayerTreeHost> CreateSingleThreaded( 68 // Returns the settings used by this host.
121 LayerTreeHostSingleThreadClient* single_thread_client, 69 virtual const LayerTreeSettings& GetSettings() const = 0;
122 InitParams* params); 70
123 71 // Sets the client id used to generate the SurfaceId that uniquely identifies
124 static std::unique_ptr<LayerTreeHostInterface> CreateRemoteServer( 72 // the Surfaces produced by this compositor.
125 RemoteProtoChannel* remote_proto_channel, 73 virtual void SetSurfaceClientId(uint32_t client_id) = 0;
126 InitParams* params); 74
127 75 // Sets the LayerTreeMutator interface used to directly mutate the compositor
128 // The lifetime of this LayerTreeHost is tied to the lifetime of the remote 76 // state on the compositor thread. (Compositor-Worker)
129 // server LayerTreeHost. It should be created on receiving 77 virtual void SetLayerTreeMutator(
130 // CompositorMessageToImpl::InitializeImpl message and destroyed on receiving 78 std::unique_ptr<LayerTreeMutator> mutator) = 0;
131 // a CompositorMessageToImpl::CloseImpl message from the server. This ensures 79
132 // that the client will not send any compositor messages once the 80 // Call this function when you expect there to be a swap buffer.
133 // LayerTreeHost on the server is destroyed. 81 // See swap_promise.h for how to use SwapPromise.
134 static std::unique_ptr<LayerTreeHostInterface> CreateRemoteClient( 82 virtual void QueueSwapPromise(std::unique_ptr<SwapPromise> swap_promise) = 0;
135 RemoteProtoChannel* remote_proto_channel, 83
136 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner, 84 // Returns the SwapPromiseManager used to create SwapPromiseMonitors for this
137 InitParams* params); 85 // host.
138 86 virtual SwapPromiseManager* GetSwapPromiseManager() = 0;
139 ~LayerTreeHost() override; 87
140 88 // Sets whether the content is suitable to use Gpu Rasterization.
141 // LayerTreeHostInterface implementation. 89 virtual void SetHasGpuRasterizationTrigger(bool has_trigger) = 0;
142 int GetId() const override; 90
143 int SourceFrameNumber() const override; 91 // Visibility and OutputSurface -------------------------------
144 LayerTree* GetLayerTree() override; 92
145 const LayerTree* GetLayerTree() const override; 93 virtual void SetVisible(bool visible) = 0;
146 UIResourceManager* GetUIResourceManager() const override; 94 virtual bool IsVisible() const = 0;
147 TaskRunnerProvider* GetTaskRunnerProvider() const override; 95
148 const LayerTreeSettings& GetSettings() const override; 96 // Called in response to an OutputSurface request made to the client using
149 void SetSurfaceClientId(uint32_t client_id) override; 97 // LayerTreeHostClient::RequestNewOutputSurface. The client will be informed
150 void SetLayerTreeMutator(std::unique_ptr<LayerTreeMutator> mutator) override; 98 // of the OutputSurface initialization status using DidInitializaOutputSurface
151 void QueueSwapPromise(std::unique_ptr<SwapPromise> swap_promise) override; 99 // or DidFailToInitializeOutputSurface. The request is completed when the host
152 SwapPromiseManager* GetSwapPromiseManager() override; 100 // successfully initializes an OutputSurface.
153 void SetHasGpuRasterizationTrigger(bool has_trigger) override; 101 virtual void SetOutputSurface(
154 void SetVisible(bool visible) override; 102 std::unique_ptr<OutputSurface> output_surface) = 0;
155 bool IsVisible() const override; 103
156 void SetOutputSurface(std::unique_ptr<OutputSurface> output_surface) override; 104 // Forces the host to immediately release all references to the OutputSurface,
157 std::unique_ptr<OutputSurface> ReleaseOutputSurface() override; 105 // if any. Can be safely called any time.
158 void SetNeedsAnimate() override; 106 virtual std::unique_ptr<OutputSurface> ReleaseOutputSurface() = 0;
159 void SetNeedsUpdateLayers() override; 107
160 void SetNeedsCommit() override; 108 // Frame Scheduling (main and compositor frames) requests -------
161 bool BeginMainFrameRequested() const override; 109
162 bool CommitRequested() const override; 110 // Requests a main frame update even if no content has changed. This is used,
163 void SetDeferCommits(bool defer_commits) override; 111 // for instance in the case of RequestAnimationFrame from blink to ensure the
164 void LayoutAndUpdateLayers() override; 112 // main frame update is run on the next tick without pre-emptively forcing a
165 void Composite(base::TimeTicks frame_begin_time) override; 113 // full commit synchronization or layer updates.
166 void SetNeedsRedraw() override; 114 virtual void SetNeedsAnimate() = 0;
167 void SetNeedsRedrawRect(const gfx::Rect& damage_rect) override; 115
168 void SetNextCommitForcesRedraw() override; 116 // Requests a main frame update and also ensure that the host pulls layer
169 void NotifyInputThrottledUntilCommit() override; 117 // updates from the client, even if no content might have changed, without
170 void UpdateTopControlsState(TopControlsState constraints, 118 // forcing a full commit synchronization.
171 TopControlsState current, 119 virtual void SetNeedsUpdateLayers() = 0;
172 bool animate) override; 120
173 const base::WeakPtr<InputHandler>& GetInputHandler() const override; 121 // Requests that the next main frame update performs a full commit
174 void DidStopFlinging() override; 122 // synchronization.
175 void SetDebugState(const LayerTreeDebugState& debug_state) override; 123 virtual void SetNeedsCommit() = 0;
176 const LayerTreeDebugState& GetDebugState() const override; 124
177 int ScheduleMicroBenchmark( 125 // Returns true if a main frame (for any pipeline stage above) has been
126 // requested.
127 virtual bool BeginMainFrameRequested() const = 0;
128
129 // Returns true if a main frame with commit synchronization has been
130 // requested.
131 virtual bool CommitRequested() const = 0;
132
133 // Enables/disables the compositor from requesting main frame updates from the
134 // client.
135 virtual void SetDeferCommits(bool defer_commits) = 0;
136
137 // Synchronously performs a main frame update and layer updates. Used only in
138 // single threaded mode when the compositor's internal scheduling is disabled.
139 virtual void LayoutAndUpdateLayers() = 0;
140
141 // Synchronously performs a complete main frame update, commit and compositor
142 // frame. Used only in single threaded mode when the compositor's internal
143 // scheduling is disabled.
144 virtual void Composite(base::TimeTicks frame_begin_time) = 0;
145
146 // Requests a redraw (compositor frame) for the complete viewport.
147 virtual void SetNeedsRedraw() = 0;
148
149 // Requests a redraw (compositor frame) for the given rect.
150 virtual void SetNeedsRedrawRect(const gfx::Rect& damage_rect) = 0;
151
152 // Requests a main frame (including layer updates) and ensures that this main
153 // frame results in a redraw for the complete viewport when producing the
154 // CompositorFrame.
155 virtual void SetNextCommitForcesRedraw() = 0;
156
157 // Input Handling ---------------------------------------------
158
159 // Notifies the compositor that input from the browser is being throttled till
160 // the next commit. The compositor will prioritize activation of the pending
161 // tree so a commit can be performed.
162 virtual void NotifyInputThrottledUntilCommit() = 0;
163
164 // Sets the state of the top controls. (Used for URL bar animations on
165 // android).
166 virtual void UpdateTopControlsState(TopControlsState constraints,
167 TopControlsState current,
168 bool animate) = 0;
169
170 // Returns a reference to the InputHandler used to respond to input events on
171 // the compositor thread.
172 virtual const base::WeakPtr<InputHandler>& GetInputHandler() const = 0;
173
174 // Informs the compositor that an active fling gesture being processed on the
175 // main thread has been finished.
176 virtual void DidStopFlinging() = 0;
177
178 // Debugging and benchmarks ---------------------------------
179 virtual void SetDebugState(const LayerTreeDebugState& debug_state) = 0;
180 virtual const LayerTreeDebugState& GetDebugState() const = 0;
181
182 // Returns the id of the benchmark on success, 0 otherwise.
183 virtual int ScheduleMicroBenchmark(
178 const std::string& benchmark_name, 184 const std::string& benchmark_name,
179 std::unique_ptr<base::Value> value, 185 std::unique_ptr<base::Value> value,
180 const MicroBenchmark::DoneCallback& callback) override; 186 const MicroBenchmark::DoneCallback& callback) = 0;
181 bool SendMessageToMicroBenchmark(int id, 187
182 std::unique_ptr<base::Value> value) override; 188 // Returns true if the message was successfully delivered and handled.
183 SurfaceSequenceGenerator* GetSurfaceSequenceGenerator() override; 189 virtual bool SendMessageToMicroBenchmark(
184 190 int id,
185 // LayerTreeHost interface to Proxy. 191 std::unique_ptr<base::Value> value) = 0;
186 void WillBeginMainFrame(); 192
187 void DidBeginMainFrame(); 193 // Methods used internally in cc. These are not intended to be a part of the
188 void BeginMainFrame(const BeginFrameArgs& args); 194 // public API for use by the embedder ----------------------
189 void BeginMainFrameNotExpectedSoon(); 195 virtual SurfaceSequenceGenerator* GetSurfaceSequenceGenerator() = 0;
190 void AnimateLayers(base::TimeTicks monotonic_frame_begin_time); 196
191 void RequestMainFrameUpdate(); 197 // When the main thread informs the impl thread that it is ready to commit,
192 void FinishCommitOnImplThread(LayerTreeHostImpl* host_impl); 198 // generally it would remain blocked till the main thread state is copied to
193 void WillCommit(); 199 // the pending tree. Calling this would ensure that the main thread remains
194 void CommitComplete(); 200 // blocked till the pending tree is activated.
195 void RequestNewOutputSurface(); 201 virtual void SetNextCommitWaitsForActivation() = 0;
196 void DidInitializeOutputSurface(); 202
197 void DidFailToInitializeOutputSurface(); 203 // The LayerTreeHost tracks whether the content is suitable for Gpu raster.
198 virtual std::unique_ptr<LayerTreeHostImpl> CreateLayerTreeHostImpl( 204 // Calling this will reset it back to not suitable state.
199 LayerTreeHostImplClient* client); 205 virtual void ResetGpuRasterizationTracking() = 0;
200 void DidLoseOutputSurface();
201 void DidCommitAndDrawFrame() { client_->DidCommitAndDrawFrame(); }
202 void DidCompleteSwapBuffers() { client_->DidCompleteSwapBuffers(); }
203 bool UpdateLayers();
204 // Called when the compositor completed page scale animation.
205 void DidCompletePageScaleAnimation();
206 void ApplyScrollAndScale(ScrollAndScaleSet* info);
207
208 LayerTreeHostClient* client() { return client_; }
209
210 bool gpu_rasterization_histogram_recorded() const {
211 return gpu_rasterization_histogram_recorded_;
212 }
213
214 void CollectRenderingStats(RenderingStats* stats) const;
215
216 RenderingStatsInstrumentation* rendering_stats_instrumentation() const {
217 return rendering_stats_instrumentation_.get();
218 }
219
220 void SetNextCommitWaitsForActivation();
221
222 void SetAnimationEvents(std::unique_ptr<AnimationEvents> events);
223
224 bool has_gpu_rasterization_trigger() const {
225 return has_gpu_rasterization_trigger_;
226 }
227
228 Proxy* proxy() const { return proxy_.get(); }
229
230 // Serializes the parts of this LayerTreeHost that is needed for a commit to a
231 // protobuf message. Not all members are serialized as they are not helpful
232 // for remote usage.
233 // The |swap_promise_list_| is transferred to the serializer in
234 // |swap_promises|.
235 void ToProtobufForCommit(
236 proto::LayerTreeHost* proto,
237 std::vector<std::unique_ptr<SwapPromise>>* swap_promises);
238
239 // Deserializes the protobuf into this LayerTreeHost before a commit. The
240 // expected input is a serialized remote LayerTreeHost. After deserializing
241 // the protobuf, the normal commit-flow should continue.
242 void FromProtobufForCommit(const proto::LayerTreeHost& proto);
243
244 bool IsSingleThreaded() const;
245 bool IsThreaded() const;
246 bool IsRemoteServer() const;
247 bool IsRemoteClient() const;
248
249 ImageSerializationProcessor* image_serialization_processor() const {
250 return image_serialization_processor_;
251 }
252
253 EnginePictureCache* engine_picture_cache() const {
254 return engine_picture_cache_ ? engine_picture_cache_.get() : nullptr;
255 }
256
257 ClientPictureCache* client_picture_cache() const {
258 return client_picture_cache_ ? client_picture_cache_.get() : nullptr;
259 }
260
261 void ResetGpuRasterizationTracking();
262
263 protected:
264 // Allow tests to inject the LayerTree.
265 LayerTreeHost(InitParams* params,
266 CompositorMode mode,
267 std::unique_ptr<LayerTree> layer_tree);
268 LayerTreeHost(InitParams* params, CompositorMode mode);
269
270 void InitializeThreaded(
271 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
272 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner,
273 std::unique_ptr<BeginFrameSource> external_begin_frame_source);
274 void InitializeSingleThreaded(
275 LayerTreeHostSingleThreadClient* single_thread_client,
276 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
277 std::unique_ptr<BeginFrameSource> external_begin_frame_source);
278 void InitializeRemoteServer(
279 RemoteProtoChannel* remote_proto_channel,
280 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner);
281 void InitializeRemoteClient(
282 RemoteProtoChannel* remote_proto_channel,
283 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
284 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner);
285 void InitializeForTesting(
286 std::unique_ptr<TaskRunnerProvider> task_runner_provider,
287 std::unique_ptr<Proxy> proxy_for_testing,
288 std::unique_ptr<BeginFrameSource> external_begin_frame_source);
289 void InitializePictureCacheForTesting();
290 void SetTaskRunnerProviderForTesting(
291 std::unique_ptr<TaskRunnerProvider> task_runner_provider);
292 void SetUIResourceManagerForTesting(
293 std::unique_ptr<UIResourceManager> ui_resource_manager);
294
295 // shared_bitmap_manager(), gpu_memory_buffer_manager(), and
296 // task_graph_runner() return valid values only until the LayerTreeHostImpl is
297 // created in CreateLayerTreeHostImpl().
298 SharedBitmapManager* shared_bitmap_manager() const {
299 return shared_bitmap_manager_;
300 }
301 gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager() const {
302 return gpu_memory_buffer_manager_;
303 }
304 TaskGraphRunner* task_graph_runner() const { return task_graph_runner_; }
305
306 void OnCommitForSwapPromises();
307
308 void RecordGpuRasterizationHistogram();
309
310 MicroBenchmarkController micro_benchmark_controller_;
311
312 std::unique_ptr<LayerTree> layer_tree_;
313
314 base::WeakPtr<InputHandler> input_handler_weak_ptr_;
315
316 private:
317 friend class LayerTreeHostSerializationTest;
318
319 // This is the number of consecutive frames in which we want the content to be
320 // suitable for GPU rasterization before re-enabling it.
321 enum { kNumFramesToConsiderBeforeGpuRasterization = 60 };
322
323 void ApplyViewportDeltas(ScrollAndScaleSet* info);
324 void ApplyPageScaleDeltaFromImplSide(float page_scale_delta);
325 void InitializeProxy(
326 std::unique_ptr<Proxy> proxy,
327 std::unique_ptr<BeginFrameSource> external_begin_frame_source);
328
329 bool DoUpdateLayers(Layer* root_layer);
330 void UpdateHudLayer();
331
332 bool AnimateLayersRecursive(Layer* current, base::TimeTicks time);
333
334 void CalculateLCDTextMetricsCallback(Layer* layer);
335
336 void SetPropertyTreesNeedRebuild();
337
338 const CompositorMode compositor_mode_;
339
340 std::unique_ptr<UIResourceManager> ui_resource_manager_;
341
342 LayerTreeHostClient* client_;
343 std::unique_ptr<Proxy> proxy_;
344 std::unique_ptr<TaskRunnerProvider> task_runner_provider_;
345
346 int source_frame_number_;
347 std::unique_ptr<RenderingStatsInstrumentation>
348 rendering_stats_instrumentation_;
349
350 SwapPromiseManager swap_promise_manager_;
351
352 // |current_output_surface_| can't be updated until we've successfully
353 // initialized a new output surface. |new_output_surface_| contains the
354 // new output surface that is currently being initialized. If initialization
355 // is successful then |new_output_surface_| replaces
356 // |current_output_surface_|.
357 std::unique_ptr<OutputSurface> new_output_surface_;
358 std::unique_ptr<OutputSurface> current_output_surface_;
359
360 const LayerTreeSettings settings_;
361 LayerTreeDebugState debug_state_;
362
363 bool visible_;
364
365 bool has_gpu_rasterization_trigger_;
366 bool content_is_suitable_for_gpu_rasterization_;
367 bool gpu_rasterization_histogram_recorded_;
368
369 // If set, then page scale animation has completed, but the client hasn't been
370 // notified about it yet.
371 bool did_complete_scale_animation_;
372
373 int id_;
374 bool next_commit_forces_redraw_;
375
376 SharedBitmapManager* shared_bitmap_manager_;
377 gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager_;
378 TaskGraphRunner* task_graph_runner_;
379
380 ImageSerializationProcessor* image_serialization_processor_;
381 std::unique_ptr<EnginePictureCache> engine_picture_cache_;
382 std::unique_ptr<ClientPictureCache> client_picture_cache_;
383
384 SurfaceSequenceGenerator surface_sequence_generator_;
385 uint32_t num_consecutive_frames_suitable_for_gpu_ = 0;
386
387 DISALLOW_COPY_AND_ASSIGN(LayerTreeHost);
388 }; 206 };
389 207
390 } // namespace cc 208 } // namespace cc
391 209
392 #endif // CC_TREES_LAYER_TREE_HOST_H_ 210 #endif // CC_TREES_LAYER_TREE_HOST_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698