| Index: cc/output/direct_renderer.cc
|
| diff --git a/cc/output/direct_renderer.cc b/cc/output/direct_renderer.cc
|
| index 600805ad8c71cbb386c2f40de5c9e4757e197b92..4acd9c142ad5b3ef95638a574270d774b3d0a935 100644
|
| --- a/cc/output/direct_renderer.cc
|
| +++ b/cc/output/direct_renderer.cc
|
| @@ -205,7 +205,9 @@
|
| DrawingFrame frame;
|
| frame.render_passes_in_draw_order = render_passes_in_draw_order;
|
| frame.root_render_pass = root_render_pass;
|
| - frame.root_damage_rect = root_render_pass->damage_rect;
|
| + frame.root_damage_rect = Capabilities().using_partial_swap
|
| + ? root_render_pass->damage_rect
|
| + : root_render_pass->output_rect;
|
| frame.root_damage_rect.Union(overlay_processor_->GetAndResetOverlayDamage());
|
| frame.root_damage_rect.Intersect(gfx::Rect(device_viewport_rect.size()));
|
| frame.device_viewport_rect = device_viewport_rect;
|
| @@ -224,7 +226,8 @@
|
|
|
| if (output_surface_->IsDisplayedAsOverlayPlane()) {
|
| // Create the overlay candidate for the output surface, and mark it as
|
| - // always handled.
|
| + // always
|
| + // handled.
|
| OverlayCandidate output_surface_plane;
|
| output_surface_plane.display_rect =
|
| gfx::RectF(root_render_pass->output_rect);
|
| @@ -251,18 +254,9 @@
|
| &frame.ca_layer_overlay_list, &frame.root_damage_rect);
|
| }
|
|
|
| - // The damage rect might be empty now, but if empty swap isn't allowed we
|
| - // still have to draw.
|
| - bool should_draw = has_copy_requests || !frame.root_damage_rect.IsEmpty() ||
|
| - !Capabilities().allow_empty_swap;
|
| - // If we have to draw but don't support partial swap the whole output should
|
| - // be considered damaged.
|
| - if (should_draw && !Capabilities().using_partial_swap)
|
| - frame.root_damage_rect = root_render_pass->output_rect;
|
| -
|
| // If all damage is being drawn with overlays or CALayers then skip drawing
|
| // the render passes.
|
| - if (!should_draw) {
|
| + if (frame.root_damage_rect.IsEmpty() && !has_copy_requests) {
|
| BindFramebufferToOutputSurface(&frame);
|
| } else {
|
| for (const auto& pass : *render_passes_in_draw_order) {
|
|
|