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

Unified Diff: cc/resources/raster_worker_pool.h

Issue 110883015: Add preliminary support for hw-accelerated tile rasterization. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years 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/resources/raster_worker_pool.h
diff --git a/cc/resources/raster_worker_pool.h b/cc/resources/raster_worker_pool.h
index fac2fd845ce81db11136a986f0437db89f6e8867..5db134cdeee0e494a58d35b48b5b575b0ede1bfb 100644
--- a/cc/resources/raster_worker_pool.h
+++ b/cc/resources/raster_worker_pool.h
@@ -36,6 +36,7 @@ class CC_EXPORT RasterWorkerPoolTask
void* buffer,
gfx::Size size,
int stride) = 0;
+ virtual void RunOnOriginThread() = 0;
virtual void CompleteOnOriginThread() = 0;
void DidRun(bool was_canceled);
@@ -144,8 +145,10 @@ class CC_EXPORT RasterWorkerPool : public WorkerPool {
typedef std::vector<scoped_refptr<internal::RasterWorkerPoolTask> >
TaskVector;
- TaskVector tasks_;
typedef base::hash_set<internal::RasterWorkerPoolTask*> TaskSet;
+ TaskVector origin_thread_tasks_;
reveman 2013/12/17 00:28:48 Maybe we should put all tasks in |tasks_| for now
alokp 2013/12/17 22:12:15 Done.
+ // Worker thread tasks.
+ TaskVector tasks_;
TaskSet tasks_required_for_activation_;
};
@@ -162,9 +165,13 @@ class CC_EXPORT RasterWorkerPool : public WorkerPool {
friend class RasterWorkerPool;
friend class RasterWorkerPoolTest;
- explicit RasterTask(internal::RasterWorkerPoolTask* internal);
+ explicit RasterTask(internal::RasterWorkerPoolTask* internal,
+ bool must_run_on_origin_thread);
scoped_refptr<internal::RasterWorkerPoolTask> internal_;
+ // True if this task must be run on origin thread,
+ // not on a worker thread.
+ bool must_run_on_origin_thread_;
reveman 2013/12/17 00:28:48 Why must_run_on_origin_thread here but use_gpu_ras
alokp 2013/12/17 22:12:15 Done.
};
virtual ~RasterWorkerPool();
@@ -189,7 +196,7 @@ class CC_EXPORT RasterWorkerPool : public WorkerPool {
virtual ResourceFormat GetResourceFormat() const = 0;
// TODO(vmpstr): Figure out an elegant way to not pass this many parameters.
- static RasterTask CreateRasterTask(
+ RasterTask CreateRasterTask(
const Resource* resource,
PicturePileImpl* picture_pile,
gfx::Rect content_rect,
@@ -199,6 +206,7 @@ class CC_EXPORT RasterWorkerPool : public WorkerPool {
int layer_id,
const void* tile_id,
int source_frame_number,
+ bool use_gpu_rasterization,
RenderingStatsInstrumentation* rendering_stats,
const RasterTask::Reply& reply,
Task::Set* dependencies);
@@ -218,17 +226,21 @@ class CC_EXPORT RasterWorkerPool : public WorkerPool {
typedef base::hash_map<TaskMapKey,
scoped_refptr<internal::WorkerPoolTask> > TaskMap;
- RasterWorkerPool(ResourceProvider* resource_provider, size_t num_threads);
+ RasterWorkerPool(ResourceProvider* resource_provider,
+ ContextProvider* context_provider,
+ size_t num_threads);
virtual void OnRasterTasksFinished() = 0;
virtual void OnRasterTasksRequiredForActivationFinished() = 0;
+ void CompleteOriginThreadTasks(RasterTask::Queue* queue);
reveman 2013/12/17 00:28:48 Do you have to pass a RasterTask::Queue* to this f
alokp 2013/12/17 22:12:15 Done.
void SetRasterTasks(RasterTask::Queue* queue);
bool IsRasterTaskRequiredForActivation(
internal::RasterWorkerPoolTask* task) const;
RasterWorkerPoolClient* client() const { return client_; }
ResourceProvider* resource_provider() const { return resource_provider_; }
+ ContextProvider* context_provider() const { return context_provider_; }
const RasterTaskVector& raster_tasks() const { return raster_tasks_; }
const RasterTaskSet& raster_tasks_required_for_activation() const {
return raster_tasks_required_for_activation_;
@@ -268,6 +280,7 @@ class CC_EXPORT RasterWorkerPool : public WorkerPool {
RasterWorkerPoolClient* client_;
ResourceProvider* resource_provider_;
+ ContextProvider* context_provider_;
RasterTask::Queue::TaskVector raster_tasks_;
RasterTask::Queue::TaskSet raster_tasks_required_for_activation_;

Powered by Google App Engine
This is Rietveld 408576698