| Index: cc/trees/layer_tree_host_impl.cc
|
| diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
|
| index c5ee10e59350d02e998744334cd02e8047bc0792..3784af8caa917c1782776ea223a5151ed221e841 100644
|
| --- a/cc/trees/layer_tree_host_impl.cc
|
| +++ b/cc/trees/layer_tree_host_impl.cc
|
| @@ -238,8 +238,8 @@ class LayerTreeHostImplTimeSourceAdapter : public TimeSourceClient {
|
| DISALLOW_COPY_AND_ASSIGN(LayerTreeHostImplTimeSourceAdapter);
|
| };
|
|
|
| -LayerTreeHostImpl::FrameData::FrameData()
|
| - : contains_incomplete_tile(false), has_no_damage(false) {}
|
| +LayerTreeHostImpl::FrameData::FrameData() : has_no_damage(false) {
|
| +}
|
|
|
| LayerTreeHostImpl::FrameData::~FrameData() {}
|
|
|
| @@ -304,7 +304,6 @@ LayerTreeHostImpl::LayerTreeHostImpl(
|
| animation_registrar_(AnimationRegistrar::Create()),
|
| rendering_stats_instrumentation_(rendering_stats_instrumentation),
|
| micro_benchmark_controller_(this),
|
| - need_to_update_visible_tiles_before_draw_(false),
|
| shared_bitmap_manager_(shared_bitmap_manager),
|
| gpu_memory_buffer_manager_(gpu_memory_buffer_manager),
|
| id_(id),
|
| @@ -546,7 +545,6 @@ void LayerTreeHostImpl::TrackDamageForAllSurfaces(
|
|
|
| void LayerTreeHostImpl::FrameData::AsValueInto(
|
| base::debug::TracedValue* value) const {
|
| - value->SetBoolean("contains_incomplete_tile", contains_incomplete_tile);
|
| value->SetBoolean("has_no_damage", has_no_damage);
|
|
|
| // Quad data can be quite large, so only dump render passes if we select
|
| @@ -896,7 +894,6 @@ DrawResult LayerTreeHostImpl::CalculateRenderPasses(
|
|
|
| if (append_quads_data.num_incomplete_tiles ||
|
| append_quads_data.num_missing_tiles) {
|
| - frame->contains_incomplete_tile = true;
|
| if (RequiresHighResToDraw())
|
| draw_result = DRAW_ABORTED_MISSING_HIGH_RES_CONTENT;
|
| }
|
| @@ -1117,11 +1114,8 @@ DrawResult LayerTreeHostImpl::PrepareToDraw(FrameData* frame) {
|
| "SourceFrameNumber",
|
| active_tree_->source_frame_number());
|
|
|
| - if (need_to_update_visible_tiles_before_draw_ &&
|
| - tile_manager_ && tile_manager_->UpdateVisibleTiles()) {
|
| - DidInitializeVisibleTile();
|
| - }
|
| - need_to_update_visible_tiles_before_draw_ = true;
|
| + if (settings().impl_side_painting)
|
| + tile_manager_->UpdateVisibleTiles();
|
|
|
| UMA_HISTOGRAM_CUSTOM_COUNTS(
|
| "Compositing.NumActiveLayers", active_tree_->NumLayers(), 1, 400, 20);
|
| @@ -1133,7 +1127,6 @@ DrawResult LayerTreeHostImpl::PrepareToDraw(FrameData* frame) {
|
| frame->render_passes.clear();
|
| frame->render_passes_by_id.clear();
|
| frame->will_draw_layers.clear();
|
| - frame->contains_incomplete_tile = false;
|
| frame->has_no_damage = false;
|
|
|
| if (active_tree_->root_layer()) {
|
| @@ -1164,13 +1157,6 @@ void LayerTreeHostImpl::BlockNotifyReadyToActivateForTesting(bool block) {
|
| NOTREACHED();
|
| }
|
|
|
| -void LayerTreeHostImpl::DidInitializeVisibleTileForTesting() {
|
| - // Add arbitrary damage, to trigger prepare-to-draws.
|
| - // Here, setting damage as viewport size, used only for testing.
|
| - SetFullRootLayerDamage();
|
| - DidInitializeVisibleTile();
|
| -}
|
| -
|
| void LayerTreeHostImpl::ResetTreesForTesting() {
|
| if (active_tree_)
|
| active_tree_->DetachLayerTree();
|
| @@ -1262,11 +1248,6 @@ void LayerTreeHostImpl::DidModifyTilePriorities() {
|
| client_->SetNeedsManageTilesOnImplThread();
|
| }
|
|
|
| -void LayerTreeHostImpl::DidInitializeVisibleTile() {
|
| - if (client_ && !client_->IsInsideDraw())
|
| - client_->DidInitializeVisibleTileOnImplThread();
|
| -}
|
| -
|
| void LayerTreeHostImpl::GetPictureLayerImplPairs(
|
| std::vector<PictureLayerImpl::Pair>* layer_pairs) const {
|
| DCHECK(layer_pairs->empty());
|
| @@ -1340,6 +1321,13 @@ void LayerTreeHostImpl::NotifyTileStateChanged(const Tile* tile) {
|
| if (layer_impl)
|
| layer_impl->NotifyTileStateChanged(tile);
|
| }
|
| +
|
| + if (!client_->IsInsideDraw() &&
|
| + tile->priority(ACTIVE_TREE).distance_to_visible == 0.f) {
|
| + // The LayerImpl::NotifyTileStateChanged() should damage the layer, so this
|
| + // redraw will make those tiles be displayed.
|
| + SetNeedsRedraw();
|
| + }
|
| }
|
|
|
| void LayerTreeHostImpl::SetMemoryPolicy(const ManagedMemoryPolicy& policy) {
|
| @@ -1688,6 +1676,14 @@ void LayerTreeHostImpl::WillBeginImplFrame(const BeginFrameArgs& args) {
|
| UpdateCurrentBeginFrameArgs(args);
|
| // Cache the begin impl frame interval
|
| begin_impl_frame_interval_ = args.interval;
|
| +
|
| + if (settings().impl_side_painting &&
|
| + tile_manager_->has_active_visible_tile_scheduled()) {
|
| + // Pre-emptively schedule a draw now if any visible tile is being created,
|
| + // so that we will expect it with our decisions for choosing a deadline for
|
| + // the impl frame we are beginning now.
|
| + SetNeedsRedraw();
|
| + }
|
| }
|
|
|
| void LayerTreeHostImpl::UpdateViewportContainerSizes() {
|
| @@ -1809,15 +1805,7 @@ void LayerTreeHostImpl::CreatePendingTree() {
|
| TRACE_EVENT_ASYNC_BEGIN0("cc", "PendingTree:waiting", pending_tree_.get());
|
| }
|
|
|
| -void LayerTreeHostImpl::UpdateVisibleTiles() {
|
| - if (tile_manager_ && tile_manager_->UpdateVisibleTiles())
|
| - DidInitializeVisibleTile();
|
| - need_to_update_visible_tiles_before_draw_ = false;
|
| -}
|
| -
|
| void LayerTreeHostImpl::ActivateSyncTree() {
|
| - need_to_update_visible_tiles_before_draw_ = true;
|
| -
|
| if (pending_tree_) {
|
| TRACE_EVENT_ASYNC_END0("cc", "PendingTree:waiting", pending_tree_.get());
|
|
|
| @@ -2077,7 +2065,6 @@ void LayerTreeHostImpl::CreateAndSetTileManager() {
|
| settings().scheduled_raster_task_limit);
|
|
|
| UpdateTileManagerMemoryPolicy(ActualManagedMemoryPolicy());
|
| - need_to_update_visible_tiles_before_draw_ = false;
|
| }
|
|
|
| void LayerTreeHostImpl::DestroyTileManager() {
|
| @@ -2988,9 +2975,6 @@ void LayerTreeHostImpl::PinchGestureEnd() {
|
| // scales that we want when we're not inside a pinch.
|
| active_tree_->set_needs_update_draw_properties();
|
| SetNeedsRedraw();
|
| - // TODO(danakj): Don't set root damage. Just updating draw properties and
|
| - // getting new tiles rastered should be enough! crbug.com/427423
|
| - SetFullRootLayerDamage();
|
| }
|
|
|
| static void CollectScrollDeltas(ScrollAndScaleSet* scroll_info,
|
|
|