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

Unified Diff: cc/resources/raster_worker_pool_unittest.cc

Issue 110883015: Add preliminary support for hw-accelerated tile rasterization. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: avoid implementing TestContextProvider::GrContext for now Created 6 years, 11 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 | « cc/resources/raster_worker_pool_perftest.cc ('k') | cc/resources/tile_manager.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 716edf6c5263ef1380f60e6a0617c22bfe93c46d..faa0cf7c7fd2a0512005ab79df46c1047571fdb9 100644
--- a/cc/resources/raster_worker_pool_unittest.cc
+++ b/cc/resources/raster_worker_pool_unittest.cc
@@ -22,28 +22,42 @@ namespace cc {
class TestRasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask {
public:
+ enum RasterThread {
+ RASTER_THREAD_NONE,
+ RASTER_THREAD_ORIGIN,
+ RASTER_THREAD_WORKER
+ };
typedef base::Callback<void(const PicturePileImpl::Analysis& analysis,
bool was_canceled,
- bool did_raster)> Reply;
+ RasterThread raster_thread)> Reply;
TestRasterWorkerPoolTaskImpl(
const Resource* resource,
const Reply& reply,
- TaskVector* dependencies)
- : internal::RasterWorkerPoolTask(resource, dependencies),
+ TaskVector* dependencies,
+ bool use_gpu_rasterization)
+ : internal::RasterWorkerPoolTask(resource,
+ dependencies,
+ use_gpu_rasterization),
reply_(reply),
- did_raster_(false) {}
+ raster_thread_(RASTER_THREAD_NONE) {}
// Overridden from internal::WorkerPoolTask:
virtual bool RunOnWorkerThread(unsigned thread_index,
void* buffer,
gfx::Size size,
int stride) OVERRIDE {
- did_raster_ = true;
+ raster_thread_ = RASTER_THREAD_WORKER;
return true;
}
+ virtual void RunOnOriginThread(ResourceProvider* resource_provider,
+ ContextProvider* context_provider) OVERRIDE {
+ raster_thread_ = RASTER_THREAD_ORIGIN;
+ }
virtual void CompleteOnOriginThread() OVERRIDE {
- reply_.Run(PicturePileImpl::Analysis(), !HasFinishedRunning(), did_raster_);
+ reply_.Run(PicturePileImpl::Analysis(),
+ !HasFinishedRunning() || WasCanceled(),
+ raster_thread_);
}
protected:
@@ -51,7 +65,7 @@ class TestRasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask {
private:
const Reply reply_;
- bool did_raster_;
+ RasterThread raster_thread_;
DISALLOW_COPY_AND_ASSIGN(TestRasterWorkerPoolTaskImpl);
};
@@ -104,11 +118,12 @@ class RasterWorkerPoolTest : public testing::Test,
void RunTest(bool use_map_image) {
if (use_map_image) {
raster_worker_pool_ = ImageRasterWorkerPool::Create(
- resource_provider(), 1, GL_TEXTURE_2D);
+ resource_provider(), context_provider_.get(), 1, GL_TEXTURE_2D);
} else {
raster_worker_pool_ =
PixelBufferRasterWorkerPool::Create(
resource_provider(),
+ context_provider_.get(),
1,
std::numeric_limits<size_t>::max());
}
@@ -155,7 +170,7 @@ class RasterWorkerPoolTest : public testing::Test,
worker_pool()->ScheduleTasks(&tasks);
}
- void AppendTask(unsigned id) {
+ void AppendTask(unsigned id, bool use_gpu_rasterization) {
const gfx::Size size(1, 1);
scoped_ptr<ScopedResource> resource(
@@ -171,14 +186,16 @@ class RasterWorkerPoolTest : public testing::Test,
base::Unretained(this),
base::Passed(&resource),
id),
- &empty.tasks_)));
+ &empty.tasks_,
+ use_gpu_rasterization)));
}
- virtual void OnTaskCompleted(scoped_ptr<ScopedResource> resource,
- unsigned id,
- const PicturePileImpl::Analysis& analysis,
- bool was_canceled,
- bool did_raster) {}
+ virtual void OnTaskCompleted(
+ scoped_ptr<ScopedResource> resource,
+ unsigned id,
+ const PicturePileImpl::Analysis& analysis,
+ bool was_canceled,
+ TestRasterWorkerPoolTaskImpl::RasterThread raster_thread) {}
private:
void ScheduleCheckForCompletedTasks() {
@@ -230,14 +247,17 @@ namespace {
PIXEL_BUFFER_TEST_F(TEST_FIXTURE_NAME); \
IMAGE_TEST_F(TEST_FIXTURE_NAME)
-class BasicRasterWorkerPoolTest : public RasterWorkerPoolTest {
+class RasterWorkerPoolTestSofwareRaster : public RasterWorkerPoolTest {
public:
- virtual void OnTaskCompleted(scoped_ptr<ScopedResource> resource,
- unsigned id,
- const PicturePileImpl::Analysis& analysis,
- bool was_canceled,
- bool did_raster) OVERRIDE {
- EXPECT_TRUE(did_raster);
+ virtual void OnTaskCompleted(
+ scoped_ptr<ScopedResource> resource,
+ unsigned id,
+ const PicturePileImpl::Analysis& analysis,
+ bool was_canceled,
+ TestRasterWorkerPoolTaskImpl::RasterThread raster_thread) OVERRIDE {
+ EXPECT_FALSE(was_canceled);
+ EXPECT_EQ(TestRasterWorkerPoolTaskImpl::RASTER_THREAD_WORKER,
+ raster_thread);
on_task_completed_ids_.push_back(id);
if (on_task_completed_ids_.size() == 2)
EndTest();
@@ -245,8 +265,8 @@ class BasicRasterWorkerPoolTest : public RasterWorkerPoolTest {
// Overridden from RasterWorkerPoolTest:
virtual void BeginTest() OVERRIDE {
- AppendTask(0u);
- AppendTask(1u);
+ AppendTask(0u, false);
+ AppendTask(1u, false);
ScheduleTasks();
}
virtual void AfterTest() OVERRIDE {
@@ -257,16 +277,88 @@ class BasicRasterWorkerPoolTest : public RasterWorkerPoolTest {
std::vector<unsigned> on_task_completed_ids_;
};
-PIXEL_BUFFER_AND_IMAGE_TEST_F(BasicRasterWorkerPoolTest);
+PIXEL_BUFFER_AND_IMAGE_TEST_F(RasterWorkerPoolTestSofwareRaster);
+
+class RasterWorkerPoolTestGpuRaster : public RasterWorkerPoolTest {
+ public:
+ virtual void OnTaskCompleted(
+ scoped_ptr<ScopedResource> resource,
+ unsigned id,
+ const PicturePileImpl::Analysis& analysis,
+ bool was_canceled,
+ TestRasterWorkerPoolTaskImpl::RasterThread raster_thread) OVERRIDE {
+ EXPECT_EQ(0u, id);
+ EXPECT_FALSE(was_canceled);
+ EXPECT_EQ(TestRasterWorkerPoolTaskImpl::RASTER_THREAD_ORIGIN,
+ raster_thread);
+ EndTest();
+ }
+
+ // Overridden from RasterWorkerPoolTest:
+ virtual void BeginTest() OVERRIDE {
+ AppendTask(0u, true); // GPU raster.
+ ScheduleTasks();
+ }
+
+ virtual void AfterTest() OVERRIDE {
+ EXPECT_EQ(1u, tasks_.size());
+ }
+};
+PIXEL_BUFFER_AND_IMAGE_TEST_F(RasterWorkerPoolTestGpuRaster);
+
+class RasterWorkerPoolTestHybridRaster : public RasterWorkerPoolTest {
+ public:
+ virtual void OnTaskCompleted(
+ scoped_ptr<ScopedResource> resource,
+ unsigned id,
+ const PicturePileImpl::Analysis& analysis,
+ bool was_canceled,
+ TestRasterWorkerPoolTaskImpl::RasterThread raster_thread) OVERRIDE {
+ EXPECT_FALSE(was_canceled);
+ switch (id) {
+ case 0u:
+ EXPECT_EQ(TestRasterWorkerPoolTaskImpl::RASTER_THREAD_WORKER,
+ raster_thread);
+ break;
+ case 1u:
+ EXPECT_EQ(TestRasterWorkerPoolTaskImpl::RASTER_THREAD_ORIGIN,
+ raster_thread);
+ break;
+ default:
+ NOTREACHED();
+ }
+ completed_task_ids_.push_back(id);
+ if (completed_task_ids_.size() == 2)
+ EndTest();
+ }
+
+ // Overridden from RasterWorkerPoolTest:
+ virtual void BeginTest() OVERRIDE {
+ AppendTask(0u, false); // Software raster.
+ AppendTask(1u, true); // GPU raster.
+ ScheduleTasks();
+ }
+
+ virtual void AfterTest() OVERRIDE {
+ EXPECT_EQ(2u, tasks_.size());
+ EXPECT_EQ(2u, completed_task_ids_.size());
+ }
+
+ std::vector<unsigned> completed_task_ids_;
+};
+PIXEL_BUFFER_AND_IMAGE_TEST_F(RasterWorkerPoolTestHybridRaster);
class RasterWorkerPoolTestFailedMapResource : public RasterWorkerPoolTest {
public:
- virtual void OnTaskCompleted(scoped_ptr<ScopedResource> resource,
- unsigned id,
- const PicturePileImpl::Analysis& analysis,
- bool was_canceled,
- bool did_raster) OVERRIDE {
- EXPECT_FALSE(did_raster);
+ virtual void OnTaskCompleted(
+ scoped_ptr<ScopedResource> resource,
+ unsigned id,
+ const PicturePileImpl::Analysis& analysis,
+ bool was_canceled,
+ TestRasterWorkerPoolTaskImpl::RasterThread raster_thread) OVERRIDE {
+ EXPECT_FALSE(was_canceled);
+ EXPECT_EQ(TestRasterWorkerPoolTaskImpl::RASTER_THREAD_NONE,
+ raster_thread);
EndTest();
}
@@ -275,7 +367,7 @@ class RasterWorkerPoolTestFailedMapResource : public RasterWorkerPoolTest {
TestWebGraphicsContext3D* context3d = context_provider_->TestContext3d();
context3d->set_times_map_image_chromium_succeeds(0);
context3d->set_times_map_buffer_chromium_succeeds(0);
- AppendTask(0u);
+ AppendTask(0u, false);
ScheduleTasks();
}
« no previous file with comments | « cc/resources/raster_worker_pool_perftest.cc ('k') | cc/resources/tile_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698