Index: cc/resources/raster_worker_pool_unittest.cc |
diff --git a/cc/resources/raster_worker_pool_unittest.cc b/cc/resources/raster_worker_pool_unittest.cc |
index 73debb437a9393ad4bf926e0b85846e7df9ceab4..4170a7a0790d067c9b002bf8090fe9b147d5b124 100644 |
--- a/cc/resources/raster_worker_pool_unittest.cc |
+++ b/cc/resources/raster_worker_pool_unittest.cc |
@@ -8,6 +8,7 @@ |
#include <vector> |
#include "base/cancelable_callback.h" |
+#include "cc/resources/direct_raster_worker_pool.h" |
#include "cc/resources/image_raster_worker_pool.h" |
#include "cc/resources/picture_pile.h" |
#include "cc/resources/picture_pile_impl.h" |
@@ -30,7 +31,8 @@ enum RasterThread { |
enum RasterWorkerPoolType { |
RASTER_WORKER_POOL_TYPE_PIXEL_BUFFER, |
- RASTER_WORKER_POOL_TYPE_IMAGE |
+ RASTER_WORKER_POOL_TYPE_IMAGE, |
+ RASTER_WORKER_POOL_TYPE_DIRECT |
}; |
class TestRasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask { |
@@ -41,11 +43,8 @@ class TestRasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask { |
TestRasterWorkerPoolTaskImpl(const Resource* resource, |
const Reply& reply, |
- internal::Task::Vector* dependencies, |
- bool use_gpu_rasterization) |
- : internal::RasterWorkerPoolTask(resource, |
- dependencies, |
- use_gpu_rasterization), |
+ internal::WorkerPoolTask::Vector* dependencies) |
+ : internal::RasterWorkerPoolTask(resource, dependencies), |
reply_(reply), |
raster_thread_(RASTER_THREAD_NONE) {} |
@@ -59,6 +58,9 @@ class TestRasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask { |
OVERRIDE { |
client->AcquireCanvasForRaster(this); |
} |
+ virtual void RunOnOriginThread() OVERRIDE { |
+ raster_thread_ = RASTER_THREAD_ORIGIN; |
+ } |
virtual void CompleteOnOriginThread(internal::WorkerPoolTaskClient* client) |
OVERRIDE { |
client->OnRasterCompleted(this, PicturePileImpl::Analysis()); |
@@ -68,12 +70,6 @@ class TestRasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask { |
PicturePileImpl::Analysis(), !HasFinishedRunning(), raster_thread_); |
} |
- // Overridden from internal::RasterWorkerPoolTask: |
- virtual void RunOnOriginThread(ResourceProvider* resource_provider, |
- ContextProvider* context_provider) OVERRIDE { |
- raster_thread_ = RASTER_THREAD_ORIGIN; |
- } |
- |
protected: |
virtual ~TestRasterWorkerPoolTaskImpl() {} |
@@ -87,15 +83,12 @@ class TestRasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask { |
class BlockingTestRasterWorkerPoolTaskImpl |
: public TestRasterWorkerPoolTaskImpl { |
public: |
- BlockingTestRasterWorkerPoolTaskImpl(const Resource* resource, |
- const Reply& reply, |
- base::Lock* lock, |
- internal::Task::Vector* dependencies, |
- bool use_gpu_rasterization) |
- : TestRasterWorkerPoolTaskImpl(resource, |
- reply, |
- dependencies, |
- use_gpu_rasterization), |
+ BlockingTestRasterWorkerPoolTaskImpl( |
+ const Resource* resource, |
+ const Reply& reply, |
+ base::Lock* lock, |
+ internal::WorkerPoolTask::Vector* dependencies) |
+ : TestRasterWorkerPoolTaskImpl(resource, reply, dependencies), |
lock_(lock) {} |
// Overridden from internal::Task: |
@@ -125,21 +118,19 @@ class RasterWorkerPoolTest |
typedef std::vector<RasterTask> Vector; |
static RasterTask Create(const Resource* resource, |
- const TestRasterWorkerPoolTaskImpl::Reply& reply, |
- bool use_gpu_rasterization) { |
- internal::Task::Vector dependencies; |
- return RasterTask(new TestRasterWorkerPoolTaskImpl( |
- resource, reply, &dependencies, use_gpu_rasterization)); |
+ const TestRasterWorkerPoolTaskImpl::Reply& reply) { |
+ internal::WorkerPoolTask::Vector dependencies; |
+ return RasterTask( |
+ new TestRasterWorkerPoolTaskImpl(resource, reply, &dependencies)); |
} |
static RasterTask CreateBlocking( |
const Resource* resource, |
const TestRasterWorkerPoolTaskImpl::Reply& reply, |
- base::Lock* lock, |
- bool use_gpu_rasterization) { |
- internal::Task::Vector dependencies; |
+ base::Lock* lock) { |
+ internal::WorkerPoolTask::Vector dependencies; |
return RasterTask(new BlockingTestRasterWorkerPoolTaskImpl( |
- resource, reply, lock, &dependencies, use_gpu_rasterization)); |
+ resource, reply, lock, &dependencies)); |
} |
private: |
@@ -169,12 +160,15 @@ class RasterWorkerPoolTest |
case RASTER_WORKER_POOL_TYPE_PIXEL_BUFFER: |
raster_worker_pool_ = PixelBufferRasterWorkerPool::Create( |
resource_provider_.get(), |
- context_provider_.get(), |
std::numeric_limits<size_t>::max()); |
break; |
case RASTER_WORKER_POOL_TYPE_IMAGE: |
raster_worker_pool_ = ImageRasterWorkerPool::Create( |
- resource_provider_.get(), context_provider_.get(), GL_TEXTURE_2D); |
+ resource_provider_.get(), GL_TEXTURE_2D); |
+ break; |
+ case RASTER_WORKER_POOL_TYPE_DIRECT: |
+ raster_worker_pool_ = DirectRasterWorkerPool::Create( |
+ resource_provider_.get(), context_provider_.get()); |
break; |
} |
@@ -218,16 +212,16 @@ class RasterWorkerPoolTest |
} |
void ScheduleTasks() { |
- RasterWorkerPool::RasterTask::Queue tasks; |
+ RasterWorkerPool::RasterTask::Queue queue; |
for (RasterTask::Vector::iterator it = tasks_.begin(); it != tasks_.end(); |
++it) |
- tasks.Append(*it, false); |
+ queue.Append(*it, false); |
- raster_worker_pool_->ScheduleTasks(&tasks); |
+ raster_worker_pool_->ScheduleTasks(&queue); |
} |
- void AppendTask(unsigned id, bool use_gpu_rasterization) { |
+ void AppendTask(unsigned id) { |
const gfx::Size size(1, 1); |
scoped_ptr<ScopedResource> resource( |
@@ -240,8 +234,7 @@ class RasterWorkerPoolTest |
base::Bind(&RasterWorkerPoolTest::OnTaskCompleted, |
base::Unretained(this), |
base::Passed(&resource), |
- id), |
- use_gpu_rasterization)); |
+ id))); |
} |
void AppendBlockingTask(unsigned id, base::Lock* lock) { |
@@ -258,8 +251,7 @@ class RasterWorkerPoolTest |
base::Unretained(this), |
base::Passed(&resource), |
id), |
- lock, |
- false)); |
+ lock)); |
} |
const std::vector<RasterTaskResult>& completed_tasks() const { |
@@ -298,8 +290,8 @@ class RasterWorkerPoolTest |
}; |
TEST_P(RasterWorkerPoolTest, Basic) { |
- AppendTask(0u, false); |
- AppendTask(1u, false); |
+ AppendTask(0u); |
+ AppendTask(1u); |
ScheduleTasks(); |
RunMessageLoopUntilAllTasksHaveCompleted(); |
@@ -307,57 +299,22 @@ TEST_P(RasterWorkerPoolTest, Basic) { |
ASSERT_EQ(2u, completed_tasks().size()); |
EXPECT_FALSE(completed_tasks()[0].canceled); |
EXPECT_FALSE(completed_tasks()[1].canceled); |
- EXPECT_EQ(RASTER_THREAD_WORKER, completed_tasks()[0].raster_thread); |
- EXPECT_EQ(RASTER_THREAD_WORKER, completed_tasks()[1].raster_thread); |
-} |
- |
-TEST_P(RasterWorkerPoolTest, GpuRaster) { |
- AppendTask(0u, true); // GPU raster. |
- ScheduleTasks(); |
- |
- RunMessageLoopUntilAllTasksHaveCompleted(); |
- |
- ASSERT_EQ(1u, completed_tasks().size()); |
- EXPECT_EQ(0u, completed_tasks()[0].id); |
- EXPECT_FALSE(completed_tasks()[0].canceled); |
- EXPECT_EQ(RASTER_THREAD_ORIGIN, completed_tasks()[0].raster_thread); |
-} |
- |
-TEST_P(RasterWorkerPoolTest, HybridRaster) { |
- AppendTask(0u, false); // Software raster. |
- AppendTask(1u, true); // GPU raster. |
- ScheduleTasks(); |
- |
- RunMessageLoopUntilAllTasksHaveCompleted(); |
- |
- ASSERT_EQ(2u, completed_tasks().size()); |
- for (int i = 0; i < 2; ++i) { |
- EXPECT_FALSE(completed_tasks()[i].canceled); |
- switch (completed_tasks()[i].id) { |
- case 0u: |
- EXPECT_EQ(RASTER_THREAD_WORKER, completed_tasks()[i].raster_thread); |
- break; |
- case 1u: |
- EXPECT_EQ(RASTER_THREAD_ORIGIN, completed_tasks()[i].raster_thread); |
- break; |
- default: |
- NOTREACHED(); |
- } |
- } |
+ EXPECT_NE(RASTER_THREAD_NONE, completed_tasks()[0].raster_thread); |
+ EXPECT_NE(RASTER_THREAD_NONE, completed_tasks()[1].raster_thread); |
} |
TEST_P(RasterWorkerPoolTest, FailedMapResource) { |
TestWebGraphicsContext3D* context3d = context_provider_->TestContext3d(); |
context3d->set_times_map_image_chromium_succeeds(0); |
context3d->set_times_map_buffer_chromium_succeeds(0); |
- AppendTask(0u, false); |
+ AppendTask(0u); |
ScheduleTasks(); |
RunMessageLoopUntilAllTasksHaveCompleted(); |
ASSERT_EQ(1u, completed_tasks().size()); |
EXPECT_FALSE(completed_tasks()[0].canceled); |
- EXPECT_EQ(RASTER_THREAD_WORKER, completed_tasks()[0].raster_thread); |
+ EXPECT_NE(RASTER_THREAD_NONE, completed_tasks()[0].raster_thread); |
} |
// This test checks that replacing a pending raster task with another does |
@@ -374,7 +331,7 @@ TEST_P(RasterWorkerPoolTest, FalseThrottling) { |
// task is not a throttled task in the new task set, it should not prevent |
// DidFinishRunningTasks from getting signaled. |
tasks_.clear(); |
- AppendTask(1u, false); |
+ AppendTask(1u); |
ScheduleTasks(); |
// Unblock the first task to allow the second task to complete. |
@@ -386,7 +343,8 @@ TEST_P(RasterWorkerPoolTest, FalseThrottling) { |
INSTANTIATE_TEST_CASE_P(RasterWorkerPoolTests, |
RasterWorkerPoolTest, |
::testing::Values(RASTER_WORKER_POOL_TYPE_PIXEL_BUFFER, |
- RASTER_WORKER_POOL_TYPE_IMAGE)); |
+ RASTER_WORKER_POOL_TYPE_IMAGE, |
+ RASTER_WORKER_POOL_TYPE_DIRECT)); |
} // namespace |
} // namespace cc |