Chromium Code Reviews| Index: cc/output/direct_renderer.cc |
| diff --git a/cc/output/direct_renderer.cc b/cc/output/direct_renderer.cc |
| index 7554a97e3543219800d295c10faab1df75e5a728..99a75dc3de289534cbe9294dbc18fe5ccbe03549 100644 |
| --- a/cc/output/direct_renderer.cc |
| +++ b/cc/output/direct_renderer.cc |
| @@ -141,14 +141,29 @@ DirectRenderer::DirectRenderer(RendererClient* client, |
| DirectRenderer::~DirectRenderer() {} |
| +const TileDrawQuad* DirectRenderer::CanPassBeDrawnDirectly( |
| + const RenderPass* pass) { |
| + return nullptr; |
| +} |
| + |
| void DirectRenderer::DecideRenderPassAllocationsForFrame( |
| const RenderPassList& render_passes_in_draw_order) { |
| + render_pass_bypass_quads_.clear(); |
| + |
| std::unordered_map<RenderPassId, gfx::Size, RenderPassIdHash> |
| render_passes_in_frame; |
| - for (size_t i = 0; i < render_passes_in_draw_order.size(); ++i) |
| + RenderPass* root_render_pass = render_passes_in_draw_order.back().get(); |
| + for (size_t i = 0; i < render_passes_in_draw_order.size(); ++i) { |
| + RenderPass* pass = render_passes_in_draw_order[i].get(); |
| + if (pass != root_render_pass) { |
|
enne (OOO)
2016/06/13 18:41:17
Maybe we shouldn't drop the root render pass?
Thi
|
| + if (const TileDrawQuad* tile_quad = CanPassBeDrawnDirectly(pass)) { |
| + render_pass_bypass_quads_[pass->id] = *tile_quad; |
| + continue; |
| + } |
| + } |
| render_passes_in_frame.insert(std::pair<RenderPassId, gfx::Size>( |
| - render_passes_in_draw_order[i]->id, |
| - RenderPassTextureSize(render_passes_in_draw_order[i].get()))); |
| + pass->id, RenderPassTextureSize(pass))); |
| + } |
| std::vector<RenderPassId> passes_to_delete; |
| for (auto pass_iter = render_pass_textures_.begin(); |
| @@ -405,6 +420,11 @@ void DirectRenderer::FlushPolygons( |
| void DirectRenderer::DrawRenderPassAndExecuteCopyRequests( |
| DrawingFrame* frame, |
| RenderPass* render_pass) { |
| + if (render_pass_bypass_quads_.find(render_pass->id) != |
| + render_pass_bypass_quads_.end()) { |
| + return; |
| + } |
| + |
| DrawRenderPass(frame, render_pass); |
| bool first_request = true; |