| Index: cc/output/direct_renderer.cc
|
| diff --git a/cc/output/direct_renderer.cc b/cc/output/direct_renderer.cc
|
| index 0a66eea2ae10bab6c2007d7e50fe60ea2c94d924..43e19c39c56a333e6f3e59092ea08ea05fd26188 100644
|
| --- a/cc/output/direct_renderer.cc
|
| +++ b/cc/output/direct_renderer.cc
|
| @@ -242,6 +242,25 @@ void DirectRenderer::DrawFrame(RenderPassList* render_passes_in_draw_order,
|
| overlay_processor_->ProcessForOverlays(
|
| resource_provider_, render_passes_in_draw_order, &frame.overlay_list,
|
| &frame.root_damage_rect);
|
| +
|
| + // No need to render in case the damage rect is completely composited using
|
| + // overlays and dont have any copy requests.
|
| + if (frame.root_damage_rect.IsEmpty()) {
|
| + bool handle_copy_requests = false;
|
| + for (auto* pass : *render_passes_in_draw_order) {
|
| + if (!pass->copy_requests.empty()) {
|
| + handle_copy_requests = true;
|
| + break;
|
| + }
|
| + }
|
| +
|
| + if (!handle_copy_requests) {
|
| + BindFramebufferToOutputSurface(&frame);
|
| + FinishDrawingFrame(&frame);
|
| + render_passes_in_draw_order->clear();
|
| + return;
|
| + }
|
| + }
|
| }
|
|
|
| for (size_t i = 0; i < render_passes_in_draw_order->size(); ++i) {
|
|
|