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

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

Issue 2609253003: Remove ForceReclaimResources (Closed)
Patch Set: Make test cases / phases the same Created 3 years, 11 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
« no previous file with comments | « cc/test/test_compositor_frame_sink.cc ('k') | cc/trees/layer_tree_host_impl_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #include "cc/trees/layer_tree_host_impl.h" 5 #include "cc/trees/layer_tree_host_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 } else { 329 } else {
330 for (const auto& swap_promise : swap_promises) 330 for (const auto& swap_promise : swap_promises)
331 swap_promise->DidNotSwap(SwapPromise::COMMIT_NO_UPDATE); 331 swap_promise->DidNotSwap(SwapPromise::COMMIT_NO_UPDATE);
332 } 332 }
333 } 333 }
334 } 334 }
335 335
336 void LayerTreeHostImpl::BeginCommit() { 336 void LayerTreeHostImpl::BeginCommit() {
337 TRACE_EVENT0("cc", "LayerTreeHostImpl::BeginCommit"); 337 TRACE_EVENT0("cc", "LayerTreeHostImpl::BeginCommit");
338 338
339 // Ensure all textures are returned so partial texture updates can happen
340 // during the commit.
341 // TODO(ericrk): We should not need to ForceReclaimResources when using
342 // Impl-side-painting as it doesn't upload during commits. However,
343 // Display::Draw currently relies on resource being reclaimed to block drawing
344 // between BeginCommit / Swap. See crbug.com/489515.
345 if (compositor_frame_sink_)
346 compositor_frame_sink_->ForceReclaimResources();
347
348 if (!CommitToActiveTree()) 339 if (!CommitToActiveTree())
349 CreatePendingTree(); 340 CreatePendingTree();
350 } 341 }
351 342
352 void LayerTreeHostImpl::CommitComplete() { 343 void LayerTreeHostImpl::CommitComplete() {
353 TRACE_EVENT0("cc", "LayerTreeHostImpl::CommitComplete"); 344 TRACE_EVENT0("cc", "LayerTreeHostImpl::CommitComplete");
354 345
355 if (CommitToActiveTree()) { 346 if (CommitToActiveTree()) {
356 // We have to activate animations here or "IsActive()" is true on the layers 347 // We have to activate animations here or "IsActive()" is true on the layers
357 // but the animations aren't activated yet so they get ignored by 348 // but the animations aren't activated yet so they get ignored by
(...skipping 423 matching lines...) Expand 10 before | Expand all | Expand 10 after
781 // If the root render surface has no visible damage, then don't generate a 772 // If the root render surface has no visible damage, then don't generate a
782 // frame at all. 773 // frame at all.
783 RenderSurfaceImpl* root_surface = active_tree_->RootRenderSurface(); 774 RenderSurfaceImpl* root_surface = active_tree_->RootRenderSurface();
784 bool root_surface_has_no_visible_damage = 775 bool root_surface_has_no_visible_damage =
785 !root_surface->damage_tracker()->current_damage_rect().Intersects( 776 !root_surface->damage_tracker()->current_damage_rect().Intersects(
786 root_surface->content_rect()); 777 root_surface->content_rect());
787 bool root_surface_has_contributing_layers = 778 bool root_surface_has_contributing_layers =
788 !root_surface->layer_list().empty(); 779 !root_surface->layer_list().empty();
789 bool hud_wants_to_draw_ = active_tree_->hud_layer() && 780 bool hud_wants_to_draw_ = active_tree_->hud_layer() &&
790 active_tree_->hud_layer()->IsAnimatingHUDContents(); 781 active_tree_->hud_layer()->IsAnimatingHUDContents();
791 bool resources_must_be_resent = 782 bool must_always_swap =
792 compositor_frame_sink_->capabilities().can_force_reclaim_resources; 783 compositor_frame_sink_->capabilities().must_always_swap;
793 if (root_surface_has_contributing_layers && 784 if (root_surface_has_contributing_layers &&
794 root_surface_has_no_visible_damage && 785 root_surface_has_no_visible_damage &&
795 !active_tree_->property_trees()->effect_tree.HasCopyRequests() && 786 !active_tree_->property_trees()->effect_tree.HasCopyRequests() &&
796 !resources_must_be_resent && !hud_wants_to_draw_) { 787 !must_always_swap && !hud_wants_to_draw_) {
797 TRACE_EVENT0("cc", 788 TRACE_EVENT0("cc",
798 "LayerTreeHostImpl::CalculateRenderPasses::EmptyDamageRect"); 789 "LayerTreeHostImpl::CalculateRenderPasses::EmptyDamageRect");
799 frame->has_no_damage = true; 790 frame->has_no_damage = true;
800 DCHECK(!resourceless_software_draw_); 791 DCHECK(!resourceless_software_draw_);
801 return DRAW_SUCCESS; 792 return DRAW_SUCCESS;
802 } 793 }
803 794
804 TRACE_EVENT_BEGIN2( 795 TRACE_EVENT_BEGIN2(
805 "cc", "LayerTreeHostImpl::CalculateRenderPasses", 796 "cc", "LayerTreeHostImpl::CalculateRenderPasses",
806 "render_surface_layer_list.size()", 797 "render_surface_layer_list.size()",
(...skipping 3285 matching lines...) Expand 10 before | Expand all | Expand 10 after
4092 worker_context_visibility_ = 4083 worker_context_visibility_ =
4093 worker_context->CacheController()->ClientBecameVisible(); 4084 worker_context->CacheController()->ClientBecameVisible();
4094 } else { 4085 } else {
4095 worker_context->CacheController()->ClientBecameNotVisible( 4086 worker_context->CacheController()->ClientBecameNotVisible(
4096 std::move(worker_context_visibility_)); 4087 std::move(worker_context_visibility_));
4097 } 4088 }
4098 } 4089 }
4099 } 4090 }
4100 4091
4101 } // namespace cc 4092 } // namespace cc
OLDNEW
« no previous file with comments | « cc/test/test_compositor_frame_sink.cc ('k') | cc/trees/layer_tree_host_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698