| Index: cc/trees/layer_tree_host.h
|
| diff --git a/cc/trees/layer_tree_host.h b/cc/trees/layer_tree_host.h
|
| deleted file mode 100644
|
| index e1bcad561798b3f828d495a31e6c16c1f785e423..0000000000000000000000000000000000000000
|
| --- a/cc/trees/layer_tree_host.h
|
| +++ /dev/null
|
| @@ -1,460 +0,0 @@
|
| -// Copyright 2011 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#ifndef CC_TREES_LAYER_TREE_HOST_H_
|
| -#define CC_TREES_LAYER_TREE_HOST_H_
|
| -
|
| -#include <limits>
|
| -#include <set>
|
| -#include <string>
|
| -#include <vector>
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "base/cancelable_callback.h"
|
| -#include "base/containers/hash_tables.h"
|
| -#include "base/memory/ref_counted.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/memory/weak_ptr.h"
|
| -#include "base/time/time.h"
|
| -#include "base/timer/timer.h"
|
| -#include "cc/animation/animation_events.h"
|
| -#include "cc/base/cc_export.h"
|
| -#include "cc/base/scoped_ptr_vector.h"
|
| -#include "cc/debug/micro_benchmark.h"
|
| -#include "cc/debug/micro_benchmark_controller.h"
|
| -#include "cc/input/input_handler.h"
|
| -#include "cc/input/layer_selection_bound.h"
|
| -#include "cc/input/scrollbar.h"
|
| -#include "cc/input/top_controls_state.h"
|
| -#include "cc/layers/layer_lists.h"
|
| -#include "cc/output/output_surface.h"
|
| -#include "cc/output/renderer_capabilities.h"
|
| -#include "cc/output/swap_promise.h"
|
| -#include "cc/resources/resource_format.h"
|
| -#include "cc/resources/scoped_ui_resource.h"
|
| -#include "cc/surfaces/surface_sequence.h"
|
| -#include "cc/trees/layer_tree_host_client.h"
|
| -#include "cc/trees/layer_tree_host_common.h"
|
| -#include "cc/trees/layer_tree_settings.h"
|
| -#include "cc/trees/proxy.h"
|
| -#include "cc/trees/swap_promise_monitor.h"
|
| -#include "third_party/skia/include/core/SkColor.h"
|
| -#include "ui/gfx/geometry/rect.h"
|
| -
|
| -namespace gpu {
|
| -class GpuMemoryBufferManager;
|
| -}
|
| -
|
| -namespace cc {
|
| -class AnimationRegistrar;
|
| -class BeginFrameSource;
|
| -class HeadsUpDisplayLayer;
|
| -class Layer;
|
| -class LayerTreeHostImpl;
|
| -class LayerTreeHostImplClient;
|
| -class LayerTreeHostSingleThreadClient;
|
| -class PrioritizedResource;
|
| -class PrioritizedResourceManager;
|
| -class Region;
|
| -class RenderingStatsInstrumentation;
|
| -class ResourceProvider;
|
| -class ResourceUpdateQueue;
|
| -class SharedBitmapManager;
|
| -class TaskGraphRunner;
|
| -class TopControlsManager;
|
| -class UIResourceRequest;
|
| -struct PendingPageScaleAnimation;
|
| -struct RenderingStats;
|
| -struct ScrollAndScaleSet;
|
| -enum class GpuRasterizationStatus;
|
| -
|
| -class CC_EXPORT LayerTreeHost {
|
| - public:
|
| - // The SharedBitmapManager will be used on the compositor thread.
|
| - static scoped_ptr<LayerTreeHost> CreateThreaded(
|
| - LayerTreeHostClient* client,
|
| - SharedBitmapManager* shared_bitmap_manager,
|
| - gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager,
|
| - TaskGraphRunner* task_graph_runner,
|
| - const LayerTreeSettings& settings,
|
| - scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
|
| - scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner,
|
| - scoped_ptr<BeginFrameSource> external_begin_frame_source);
|
| -
|
| - static scoped_ptr<LayerTreeHost> CreateSingleThreaded(
|
| - LayerTreeHostClient* client,
|
| - LayerTreeHostSingleThreadClient* single_thread_client,
|
| - SharedBitmapManager* shared_bitmap_manager,
|
| - gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager,
|
| - TaskGraphRunner* task_graph_runner,
|
| - const LayerTreeSettings& settings,
|
| - scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
|
| - scoped_ptr<BeginFrameSource> external_begin_frame_source);
|
| - virtual ~LayerTreeHost();
|
| -
|
| - void SetLayerTreeHostClientReady();
|
| -
|
| - // LayerTreeHost interface to Proxy.
|
| - void WillBeginMainFrame();
|
| - void DidBeginMainFrame();
|
| - void BeginMainFrame(const BeginFrameArgs& args);
|
| - void BeginMainFrameNotExpectedSoon();
|
| - void AnimateLayers(base::TimeTicks monotonic_frame_begin_time);
|
| - void DidStopFlinging();
|
| - void Layout();
|
| - void BeginCommitOnImplThread(LayerTreeHostImpl* host_impl);
|
| - void FinishCommitOnImplThread(LayerTreeHostImpl* host_impl);
|
| - void WillCommit();
|
| - void CommitComplete();
|
| - void SetOutputSurface(scoped_ptr<OutputSurface> output_surface);
|
| - void RequestNewOutputSurface();
|
| - void DidInitializeOutputSurface();
|
| - void DidFailToInitializeOutputSurface();
|
| - virtual scoped_ptr<LayerTreeHostImpl> CreateLayerTreeHostImpl(
|
| - LayerTreeHostImplClient* client);
|
| - void DidLoseOutputSurface();
|
| - bool output_surface_lost() const { return output_surface_lost_; }
|
| - void DidCommitAndDrawFrame() { client_->DidCommitAndDrawFrame(); }
|
| - void DidCompleteSwapBuffers() { client_->DidCompleteSwapBuffers(); }
|
| - void DeleteContentsTexturesOnImplThread(ResourceProvider* resource_provider);
|
| - bool UpdateLayers(ResourceUpdateQueue* queue);
|
| -
|
| - // Called when the compositor completed page scale animation.
|
| - void DidCompletePageScaleAnimation();
|
| -
|
| - LayerTreeHostClient* client() { return client_; }
|
| - const base::WeakPtr<InputHandler>& GetInputHandler() {
|
| - return input_handler_weak_ptr_;
|
| - }
|
| -
|
| - void NotifyInputThrottledUntilCommit();
|
| -
|
| - void Composite(base::TimeTicks frame_begin_time);
|
| -
|
| - void FinishAllRendering();
|
| -
|
| - void SetDeferCommits(bool defer_commits);
|
| -
|
| - int source_frame_number() const { return source_frame_number_; }
|
| -
|
| - void SetNeedsDisplayOnAllLayers();
|
| -
|
| - void CollectRenderingStats(RenderingStats* stats) const;
|
| -
|
| - RenderingStatsInstrumentation* rendering_stats_instrumentation() const {
|
| - return rendering_stats_instrumentation_.get();
|
| - }
|
| -
|
| - const RendererCapabilities& GetRendererCapabilities() const;
|
| -
|
| - void SetNeedsAnimate();
|
| - virtual void SetNeedsUpdateLayers();
|
| - virtual void SetNeedsCommit();
|
| - virtual void SetNeedsFullTreeSync();
|
| - void SetNeedsRedraw();
|
| - void SetNeedsRedrawRect(const gfx::Rect& damage_rect);
|
| - bool CommitRequested() const;
|
| - bool BeginMainFrameRequested() const;
|
| -
|
| - void SetNextCommitWaitsForActivation();
|
| -
|
| - void SetNextCommitForcesRedraw();
|
| -
|
| - void SetAnimationEvents(scoped_ptr<AnimationEventsVector> events);
|
| -
|
| - void SetRootLayer(scoped_refptr<Layer> root_layer);
|
| - Layer* root_layer() { return root_layer_.get(); }
|
| - const Layer* root_layer() const { return root_layer_.get(); }
|
| - const Layer* overscroll_elasticity_layer() const {
|
| - return overscroll_elasticity_layer_.get();
|
| - }
|
| - const Layer* page_scale_layer() const { return page_scale_layer_.get(); }
|
| - void RegisterViewportLayers(scoped_refptr<Layer> overscroll_elasticity_layer,
|
| - scoped_refptr<Layer> page_scale_layer,
|
| - scoped_refptr<Layer> inner_viewport_scroll_layer,
|
| - scoped_refptr<Layer> outer_viewport_scroll_layer);
|
| - Layer* inner_viewport_scroll_layer() const {
|
| - return inner_viewport_scroll_layer_.get();
|
| - }
|
| - Layer* outer_viewport_scroll_layer() const {
|
| - return outer_viewport_scroll_layer_.get();
|
| - }
|
| -
|
| - void RegisterSelection(const LayerSelectionBound& start,
|
| - const LayerSelectionBound& end);
|
| -
|
| - const LayerTreeSettings& settings() const { return settings_; }
|
| -
|
| - void SetDebugState(const LayerTreeDebugState& debug_state);
|
| - const LayerTreeDebugState& debug_state() const { return debug_state_; }
|
| -
|
| - bool has_gpu_rasterization_trigger() const {
|
| - return has_gpu_rasterization_trigger_;
|
| - }
|
| - void SetHasGpuRasterizationTrigger(bool has_trigger);
|
| - bool UseGpuRasterization() const;
|
| - GpuRasterizationStatus GetGpuRasterizationStatus() const;
|
| -
|
| - void SetViewportSize(const gfx::Size& device_viewport_size);
|
| - void SetTopControlsHeight(float height, bool shrink);
|
| - void SetTopControlsShownRatio(float ratio);
|
| -
|
| - gfx::Size device_viewport_size() const { return device_viewport_size_; }
|
| -
|
| - void ApplyPageScaleDeltaFromImplSide(float page_scale_delta);
|
| - void SetPageScaleFactorAndLimits(float page_scale_factor,
|
| - float min_page_scale_factor,
|
| - float max_page_scale_factor);
|
| - float page_scale_factor() const { return page_scale_factor_; }
|
| - gfx::Vector2dF elastic_overscroll() const { return elastic_overscroll_; }
|
| -
|
| - SkColor background_color() const { return background_color_; }
|
| - void set_background_color(SkColor color) { background_color_ = color; }
|
| -
|
| - void set_has_transparent_background(bool transparent) {
|
| - has_transparent_background_ = transparent;
|
| - }
|
| -
|
| - PrioritizedResourceManager* contents_texture_manager() const {
|
| - return contents_texture_manager_.get();
|
| - }
|
| -
|
| - void SetVisible(bool visible);
|
| - bool visible() const { return visible_; }
|
| -
|
| - void SetThrottleFrameProduction(bool throttle);
|
| -
|
| - void StartPageScaleAnimation(const gfx::Vector2d& target_offset,
|
| - bool use_anchor,
|
| - float scale,
|
| - base::TimeDelta duration);
|
| -
|
| - void ApplyScrollAndScale(ScrollAndScaleSet* info);
|
| - void SetImplTransform(const gfx::Transform& transform);
|
| -
|
| - // Virtual for tests.
|
| - virtual void StartRateLimiter();
|
| - virtual void StopRateLimiter();
|
| -
|
| - void RateLimit();
|
| -
|
| - bool AlwaysUsePartialTextureUpdates();
|
| - size_t MaxPartialTextureUpdates() const;
|
| - bool RequestPartialTextureUpdate();
|
| -
|
| - void SetDeviceScaleFactor(float device_scale_factor);
|
| - float device_scale_factor() const { return device_scale_factor_; }
|
| -
|
| - void UpdateTopControlsState(TopControlsState constraints,
|
| - TopControlsState current,
|
| - bool animate);
|
| -
|
| - HeadsUpDisplayLayer* hud_layer() const { return hud_layer_.get(); }
|
| -
|
| - Proxy* proxy() const { return proxy_.get(); }
|
| -
|
| - AnimationRegistrar* animation_registrar() const {
|
| - return animation_registrar_.get();
|
| - }
|
| -
|
| - bool in_paint_layer_contents() const { return in_paint_layer_contents_; }
|
| -
|
| - // CreateUIResource creates a resource given a bitmap. The bitmap is
|
| - // generated via an interface function, which is called when initializing the
|
| - // resource and when the resource has been lost (due to lost context). The
|
| - // parameter of the interface is a single boolean, which indicates whether the
|
| - // resource has been lost or not. CreateUIResource returns an Id of the
|
| - // resource, which is always positive.
|
| - virtual UIResourceId CreateUIResource(UIResourceClient* client);
|
| - // Deletes a UI resource. May safely be called more than once.
|
| - virtual void DeleteUIResource(UIResourceId id);
|
| - // Put the recreation of all UI resources into the resource queue after they
|
| - // were evicted on the impl thread.
|
| - void RecreateUIResources();
|
| -
|
| - virtual gfx::Size GetUIResourceSize(UIResourceId id) const;
|
| -
|
| - bool UsingSharedMemoryResources();
|
| - int id() const { return id_; }
|
| -
|
| - // Returns the id of the benchmark on success, 0 otherwise.
|
| - int ScheduleMicroBenchmark(const std::string& benchmark_name,
|
| - scoped_ptr<base::Value> value,
|
| - const MicroBenchmark::DoneCallback& callback);
|
| - // Returns true if the message was successfully delivered and handled.
|
| - bool SendMessageToMicroBenchmark(int id, scoped_ptr<base::Value> value);
|
| -
|
| - // When a SwapPromiseMonitor is created on the main thread, it calls
|
| - // InsertSwapPromiseMonitor() to register itself with LayerTreeHost.
|
| - // When the monitor is destroyed, it calls RemoveSwapPromiseMonitor()
|
| - // to unregister itself.
|
| - void InsertSwapPromiseMonitor(SwapPromiseMonitor* monitor);
|
| - void RemoveSwapPromiseMonitor(SwapPromiseMonitor* monitor);
|
| -
|
| - // Call this function when you expect there to be a swap buffer.
|
| - // See swap_promise.h for how to use SwapPromise.
|
| - void QueueSwapPromise(scoped_ptr<SwapPromise> swap_promise);
|
| -
|
| - void BreakSwapPromises(SwapPromise::DidNotSwapReason reason);
|
| -
|
| - size_t num_queued_swap_promises() const { return swap_promise_list_.size(); }
|
| -
|
| - void set_surface_id_namespace(uint32_t id_namespace);
|
| - SurfaceSequence CreateSurfaceSequence();
|
| -
|
| - void SetChildrenNeedBeginFrames(bool children_need_begin_frames) const;
|
| - void SendBeginFramesToChildren(const BeginFrameArgs& args) const;
|
| -
|
| - protected:
|
| - LayerTreeHost(LayerTreeHostClient* client,
|
| - SharedBitmapManager* shared_bitmap_manager,
|
| - gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager,
|
| - TaskGraphRunner* task_graph_runner,
|
| - const LayerTreeSettings& settings);
|
| - void InitializeThreaded(
|
| - scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
|
| - scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner,
|
| - scoped_ptr<BeginFrameSource> external_begin_frame_source);
|
| - void InitializeSingleThreaded(
|
| - LayerTreeHostSingleThreadClient* single_thread_client,
|
| - scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
|
| - scoped_ptr<BeginFrameSource> external_begin_frame_source);
|
| - void InitializeForTesting(scoped_ptr<Proxy> proxy_for_testing);
|
| - void SetOutputSurfaceLostForTesting(bool is_lost) {
|
| - output_surface_lost_ = is_lost;
|
| - }
|
| -
|
| - MicroBenchmarkController micro_benchmark_controller_;
|
| -
|
| - private:
|
| - void InitializeProxy(scoped_ptr<Proxy> proxy);
|
| -
|
| - void PaintLayerContents(
|
| - const RenderSurfaceLayerList& render_surface_layer_list,
|
| - ResourceUpdateQueue* queue,
|
| - bool* did_paint_content,
|
| - bool* need_more_updates);
|
| - void PaintMasksForRenderSurface(Layer* render_surface_layer,
|
| - ResourceUpdateQueue* queue,
|
| - bool* did_paint_content,
|
| - bool* need_more_updates);
|
| - bool UpdateLayers(Layer* root_layer, ResourceUpdateQueue* queue);
|
| - void UpdateHudLayer();
|
| - void TriggerPrepaint();
|
| -
|
| - void ReduceMemoryUsage();
|
| -
|
| - void PrioritizeTextures(
|
| - const RenderSurfaceLayerList& render_surface_layer_list);
|
| - void SetPrioritiesForSurfaces(size_t surface_memory_bytes);
|
| - void SetPrioritiesForLayers(const RenderSurfaceLayerList& update_list);
|
| - size_t CalculateMemoryForRenderSurfaces(
|
| - const RenderSurfaceLayerList& update_list);
|
| -
|
| - bool AnimateLayersRecursive(Layer* current, base::TimeTicks time);
|
| -
|
| - struct UIResourceClientData {
|
| - UIResourceClient* client;
|
| - gfx::Size size;
|
| - };
|
| -
|
| - typedef base::hash_map<UIResourceId, UIResourceClientData>
|
| - UIResourceClientMap;
|
| - UIResourceClientMap ui_resource_client_map_;
|
| - int next_ui_resource_id_;
|
| -
|
| - typedef std::vector<UIResourceRequest> UIResourceRequestQueue;
|
| - UIResourceRequestQueue ui_resource_request_queue_;
|
| -
|
| - void RecordGpuRasterizationHistogram();
|
| - void CalculateLCDTextMetricsCallback(Layer* layer);
|
| -
|
| - void NotifySwapPromiseMonitorsOfSetNeedsCommit();
|
| -
|
| - bool inside_begin_main_frame_;
|
| - bool needs_full_tree_sync_;
|
| -
|
| - base::CancelableClosure prepaint_callback_;
|
| -
|
| - LayerTreeHostClient* client_;
|
| - scoped_ptr<Proxy> proxy_;
|
| -
|
| - int source_frame_number_;
|
| - scoped_ptr<RenderingStatsInstrumentation> rendering_stats_instrumentation_;
|
| -
|
| - bool output_surface_lost_;
|
| -
|
| - scoped_refptr<Layer> root_layer_;
|
| - scoped_refptr<HeadsUpDisplayLayer> hud_layer_;
|
| -
|
| - scoped_ptr<PrioritizedResourceManager> contents_texture_manager_;
|
| - scoped_ptr<PrioritizedResource> surface_memory_placeholder_;
|
| -
|
| - base::WeakPtr<InputHandler> input_handler_weak_ptr_;
|
| - base::WeakPtr<TopControlsManager> top_controls_manager_weak_ptr_;
|
| -
|
| - const LayerTreeSettings settings_;
|
| - LayerTreeDebugState debug_state_;
|
| -
|
| - gfx::Size device_viewport_size_;
|
| - bool top_controls_shrink_blink_size_;
|
| - float top_controls_height_;
|
| - float top_controls_shown_ratio_;
|
| - float device_scale_factor_;
|
| -
|
| - bool visible_;
|
| -
|
| - base::OneShotTimer<LayerTreeHost> rate_limit_timer_;
|
| -
|
| - float page_scale_factor_;
|
| - float min_page_scale_factor_;
|
| - float max_page_scale_factor_;
|
| - gfx::Vector2dF elastic_overscroll_;
|
| - bool has_gpu_rasterization_trigger_;
|
| - bool content_is_suitable_for_gpu_rasterization_;
|
| - bool gpu_rasterization_histogram_recorded_;
|
| -
|
| - SkColor background_color_;
|
| - bool has_transparent_background_;
|
| -
|
| - typedef ScopedPtrVector<PrioritizedResource> TextureList;
|
| - size_t partial_texture_update_requests_;
|
| -
|
| - scoped_ptr<AnimationRegistrar> animation_registrar_;
|
| -
|
| - scoped_ptr<PendingPageScaleAnimation> pending_page_scale_animation_;
|
| -
|
| - // If set, then page scale animation has completed, but the client hasn't been
|
| - // notified about it yet.
|
| - bool did_complete_scale_animation_;
|
| -
|
| - bool in_paint_layer_contents_;
|
| -
|
| - int id_;
|
| - bool next_commit_forces_redraw_;
|
| -
|
| - scoped_refptr<Layer> overscroll_elasticity_layer_;
|
| - scoped_refptr<Layer> page_scale_layer_;
|
| - scoped_refptr<Layer> inner_viewport_scroll_layer_;
|
| - scoped_refptr<Layer> outer_viewport_scroll_layer_;
|
| -
|
| - LayerSelectionBound selection_start_;
|
| - LayerSelectionBound selection_end_;
|
| -
|
| - SharedBitmapManager* shared_bitmap_manager_;
|
| - gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager_;
|
| - TaskGraphRunner* task_graph_runner_;
|
| -
|
| - ScopedPtrVector<SwapPromise> swap_promise_list_;
|
| - std::set<SwapPromiseMonitor*> swap_promise_monitor_;
|
| -
|
| - uint32_t surface_id_namespace_;
|
| - uint32_t next_surface_sequence_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(LayerTreeHost);
|
| -};
|
| -
|
| -} // namespace cc
|
| -
|
| -#endif // CC_TREES_LAYER_TREE_HOST_H_
|
|
|