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 cb43af9715c2e3ad4bddcff3f55f5d8f08fda9cc..9d01bd653cb692523f0cfccf3bcc9f098ad0f097 100644 |
--- a/cc/trees/layer_tree_host_impl.cc |
+++ b/cc/trees/layer_tree_host_impl.cc |
@@ -330,6 +330,15 @@ |
void LayerTreeHostImpl::BeginCommit() { |
TRACE_EVENT0("cc", "LayerTreeHostImpl::BeginCommit"); |
+ // Ensure all textures are returned so partial texture updates can happen |
+ // during the commit. |
+ // TODO(ericrk): We should not need to ForceReclaimResources when using |
+ // Impl-side-painting as it doesn't upload during commits. However, |
+ // Display::Draw currently relies on resource being reclaimed to block drawing |
+ // between BeginCommit / Swap. See crbug.com/489515. |
+ if (compositor_frame_sink_) |
+ compositor_frame_sink_->ForceReclaimResources(); |
+ |
if (!CommitToActiveTree()) |
CreatePendingTree(); |
} |
@@ -773,12 +782,12 @@ |
!root_surface->layer_list().empty(); |
bool hud_wants_to_draw_ = active_tree_->hud_layer() && |
active_tree_->hud_layer()->IsAnimatingHUDContents(); |
- bool must_always_swap = |
- compositor_frame_sink_->capabilities().must_always_swap; |
+ bool resources_must_be_resent = |
+ compositor_frame_sink_->capabilities().can_force_reclaim_resources; |
if (root_surface_has_contributing_layers && |
root_surface_has_no_visible_damage && |
!active_tree_->property_trees()->effect_tree.HasCopyRequests() && |
- !must_always_swap && !hud_wants_to_draw_) { |
+ !resources_must_be_resent && !hud_wants_to_draw_) { |
TRACE_EVENT0("cc", |
"LayerTreeHostImpl::CalculateRenderPasses::EmptyDamageRect"); |
frame->has_no_damage = true; |