Chromium Code Reviews| Index: cc/output/direct_renderer.cc |
| diff --git a/cc/output/direct_renderer.cc b/cc/output/direct_renderer.cc |
| index ccde85b6e5ef668aa7cf6b4a925527e098ff52ee..e770642bfd9e8be731a869278590a96b36696f13 100644 |
| --- a/cc/output/direct_renderer.cc |
| +++ b/cc/output/direct_renderer.cc |
| @@ -226,6 +226,12 @@ void DirectRenderer::DrawFrame(RenderPassList* render_passes_in_draw_order, |
| // viewport size is never set. |
| output_surface_->Reshape(device_viewport_rect.size(), device_scale_factor); |
| + // Try to lock resources first. |
| + for (size_t i = 0; i < render_passes_in_draw_order->size(); ++i) { |
| + RenderPass* pass = render_passes_in_draw_order->at(i); |
| + PrelockRenderPass(&frame, pass); |
| + } |
| + |
| BeginDrawingFrame(&frame); |
| for (size_t i = 0; i < render_passes_in_draw_order->size(); ++i) { |
| RenderPass* pass = render_passes_in_draw_order->at(i); |
| @@ -329,6 +335,18 @@ void DirectRenderer::SetScissorTestRectInDrawSpace( |
| void DirectRenderer::FinishDrawingQuadList() {} |
| +void DirectRenderer::PrelockRenderPass(DrawingFrame* frame, |
| + const RenderPass* render_pass) { |
| + const QuadList& quad_list = render_pass->quad_list; |
| + int i = 0; |
| + for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); |
| + it != quad_list.BackToFrontEnd(); |
| + ++it) { |
|
danakj
2014/08/13 13:52:12
You can IterateResources here to get each of the r
vmiura
2014/08/13 22:50:39
Done.
|
| + DoPrelockQuad(frame, *it); |
| + i++; |
| + } |
| +} |
| + |
| void DirectRenderer::DrawRenderPass(DrawingFrame* frame, |
| const RenderPass* render_pass) { |
| TRACE_EVENT0("cc", "DirectRenderer::DrawRenderPass"); |