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

Unified Diff: cc/trees/layer_tree_host_impl.cc

Issue 14417014: cc: Add tile-free software compositing mode. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add tests and optimize quad generation Created 7 years, 7 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 side-by-side diff with in-line comments
Download patch
« cc/output/software_renderer.cc ('K') | « cc/resources/tile_manager.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 511ea0ad4d618005ab1206985743a18ae0518c5a..8c0eec7f1c515204e916df730988282946448e0b 100644
--- a/cc/trees/layer_tree_host_impl.cc
+++ b/cc/trees/layer_tree_host_impl.cc
@@ -602,6 +602,8 @@ bool LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) {
occlusion_tracker.EnterLayer(it, prevent_occlusion);
AppendQuadsData append_quads_data(target_render_pass->id);
+ if (output_surface_->ForcedDrawToSoftwareDevice())
+ append_quads_data.cannot_append_tile_draw_quads = true;
if (it.represents_target_render_surface()) {
if (it->HasRequestCopyCallback()) {
@@ -713,7 +715,8 @@ bool LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) {
DCHECK(!have_copy_request);
RemoveRenderPasses(CullRenderPassesWithNoQuads(), frame);
- renderer_->DecideRenderPassAllocationsForFrame(frame->render_passes);
+ if (!output_surface_->ForcedDrawToSoftwareDevice())
+ renderer_->DecideRenderPassAllocationsForFrame(frame->render_passes);
RemoveRenderPasses(CullRenderPassesWithCachedTextures(renderer_.get()),
frame);
@@ -1116,7 +1119,13 @@ void LayerTreeHostImpl::DrawLayers(FrameData* frame,
if (active_tree_->hud_layer())
active_tree_->hud_layer()->UpdateHudTexture(resource_provider_.get());
- renderer_->DrawFrame(&frame->render_passes);
+ if (output_surface_->ForcedDrawToSoftwareDevice()) {
+ scoped_ptr<SoftwareRenderer> temp_software_renderer =
+ SoftwareRenderer::Create(this, output_surface_.get(), NULL);
+ temp_software_renderer->DrawFrame(&frame->render_passes);
+ } else {
+ renderer_->DrawFrame(&frame->render_passes);
+ }
// The render passes should be consumed by the renderer.
DCHECK(frame->render_passes.empty());
frame->render_passes_by_id.clear();
« cc/output/software_renderer.cc ('K') | « cc/resources/tile_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698