Index: cc/output/direct_renderer.cc |
diff --git a/cc/output/direct_renderer.cc b/cc/output/direct_renderer.cc |
index 31f0d7ace0e13e7589142f1da6769fdddaef70f2..523f3c6dc248fe52cea5981b56e9f588f52518e9 100644 |
--- a/cc/output/direct_renderer.cc |
+++ b/cc/output/direct_renderer.cc |
@@ -98,6 +98,10 @@ void DirectRenderer::Initialize() { |
allow_empty_swap_ = true; |
if (context_provider->ContextCapabilities().dc_layers) |
supports_dc_layers_ = true; |
+ if (context_provider->ContextCapabilities() |
+ .disable_non_empty_post_sub_buffers) { |
+ use_partial_swap_ = false; |
+ } |
} |
initialized_ = true; |
@@ -346,19 +350,8 @@ void DirectRenderer::DrawFrame(RenderPassList* render_passes_in_draw_order, |
if (!skip_drawing_root_render_pass && !use_partial_swap_) |
current_frame()->root_damage_rect = root_render_pass->output_rect; |
- if (skip_drawing_root_render_pass) { |
- // If any of the overlays is the output surface, then ensure that the |
- // backbuffer be allocated (allocation of the backbuffer is a side-effect |
- // of BindFramebufferToOutputSurface). |
- for (auto& overlay : current_frame()->overlay_list) { |
- if (overlay.use_output_surface_for_resource) { |
- BindFramebufferToOutputSurface(); |
- break; |
- } |
- } |
- } else { |
+ if (!skip_drawing_root_render_pass) |
DrawRenderPassAndExecuteCopyRequests(root_render_pass); |
- } |
FinishDrawingFrame(); |
render_passes_in_draw_order->clear(); |