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"); |