| Index: cc/output/direct_renderer.cc
|
| diff --git a/cc/output/direct_renderer.cc b/cc/output/direct_renderer.cc
|
| index c077ffe21ae3c16d1409c1e11cb794ede263360d..d508869a39f95ec3b6f48d5f056df370624e36a0 100644
|
| --- a/cc/output/direct_renderer.cc
|
| +++ b/cc/output/direct_renderer.cc
|
| @@ -14,6 +14,7 @@
|
| #include "cc/base/math_util.h"
|
| #include "cc/output/copy_output_request.h"
|
| #include "cc/quads/draw_quad.h"
|
| +#include "cc/resources/raster_worker_pool.h"
|
| #include "ui/gfx/rect_conversions.h"
|
| #include "ui/gfx/transform.h"
|
|
|
| @@ -417,6 +418,35 @@ bool DirectRenderer::UseRenderPass(DrawingFrame* frame,
|
| return BindFramebufferToTexture(frame, texture, render_pass->output_rect);
|
| }
|
|
|
| +void DirectRenderer::RunOnDemandRasterTask(
|
| + internal::Task* on_demand_raster_task) {
|
| + internal::TaskGraphRunner* task_graph_runner =
|
| + RasterWorkerPool::GetTaskGraphRunner();
|
| + DCHECK(task_graph_runner);
|
| +
|
| + // Make sure we have a unique task namespace token.
|
| + if (!on_demand_task_namespace_.IsValid())
|
| + on_demand_task_namespace_ = task_graph_runner->GetNamespaceToken();
|
| +
|
| + // Construct a task graph that contains this single raster task.
|
| + internal::TaskGraph graph;
|
| + graph.nodes.push_back(
|
| + internal::TaskGraph::Node(on_demand_raster_task,
|
| + RasterWorkerPool::kOnDemandRasterTaskPriority,
|
| + 0u));
|
| +
|
| + // Schedule task and wait for task graph runner to finish running it.
|
| + task_graph_runner->SetTaskGraph(on_demand_task_namespace_, &graph);
|
| + task_graph_runner->WaitForTasksToFinishRunning(on_demand_task_namespace_);
|
| +
|
| + // Collect task now that it has finished running.
|
| + internal::Task::Vector completed_tasks;
|
| + task_graph_runner->CollectCompletedTasks(on_demand_task_namespace_,
|
| + &completed_tasks);
|
| + DCHECK_EQ(1u, completed_tasks.size());
|
| + DCHECK_EQ(completed_tasks[0], on_demand_raster_task);
|
| +}
|
| +
|
| bool DirectRenderer::HasAllocatedResourcesForTesting(RenderPass::Id id)
|
| const {
|
| ScopedResource* texture = render_pass_textures_.get(id);
|
|
|