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

Unified Diff: ui/compositor/compositor.cc

Issue 999173004: cc: Move worker threads to content. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: some cleanup Created 5 years, 9 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
« no previous file with comments | « ui/compositor/compositor.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/compositor/compositor.cc
diff --git a/ui/compositor/compositor.cc b/ui/compositor/compositor.cc
index f050a64e1a74dede9134fcfe075fd614dcd9841c..0731e73dc26cf700045b71883cf4ac51a16eb6a9 100644
--- a/ui/compositor/compositor.cc
+++ b/ui/compositor/compositor.cc
@@ -14,6 +14,7 @@
#include "base/profiler/scoped_tracker.h"
#include "base/strings/string_util.h"
#include "base/sys_info.h"
+#include "base/threading/simple_thread.h"
#include "base/trace_event/trace_event.h"
#include "cc/base/switches.h"
#include "cc/input/input_handler.h"
@@ -21,6 +22,7 @@
#include "cc/output/begin_frame_args.h"
#include "cc/output/context_provider.h"
#include "cc/output/latency_info_swap_promise.h"
+#include "cc/resources/task_graph_runner.h"
#include "cc/scheduler/begin_frame_source.h"
#include "cc/surfaces/surface_id_allocator.h"
#include "cc/trees/layer_tree_host.h"
@@ -37,6 +39,21 @@
namespace {
+class RasterThread : public base::SimpleThread {
+ public:
+ RasterThread(cc::TaskGraphRunner* task_graph_runner)
+ : base::SimpleThread("UICompositorWorker"),
+ task_graph_runner_(task_graph_runner) {}
+
+ // Overridden from base::SimpleThread:
+ void Run() override { task_graph_runner_->Run(); }
+
+ private:
+ cc::TaskGraphRunner* task_graph_runner_;
+
+ DISALLOW_COPY_AND_ASSIGN(RasterThread);
+};
+
const double kDefaultRefreshRate = 60.0;
const double kTestRefreshRate = 200.0;
@@ -75,6 +92,8 @@ Compositor::Compositor(gfx::AcceleratedWidget widget,
widget_(widget),
surface_id_allocator_(context_factory->CreateSurfaceIdAllocator()),
task_runner_(task_runner),
+ task_graph_runner_(new cc::TaskGraphRunner),
+ raster_thread_(new RasterThread(task_graph_runner_.get())),
piman 2015/03/20 06:28:35 We wouldn't want one raster thread per compositor.
reveman 2015/03/20 07:42:02 Makes sense. Done.
vsync_manager_(new CompositorVSyncManager()),
device_scale_factor_(0.0f),
last_started_frame_(0),
@@ -135,11 +154,13 @@ Compositor::Compositor(gfx::AcceleratedWidget widget,
settings.use_one_copy = IsUIOneCopyEnabled();
settings.use_image_texture_target = context_factory_->GetImageTextureTarget();
+ raster_thread_->Start();
+
base::TimeTicks before_create = base::TimeTicks::Now();
host_ = cc::LayerTreeHost::CreateSingleThreaded(
this, this, context_factory_->GetSharedBitmapManager(),
- context_factory_->GetGpuMemoryBufferManager(), settings, task_runner_,
- nullptr);
+ context_factory_->GetGpuMemoryBufferManager(), task_graph_runner_.get(),
+ settings, task_runner_, nullptr);
UMA_HISTOGRAM_TIMES("GPU.CreateBrowserCompositor",
base::TimeTicks::Now() - before_create);
host_->SetRootLayer(root_web_layer_);
@@ -163,6 +184,9 @@ Compositor::~Compositor() {
// down any contexts that the |host_| may rely upon.
host_.reset();
+ task_graph_runner_->Shutdown();
+ raster_thread_->Join();
+
context_factory_->RemoveCompositor(this);
}
« no previous file with comments | « ui/compositor/compositor.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698