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

Unified Diff: cc/output/direct_renderer.cc

Issue 411643002: Early wait on texture resource sync points in gl_renderer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 5 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
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");
« no previous file with comments | « cc/output/direct_renderer.h ('k') | cc/output/gl_renderer.h » ('j') | cc/output/gl_renderer.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698