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

Side by Side Diff: cc/resources/pixel_buffer_raster_worker_pool.h

Issue 228173002: cc: Separate RasterWorkerPool interface from implementation details. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address review feedback Created 6 years, 8 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « cc/resources/managed_tile_state.h ('k') | cc/resources/pixel_buffer_raster_worker_pool.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CC_RESOURCES_PIXEL_BUFFER_RASTER_WORKER_POOL_H_ 5 #ifndef CC_RESOURCES_PIXEL_BUFFER_RASTER_WORKER_POOL_H_
6 #define CC_RESOURCES_PIXEL_BUFFER_RASTER_WORKER_POOL_H_ 6 #define CC_RESOURCES_PIXEL_BUFFER_RASTER_WORKER_POOL_H_
7 7
8 #include <deque> 8 #include <deque>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/memory/weak_ptr.h" 11 #include "base/memory/weak_ptr.h"
12 #include "base/values.h" 12 #include "base/values.h"
13 #include "cc/resources/raster_worker_pool.h" 13 #include "cc/resources/raster_worker_pool.h"
14 #include "cc/resources/rasterizer.h"
14 15
15 namespace cc { 16 namespace cc {
16 class ResourceProvider; 17 class ResourceProvider;
17 18
18 class CC_EXPORT PixelBufferRasterWorkerPool 19 class CC_EXPORT PixelBufferRasterWorkerPool
19 : public RasterWorkerPool, 20 : public RasterWorkerPool,
20 public internal::WorkerPoolTaskClient { 21 public Rasterizer,
22 public internal::RasterizerTaskClient {
21 public: 23 public:
22 virtual ~PixelBufferRasterWorkerPool(); 24 virtual ~PixelBufferRasterWorkerPool();
23 25
24 static scoped_ptr<PixelBufferRasterWorkerPool> Create( 26 static scoped_ptr<RasterWorkerPool> Create(
25 base::SequencedTaskRunner* task_runner, 27 base::SequencedTaskRunner* task_runner,
28 internal::TaskGraphRunner* task_graph_runner,
26 ResourceProvider* resource_provider, 29 ResourceProvider* resource_provider,
27 size_t max_transfer_buffer_usage_bytes); 30 size_t max_transfer_buffer_usage_bytes);
28 31
29 // Overridden from RasterWorkerPool: 32 // Overridden from RasterWorkerPool:
30 virtual void SetClient(RasterWorkerPoolClient* client) OVERRIDE; 33 virtual Rasterizer* AsRasterizer() OVERRIDE;
34
35 // Overridden from Rasterizer:
36 virtual void SetClient(RasterizerClient* client) OVERRIDE;
31 virtual void Shutdown() OVERRIDE; 37 virtual void Shutdown() OVERRIDE;
32 virtual void ScheduleTasks(RasterTaskQueue* queue) OVERRIDE; 38 virtual void ScheduleTasks(RasterTaskQueue* queue) OVERRIDE;
33 virtual unsigned GetResourceTarget() const OVERRIDE; 39 virtual unsigned GetResourceTarget() const OVERRIDE;
34 virtual ResourceFormat GetResourceFormat() const OVERRIDE; 40 virtual ResourceFormat GetResourceFormat() const OVERRIDE;
35 virtual void CheckForCompletedTasks() OVERRIDE; 41 virtual void CheckForCompletedTasks() OVERRIDE;
36 42
37 // Overridden from internal::WorkerPoolTaskClient: 43 // Overridden from internal::RasterizerTaskClient:
38 virtual SkCanvas* AcquireCanvasForRaster(internal::WorkerPoolTask* task, 44 virtual SkCanvas* AcquireCanvasForRaster(internal::RasterTask* task) OVERRIDE;
39 const Resource* resource) OVERRIDE; 45 virtual void ReleaseCanvasForRaster(internal::RasterTask* task) OVERRIDE;
40 virtual void ReleaseCanvasForRaster(internal::WorkerPoolTask* task,
41 const Resource* resource) OVERRIDE;
42
43 protected:
44 PixelBufferRasterWorkerPool(base::SequencedTaskRunner* task_runner,
45 internal::TaskGraphRunner* task_graph_runner,
46 ResourceProvider* resource_provider,
47 size_t max_transfer_buffer_usage_bytes);
48 46
49 private: 47 private:
50 struct RasterTaskState { 48 struct RasterTaskState {
51 class TaskComparator { 49 class TaskComparator {
52 public: 50 public:
53 explicit TaskComparator(const internal::WorkerPoolTask* task) 51 explicit TaskComparator(const internal::RasterTask* task) : task_(task) {}
54 : task_(task) {}
55 52
56 bool operator()(const RasterTaskState& state) const { 53 bool operator()(const RasterTaskState& state) const {
57 return state.task == task_; 54 return state.task == task_;
58 } 55 }
59 56
60 private: 57 private:
61 const internal::WorkerPoolTask* task_; 58 const internal::RasterTask* task_;
62 }; 59 };
63 60
64 typedef std::vector<RasterTaskState> Vector; 61 typedef std::vector<RasterTaskState> Vector;
65 62
66 RasterTaskState(internal::WorkerPoolTask* task, 63 RasterTaskState(internal::RasterTask* task, bool required_for_activation)
67 bool required_for_activation)
68 : type(UNSCHEDULED), 64 : type(UNSCHEDULED),
69 task(task), 65 task(task),
70 resource(NULL),
71 required_for_activation(required_for_activation) {} 66 required_for_activation(required_for_activation) {}
72 67
73 enum { UNSCHEDULED, SCHEDULED, UPLOADING, COMPLETED } type; 68 enum { UNSCHEDULED, SCHEDULED, UPLOADING, COMPLETED } type;
74 internal::WorkerPoolTask* task; 69 internal::RasterTask* task;
75 const Resource* resource;
76 bool required_for_activation; 70 bool required_for_activation;
77 }; 71 };
78 72
79 typedef std::deque<scoped_refptr<internal::WorkerPoolTask> > TaskDeque; 73 typedef std::deque<scoped_refptr<internal::RasterTask> > RasterTaskDeque;
74
75 PixelBufferRasterWorkerPool(base::SequencedTaskRunner* task_runner,
76 internal::TaskGraphRunner* task_graph_runner,
77 ResourceProvider* resource_provider,
78 size_t max_transfer_buffer_usage_bytes);
80 79
81 void OnRasterFinished(); 80 void OnRasterFinished();
82 void OnRasterRequiredForActivationFinished(); 81 void OnRasterRequiredForActivationFinished();
83 void FlushUploads(); 82 void FlushUploads();
84 void CheckForCompletedUploads(); 83 void CheckForCompletedUploads();
85 void ScheduleCheckForCompletedRasterTasks(); 84 void ScheduleCheckForCompletedRasterTasks();
86 void OnCheckForCompletedRasterTasks(); 85 void OnCheckForCompletedRasterTasks();
87 void CheckForCompletedRasterTasks(); 86 void CheckForCompletedRasterTasks();
88 void ScheduleMoreTasks(); 87 void ScheduleMoreTasks();
89 unsigned PendingRasterTaskCount() const; 88 unsigned PendingRasterTaskCount() const;
90 bool HasPendingTasks() const; 89 bool HasPendingTasks() const;
91 bool HasPendingTasksRequiredForActivation() const; 90 bool HasPendingTasksRequiredForActivation() const;
92 void CheckForCompletedWorkerPoolTasks(); 91 void CheckForCompletedRasterizerTasks();
93 92
94 const char* StateName() const; 93 const char* StateName() const;
95 scoped_ptr<base::Value> StateAsValue() const; 94 scoped_ptr<base::Value> StateAsValue() const;
96 scoped_ptr<base::Value> ThrottleStateAsValue() const; 95 scoped_ptr<base::Value> ThrottleStateAsValue() const;
97 96
98 scoped_refptr<base::SequencedTaskRunner> task_runner_; 97 scoped_refptr<base::SequencedTaskRunner> task_runner_;
99 internal::TaskGraphRunner* task_graph_runner_; 98 internal::TaskGraphRunner* task_graph_runner_;
100 const internal::NamespaceToken namespace_token_; 99 const internal::NamespaceToken namespace_token_;
101 RasterWorkerPoolClient* client_; 100 RasterizerClient* client_;
102 ResourceProvider* resource_provider_; 101 ResourceProvider* resource_provider_;
103 102
104 bool shutdown_; 103 bool shutdown_;
105 104
106 RasterTaskQueue raster_tasks_; 105 RasterTaskQueue raster_tasks_;
107 RasterTaskState::Vector raster_task_states_; 106 RasterTaskState::Vector raster_task_states_;
108 TaskDeque raster_tasks_with_pending_upload_; 107 RasterTaskDeque raster_tasks_with_pending_upload_;
109 internal::WorkerPoolTask::Vector completed_raster_tasks_; 108 internal::RasterTask::Vector completed_raster_tasks_;
110 internal::WorkerPoolTask::Vector completed_image_decode_tasks_; 109 internal::RasterizerTask::Vector completed_image_decode_tasks_;
111 110
112 size_t scheduled_raster_task_count_; 111 size_t scheduled_raster_task_count_;
113 size_t raster_tasks_required_for_activation_count_; 112 size_t raster_tasks_required_for_activation_count_;
114 size_t bytes_pending_upload_; 113 size_t bytes_pending_upload_;
115 size_t max_bytes_pending_upload_; 114 size_t max_bytes_pending_upload_;
116 bool has_performed_uploads_since_last_flush_; 115 bool has_performed_uploads_since_last_flush_;
117 base::TimeTicks check_for_completed_raster_tasks_time_; 116 base::TimeTicks check_for_completed_raster_tasks_time_;
118 bool check_for_completed_raster_tasks_pending_; 117 bool check_for_completed_raster_tasks_pending_;
119 118
120 bool should_notify_client_if_no_tasks_are_pending_; 119 bool should_notify_client_if_no_tasks_are_pending_;
121 bool should_notify_client_if_no_tasks_required_for_activation_are_pending_; 120 bool should_notify_client_if_no_tasks_required_for_activation_are_pending_;
122 bool raster_finished_task_pending_; 121 bool raster_finished_task_pending_;
123 bool raster_required_for_activation_finished_task_pending_; 122 bool raster_required_for_activation_finished_task_pending_;
124 123
125 base::WeakPtrFactory<PixelBufferRasterWorkerPool> 124 base::WeakPtrFactory<PixelBufferRasterWorkerPool>
126 raster_finished_weak_ptr_factory_; 125 raster_finished_weak_ptr_factory_;
127 126
128 scoped_refptr<internal::WorkerPoolTask> raster_finished_task_; 127 scoped_refptr<internal::RasterizerTask> raster_finished_task_;
129 scoped_refptr<internal::WorkerPoolTask> 128 scoped_refptr<internal::RasterizerTask>
130 raster_required_for_activation_finished_task_; 129 raster_required_for_activation_finished_task_;
131 130
132 // Task graph used when scheduling tasks and vector used to gather 131 // Task graph used when scheduling tasks and vector used to gather
133 // completed tasks. 132 // completed tasks.
134 internal::TaskGraph graph_; 133 internal::TaskGraph graph_;
135 internal::Task::Vector completed_tasks_; 134 internal::Task::Vector completed_tasks_;
136 135
137 base::WeakPtrFactory<PixelBufferRasterWorkerPool> weak_ptr_factory_; 136 base::WeakPtrFactory<PixelBufferRasterWorkerPool> weak_ptr_factory_;
138 137
139 DISALLOW_COPY_AND_ASSIGN(PixelBufferRasterWorkerPool); 138 DISALLOW_COPY_AND_ASSIGN(PixelBufferRasterWorkerPool);
140 }; 139 };
141 140
142 } // namespace cc 141 } // namespace cc
143 142
144 #endif // CC_RESOURCES_PIXEL_BUFFER_RASTER_WORKER_POOL_H_ 143 #endif // CC_RESOURCES_PIXEL_BUFFER_RASTER_WORKER_POOL_H_
OLDNEW
« no previous file with comments | « cc/resources/managed_tile_state.h ('k') | cc/resources/pixel_buffer_raster_worker_pool.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698