summaryrefslogtreecommitdiff
path: root/chromium/cc/trees/layer_tree_host_impl.h
diff options
context:
space:
mode:
authorZeno Albisser <zeno.albisser@theqtcompany.com>2014-12-05 15:04:29 +0100
committerAndras Becsi <andras.becsi@theqtcompany.com>2014-12-09 10:49:28 +0100
commitaf6588f8d723931a298c995fa97259bb7f7deb55 (patch)
tree060ca707847ba1735f01af2372e0d5e494dc0366 /chromium/cc/trees/layer_tree_host_impl.h
parent2fff84d821cc7b1c785f6404e0f8091333283e74 (diff)
downloadqtwebengine-chromium-af6588f8d723931a298c995fa97259bb7f7deb55.tar.gz
BASELINE: Update chromium to 40.0.2214.28 and ninja to 1.5.3.
Change-Id: I759465284fd64d59ad120219cbe257f7402c4181 Reviewed-by: Andras Becsi <andras.becsi@theqtcompany.com>
Diffstat (limited to 'chromium/cc/trees/layer_tree_host_impl.h')
-rw-r--r--chromium/cc/trees/layer_tree_host_impl.h249
1 files changed, 138 insertions, 111 deletions
diff --git a/chromium/cc/trees/layer_tree_host_impl.h b/chromium/cc/trees/layer_tree_host_impl.h
index fe9afc219e6..2309ef77d5f 100644
--- a/chromium/cc/trees/layer_tree_host_impl.h
+++ b/chromium/cc/trees/layer_tree_host_impl.h
@@ -31,16 +31,18 @@
#include "cc/quads/render_pass.h"
#include "cc/resources/resource_provider.h"
#include "cc/resources/tile_manager.h"
+#include "cc/scheduler/begin_frame_source.h"
#include "cc/scheduler/draw_result.h"
#include "skia/ext/refptr.h"
#include "third_party/skia/include/core/SkColor.h"
-#include "ui/gfx/rect.h"
+#include "ui/gfx/geometry/rect.h"
namespace cc {
class CompletionEvent;
class CompositorFrameMetadata;
class DebugRectHistory;
+class EvictionTilePriorityQueue;
class FrameRateCounter;
class LayerImpl;
class LayerTreeHostImplTimeSourceAdapter;
@@ -49,6 +51,7 @@ class MemoryHistory;
class PageScaleAnimation;
class PaintTimeCounter;
class PictureLayerImpl;
+class RasterTilePriorityQueue;
class RasterWorkerPool;
class RenderPassDrawQuad;
class RenderingStatsInstrumentation;
@@ -71,7 +74,6 @@ class LayerTreeHostImplClient {
virtual void SetMaxSwapsPendingOnImplThread(int max) = 0;
virtual void DidSwapBuffersOnImplThread() = 0;
virtual void DidSwapBuffersCompleteOnImplThread() = 0;
- virtual void BeginFrame(const BeginFrameArgs& args) = 0;
virtual void OnCanDrawStateChanged(bool can_draw) = 0;
virtual void NotifyReadyToActivate() = 0;
// Please call these 3 functions through
@@ -94,7 +96,7 @@ class LayerTreeHostImplClient {
virtual void PostDelayedScrollbarFadeOnImplThread(
const base::Closure& start_fade,
base::TimeDelta delay) = 0;
- virtual void DidActivatePendingTree() = 0;
+ virtual void DidActivateSyncTree() = 0;
virtual void DidManageTiles() = 0;
protected:
@@ -110,6 +112,7 @@ class CC_EXPORT LayerTreeHostImpl
public OutputSurfaceClient,
public TopControlsManagerClient,
public ScrollbarAnimationControllerClient,
+ public BeginFrameSourceMixIn,
public base::SupportsWeakPtr<LayerTreeHostImpl> {
public:
static scoped_ptr<LayerTreeHostImpl> Create(
@@ -117,50 +120,54 @@ class CC_EXPORT LayerTreeHostImpl
LayerTreeHostImplClient* client,
Proxy* proxy,
RenderingStatsInstrumentation* rendering_stats_instrumentation,
- SharedBitmapManager* manager,
+ SharedBitmapManager* shared_bitmap_manager,
+ gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager,
int id);
- virtual ~LayerTreeHostImpl();
+ ~LayerTreeHostImpl() override;
+
+ // BeginFrameSourceMixIn implementation
+ void OnNeedsBeginFramesChange(bool needs_begin_frames) override;
// InputHandler implementation
- virtual void BindToClient(InputHandlerClient* client) OVERRIDE;
- virtual InputHandler::ScrollStatus ScrollBegin(
+ void BindToClient(InputHandlerClient* client) override;
+ InputHandler::ScrollStatus ScrollBegin(
+ const gfx::Point& viewport_point,
+ InputHandler::ScrollInputType type) override;
+ InputHandler::ScrollStatus ScrollAnimated(
const gfx::Point& viewport_point,
- InputHandler::ScrollInputType type) OVERRIDE;
- virtual bool ScrollBy(const gfx::Point& viewport_point,
- const gfx::Vector2dF& scroll_delta) OVERRIDE;
- virtual bool ScrollVerticallyByPage(const gfx::Point& viewport_point,
- ScrollDirection direction) OVERRIDE;
- virtual void SetRootLayerScrollOffsetDelegate(
- LayerScrollOffsetDelegate* root_layer_scroll_offset_delegate) OVERRIDE;
- virtual void OnRootLayerDelegatedScrollOffsetChanged() OVERRIDE;
- virtual void ScrollEnd() OVERRIDE;
- virtual InputHandler::ScrollStatus FlingScrollBegin() OVERRIDE;
- virtual void MouseMoveAt(const gfx::Point& viewport_point) OVERRIDE;
- virtual void PinchGestureBegin() OVERRIDE;
- virtual void PinchGestureUpdate(float magnify_delta,
- const gfx::Point& anchor) OVERRIDE;
- virtual void PinchGestureEnd() OVERRIDE;
- virtual void StartPageScaleAnimation(const gfx::Vector2d& target_offset,
- bool anchor_point,
- float page_scale,
- base::TimeDelta duration) OVERRIDE;
- virtual void SetNeedsAnimate() OVERRIDE;
- virtual bool IsCurrentlyScrollingLayerAt(
+ const gfx::Vector2dF& scroll_delta) override;
+ InputHandlerScrollResult ScrollBy(
const gfx::Point& viewport_point,
- InputHandler::ScrollInputType type) OVERRIDE;
- virtual bool HaveTouchEventHandlersAt(
- const gfx::Point& viewport_port) OVERRIDE;
- virtual scoped_ptr<SwapPromiseMonitor> CreateLatencyInfoSwapPromiseMonitor(
- ui::LatencyInfo* latency) OVERRIDE;
+ const gfx::Vector2dF& scroll_delta) override;
+ bool ScrollVerticallyByPage(const gfx::Point& viewport_point,
+ ScrollDirection direction) override;
+ void SetRootLayerScrollOffsetDelegate(
+ LayerScrollOffsetDelegate* root_layer_scroll_offset_delegate) override;
+ void OnRootLayerDelegatedScrollOffsetChanged() override;
+ void ScrollEnd() override;
+ InputHandler::ScrollStatus FlingScrollBegin() override;
+ void MouseMoveAt(const gfx::Point& viewport_point) override;
+ void PinchGestureBegin() override;
+ void PinchGestureUpdate(float magnify_delta,
+ const gfx::Point& anchor) override;
+ void PinchGestureEnd() override;
+ void SetNeedsAnimate() override;
+ bool IsCurrentlyScrollingLayerAt(const gfx::Point& viewport_point,
+ InputHandler::ScrollInputType type) override;
+ bool HaveTouchEventHandlersAt(const gfx::Point& viewport_port) override;
+ scoped_ptr<SwapPromiseMonitor> CreateLatencyInfoSwapPromiseMonitor(
+ ui::LatencyInfo* latency) override;
// TopControlsManagerClient implementation.
- virtual void DidChangeTopControlsPosition() OVERRIDE;
- virtual bool HaveRootScrollLayer() const OVERRIDE;
+ void SetControlsTopOffset(float offset) override;
+ float ControlsTopOffset() const override;
+ void DidChangeTopControlsPosition() override;
+ bool HaveRootScrollLayer() const override;
struct CC_EXPORT FrameData : public RenderPassSink {
FrameData();
- virtual ~FrameData();
- scoped_ptr<base::Value> AsValue() const;
+ ~FrameData() override;
+ void AsValueInto(base::debug::TracedValue* value) const;
std::vector<gfx::Rect> occluding_screen_space_rects;
std::vector<gfx::Rect> non_occluding_screen_space_rects;
@@ -172,7 +179,7 @@ class CC_EXPORT LayerTreeHostImpl
bool has_no_damage;
// RenderPassSink implementation.
- virtual void AppendRenderPass(scoped_ptr<RenderPass> render_pass) OVERRIDE;
+ void AppendRenderPass(scoped_ptr<RenderPass> render_pass) override;
};
virtual void BeginMainFrameAborted(bool did_handle);
@@ -213,53 +220,53 @@ class CC_EXPORT LayerTreeHostImpl
// Resets all of the trees to an empty state.
void ResetTreesForTesting();
- bool device_viewport_valid_for_tile_management() const {
- return device_viewport_valid_for_tile_management_;
- }
+ DrawMode GetDrawMode() const;
// Viewport size in draw space: this size is in physical pixels and is used
// for draw properties, tilings, quads and render passes.
gfx::Size DrawViewportSize() const;
- // Viewport size for scrolling and fixed-position compensation. This value
- // excludes the URL bar and non-overlay scrollbars and is in DIP (and
- // invariant relative to page scale).
- gfx::SizeF UnscaledScrollableViewportSize() const;
- float VerticalAdjust() const;
+ // Viewport rect in view space used for tiling prioritization.
+ const gfx::Rect ViewportRectForTilePriority() const;
// RendererClient implementation.
- virtual void SetFullRootLayerDamage() OVERRIDE;
- virtual void RunOnDemandRasterTask(Task* on_demand_raster_task) OVERRIDE;
+ void SetFullRootLayerDamage() override;
// TileManagerClient implementation.
- virtual const std::vector<PictureLayerImpl*>& GetPictureLayers() OVERRIDE;
- virtual void NotifyReadyToActivate() OVERRIDE;
- virtual void NotifyTileStateChanged(const Tile* tile) OVERRIDE;
+ const std::vector<PictureLayerImpl*>& GetPictureLayers() const override;
+ void NotifyReadyToActivate() override;
+ void NotifyTileStateChanged(const Tile* tile) override;
+ void BuildRasterQueue(RasterTilePriorityQueue* queue,
+ TreePriority tree_priority) override;
+ void BuildEvictionQueue(EvictionTilePriorityQueue* queue,
+ TreePriority tree_priority) override;
// ScrollbarAnimationControllerClient implementation.
- virtual void PostDelayedScrollbarFade(const base::Closure& start_fade,
- base::TimeDelta delay) OVERRIDE;
- virtual void SetNeedsScrollbarAnimationFrame() OVERRIDE;
+ void PostDelayedScrollbarFade(const base::Closure& start_fade,
+ base::TimeDelta delay) override;
+ void SetNeedsScrollbarAnimationFrame() override;
// OutputSurfaceClient implementation.
- virtual void DeferredInitialize() OVERRIDE;
- virtual void ReleaseGL() OVERRIDE;
- virtual void CommitVSyncParameters(base::TimeTicks timebase,
- base::TimeDelta interval) OVERRIDE;
- virtual void SetNeedsRedrawRect(const gfx::Rect& rect) OVERRIDE;
- virtual void BeginFrame(const BeginFrameArgs& args) OVERRIDE;
- virtual void SetExternalDrawConstraints(
+ void DeferredInitialize() override;
+ void ReleaseGL() override;
+ void CommitVSyncParameters(base::TimeTicks timebase,
+ base::TimeDelta interval) override;
+ void SetNeedsRedrawRect(const gfx::Rect& rect) override;
+ void BeginFrame(const BeginFrameArgs& args) override;
+
+ void SetExternalDrawConstraints(
const gfx::Transform& transform,
const gfx::Rect& viewport,
const gfx::Rect& clip,
- bool valid_for_tile_management) OVERRIDE;
- virtual void DidLoseOutputSurface() OVERRIDE;
- virtual void DidSwapBuffers() OVERRIDE;
- virtual void DidSwapBuffersComplete() OVERRIDE;
- virtual void ReclaimResources(const CompositorFrameAck* ack) OVERRIDE;
- virtual void SetMemoryPolicy(const ManagedMemoryPolicy& policy) OVERRIDE;
- virtual void SetTreeActivationCallback(const base::Closure& callback)
- OVERRIDE;
+ const gfx::Rect& viewport_rect_for_tile_priority,
+ const gfx::Transform& transform_for_tile_priority,
+ bool resourceless_software_draw) override;
+ void DidLoseOutputSurface() override;
+ void DidSwapBuffers() override;
+ void DidSwapBuffersComplete() override;
+ void ReclaimResources(const CompositorFrameAck* ack) override;
+ void SetMemoryPolicy(const ManagedMemoryPolicy& policy) override;
+ void SetTreeActivationCallback(const base::Closure& callback) override;
// Called from LayerTreeImpl.
void OnCanDrawStateChangedForTree();
@@ -275,7 +282,6 @@ class CC_EXPORT LayerTreeHostImpl
int SourceAnimationFrameNumber() const;
virtual bool InitializeRenderer(scoped_ptr<OutputSurface> output_surface);
- bool IsContextLost();
TileManager* tile_manager() { return tile_manager_.get(); }
void SetUseGpuRasterization(bool use_gpu);
bool use_gpu_rasterization() const { return use_gpu_rasterization_; }
@@ -287,7 +293,6 @@ class CC_EXPORT LayerTreeHostImpl
const RendererCapabilitiesImpl& GetRendererCapabilities() const;
virtual bool SwapBuffers(const FrameData& frame);
- void SetNeedsBeginFrame(bool enable);
virtual void WillBeginImplFrame(const BeginFrameArgs& args);
void DidModifyTilePriorities();
@@ -295,17 +300,15 @@ class CC_EXPORT LayerTreeHostImpl
const LayerTreeImpl* active_tree() const { return active_tree_.get(); }
LayerTreeImpl* pending_tree() { return pending_tree_.get(); }
const LayerTreeImpl* pending_tree() const { return pending_tree_.get(); }
+ LayerTreeImpl* recycle_tree() { return recycle_tree_.get(); }
const LayerTreeImpl* recycle_tree() const { return recycle_tree_.get(); }
// Returns the tree LTH synchronizes with.
LayerTreeImpl* sync_tree() {
- // In impl-side painting, synchronize to the pending tree so that it has
- // time to raster before being displayed.
- return settings_.impl_side_painting ? pending_tree_.get()
- : active_tree_.get();
+ return pending_tree_ ? pending_tree_.get() : active_tree_.get();
}
virtual void CreatePendingTree();
virtual void UpdateVisibleTiles();
- virtual void ActivatePendingTree();
+ virtual void ActivateSyncTree();
// Shortcuts to layers on the active tree.
LayerImpl* RootLayer() const;
@@ -319,8 +322,10 @@ class CC_EXPORT LayerTreeHostImpl
bool scroll_affects_scroll_handler() const {
return scroll_affects_scroll_handler_;
}
+ void QueueSwapPromiseForMainThreadScrollUpdate(
+ scoped_ptr<SwapPromise> swap_promise);
- bool IsCurrentlyScrolling() const;
+ bool IsActivelyScrolling() const;
virtual void SetVisible(bool visible);
bool visible() const { return visible_; }
@@ -336,9 +341,6 @@ class CC_EXPORT LayerTreeHostImpl
void SetViewportSize(const gfx::Size& device_viewport_size);
gfx::Size device_viewport_size() const { return device_viewport_size_; }
- void SetOverdrawBottomHeight(float overdraw_bottom_height);
- float overdraw_bottom_height() const { return overdraw_bottom_height_; }
-
void SetOverhangUIResource(UIResourceId overhang_ui_resource_id,
const gfx::Size& overhang_ui_resource_size);
@@ -412,19 +414,26 @@ class CC_EXPORT LayerTreeHostImpl
bool pinch_gesture_active() const { return pinch_gesture_active_; }
void SetTreePriority(TreePriority priority);
+ TreePriority GetTreePriority() const;
- void UpdateCurrentFrameTime();
- void ResetCurrentFrameTimeForNextFrame();
- virtual base::TimeTicks CurrentFrameTimeTicks();
+ void UpdateCurrentBeginFrameArgs(const BeginFrameArgs& args);
+ void ResetCurrentBeginFrameArgsForNextFrame();
+ virtual BeginFrameArgs CurrentBeginFrameArgs() const;
// Expected time between two begin impl frame calls.
base::TimeDelta begin_impl_frame_interval() const {
return begin_impl_frame_interval_;
}
- scoped_ptr<base::Value> AsValue() const { return AsValueWithFrame(NULL); }
- scoped_ptr<base::Value> AsValueWithFrame(FrameData* frame) const;
- scoped_ptr<base::Value> ActivationStateAsValue() const;
+ void AsValueInto(base::debug::TracedValue* value) const override;
+ void AsValueWithFrameInto(FrameData* frame,
+ base::debug::TracedValue* value) const;
+ scoped_refptr<base::debug::ConvertableToTraceFormat> AsValue() const;
+ scoped_refptr<base::debug::ConvertableToTraceFormat> AsValueWithFrame(
+ FrameData* frame) const;
+ scoped_refptr<base::debug::ConvertableToTraceFormat> ActivationStateAsValue()
+ const;
+ void ActivationStateAsValueInto(base::debug::TracedValue* value) const;
bool page_scale_animation_active() const { return !!page_scale_animation_; }
@@ -465,22 +474,39 @@ class CC_EXPORT LayerTreeHostImpl
void RegisterPictureLayerImpl(PictureLayerImpl* layer);
void UnregisterPictureLayerImpl(PictureLayerImpl* layer);
+ void GetPictureLayerImplPairs(
+ std::vector<PictureLayerImpl::Pair>* layers) const;
+
+ void SetTopControlsLayoutHeight(float height);
+
+ void SetRequiresHighResToDraw() { requires_high_res_to_draw_ = true; }
+ void ResetRequiresHighResToDraw() { requires_high_res_to_draw_ = false; }
+ bool RequiresHighResToDraw() const { return requires_high_res_to_draw_; }
+
+ // Only valid for synchronous (non-scheduled) single-threaded case.
+ void SynchronouslyInitializeAllTiles();
+
+ bool CanUseZeroCopyRasterizer() const;
+ bool CanUseOneCopyRasterizer() const;
+ virtual void CreateResourceAndRasterWorkerPool(
+ scoped_ptr<RasterWorkerPool>* raster_worker_pool,
+ scoped_ptr<ResourcePool>* resource_pool,
+ scoped_ptr<ResourcePool>* staging_resource_pool);
+
protected:
LayerTreeHostImpl(
const LayerTreeSettings& settings,
LayerTreeHostImplClient* client,
Proxy* proxy,
RenderingStatsInstrumentation* rendering_stats_instrumentation,
- SharedBitmapManager* manager,
+ SharedBitmapManager* shared_bitmap_manager,
+ gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager,
int id);
- gfx::SizeF ComputeInnerViewportContainerSize() const;
- void UpdateInnerViewportContainerSize();
+ void UpdateViewportContainerSizes();
// Virtual for testing.
virtual void AnimateLayers(base::TimeTicks monotonic_time);
-
- // Virtual for testing.
virtual base::TimeDelta LowFrequencyAnimationInterval() const;
const AnimationRegistrar::AnimationControllerMap&
@@ -500,14 +526,21 @@ class CC_EXPORT LayerTreeHostImpl
void ReleaseTreeResources();
void EnforceZeroBudget(bool zero_budget);
- bool UseZeroCopyTextureUpload() const;
- bool UseOneCopyTextureUpload() const;
+ bool UsePendingTreeForSync() const;
+ bool IsSynchronousSingleThreaded() const;
+ // Scroll by preferring to move the outer viewport first, only moving the
+ // inner if the outer is at its scroll extents.
void ScrollViewportBy(gfx::Vector2dF scroll_delta);
+ // Scroll by preferring to move the inner viewport first, only moving the
+ // outer if the inner is at its scroll extents.
+ void ScrollViewportInnerFirst(gfx::Vector2dF scroll_delta);
void AnimatePageScale(base::TimeTicks monotonic_time);
void AnimateScrollbars(base::TimeTicks monotonic_time);
void AnimateTopControls(base::TimeTicks monotonic_time);
+ bool ShouldTopControlsConsumeScroll(const gfx::Vector2dF& scroll_delta) const;
+
gfx::Vector2dF ScrollLayerWithViewportSpaceDelta(
LayerImpl* layer_impl,
float scale_from_viewport_to_screen_space,
@@ -551,6 +584,7 @@ class CC_EXPORT LayerTreeHostImpl
void MarkUIResourceNotEvicted(UIResourceId uid);
void NotifySwapPromiseMonitorsOfSetNeedsRedraw();
+ void NotifySwapPromiseMonitorsOfForwardingToMainThread();
typedef base::hash_map<UIResourceId, UIResourceData>
UIResourceMap;
@@ -562,7 +596,6 @@ class CC_EXPORT LayerTreeHostImpl
std::set<UIResourceId> evicted_ui_resources_;
scoped_ptr<OutputSurface> output_surface_;
- scoped_refptr<ContextProvider> offscreen_context_provider_;
// |resource_provider_| and |tile_manager_| can be NULL, e.g. when using tile-
// free rendering - see OutputSurface::ForcedDrawToSoftwareDevice().
@@ -574,10 +607,6 @@ class CC_EXPORT LayerTreeHostImpl
scoped_ptr<ResourcePool> staging_resource_pool_;
scoped_ptr<Renderer> renderer_;
- TaskGraphRunner synchronous_task_graph_runner_;
- TaskGraphRunner* on_demand_task_graph_runner_;
- NamespaceToken on_demand_task_namespace_;
-
GlobalStateThatImpactsTilePriority global_tile_state_;
// Tree currently being drawn.
@@ -597,6 +626,7 @@ class CC_EXPORT LayerTreeHostImpl
bool wheel_scrolling_;
bool scroll_affects_scroll_handler_;
int scroll_layer_id_when_mouse_over_scrollbar_;
+ ScopedPtrVector<SwapPromise> swap_promises_for_main_thread_scroll_update_;
bool tile_priorities_dirty_;
@@ -647,25 +677,22 @@ class CC_EXPORT LayerTreeHostImpl
UIResourceId overhang_ui_resource_id_;
gfx::Size overhang_ui_resource_size_;
- // Vertical amount of the viewport size that's known to covered by a
- // browser-side UI element, such as an on-screen-keyboard. This affects
- // scrollable size since we want to still be able to scroll to the bottom of
- // the page when the keyboard is up.
- float overdraw_bottom_height_;
-
// Optional top-level constraints that can be set by the OutputSurface.
// - external_transform_ applies a transform above the root layer
// - external_viewport_ is used DrawProperties, tile management and
// glViewport/window projection matrix.
// - external_clip_ specifies a top-level clip rect
+ // - viewport_rect_for_tile_priority_ is the rect in view space used for
+ // tiling priority.
gfx::Transform external_transform_;
gfx::Rect external_viewport_;
gfx::Rect external_clip_;
- bool device_viewport_valid_for_tile_management_;
+ gfx::Rect viewport_rect_for_tile_priority_;
+ bool resourceless_software_draw_;
gfx::Rect viewport_damage_rect_;
- base::TimeTicks current_frame_timeticks_;
+ BeginFrameArgs current_begin_frame_args_;
// Expected time between two begin impl frame calls.
base::TimeDelta begin_impl_frame_interval_;
@@ -674,23 +701,23 @@ class CC_EXPORT LayerTreeHostImpl
RenderingStatsInstrumentation* rendering_stats_instrumentation_;
MicroBenchmarkControllerImpl micro_benchmark_controller_;
+ scoped_ptr<TaskGraphRunner> single_thread_synchronous_task_graph_runner_;
bool need_to_update_visible_tiles_before_draw_;
-#if DCHECK_IS_ON
- bool did_lose_called_;
-#endif
// Optional callback to notify of new tree activations.
base::Closure tree_activation_callback_;
SharedBitmapManager* shared_bitmap_manager_;
+ gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager_;
int id_;
std::set<SwapPromiseMonitor*> swap_promise_monitor_;
- size_t transfer_buffer_memory_limit_;
-
std::vector<PictureLayerImpl*> picture_layers_;
+ std::vector<PictureLayerImpl::Pair> picture_layer_pairs_;
+
+ bool requires_high_res_to_draw_;
DISALLOW_COPY_AND_ASSIGN(LayerTreeHostImpl);
};