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

Side by Side Diff: cc/resources/raster_worker_pool_unittest.cc

Issue 236313006: cc: Add initial GPU-to-GPU copy rasterizer implementation. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 7 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
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 #include "cc/resources/raster_worker_pool.h" 5 #include "cc/resources/raster_worker_pool.h"
6 6
7 #include <limits> 7 #include <limits>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/cancelable_callback.h" 10 #include "base/cancelable_callback.h"
11 #include "cc/resources/direct_raster_worker_pool.h" 11 #include "cc/resources/direct_raster_worker_pool.h"
12 #include "cc/resources/image_copy_raster_worker_pool.h"
12 #include "cc/resources/image_raster_worker_pool.h" 13 #include "cc/resources/image_raster_worker_pool.h"
13 #include "cc/resources/picture_pile.h" 14 #include "cc/resources/picture_pile.h"
14 #include "cc/resources/picture_pile_impl.h" 15 #include "cc/resources/picture_pile_impl.h"
15 #include "cc/resources/pixel_buffer_raster_worker_pool.h" 16 #include "cc/resources/pixel_buffer_raster_worker_pool.h"
16 #include "cc/resources/rasterizer.h" 17 #include "cc/resources/rasterizer.h"
18 #include "cc/resources/resource_pool.h"
17 #include "cc/resources/resource_provider.h" 19 #include "cc/resources/resource_provider.h"
18 #include "cc/resources/scoped_resource.h" 20 #include "cc/resources/scoped_resource.h"
19 #include "cc/test/fake_output_surface.h" 21 #include "cc/test/fake_output_surface.h"
20 #include "cc/test/fake_output_surface_client.h" 22 #include "cc/test/fake_output_surface_client.h"
21 #include "cc/test/test_shared_bitmap_manager.h" 23 #include "cc/test/test_shared_bitmap_manager.h"
22 #include "cc/test/test_web_graphics_context_3d.h" 24 #include "cc/test/test_web_graphics_context_3d.h"
23 #include "testing/gtest/include/gtest/gtest.h" 25 #include "testing/gtest/include/gtest/gtest.h"
24 26
25 namespace cc { 27 namespace cc {
26 namespace { 28 namespace {
27 29
28 enum RasterWorkerPoolType { 30 enum RasterWorkerPoolType {
29 RASTER_WORKER_POOL_TYPE_PIXEL_BUFFER, 31 RASTER_WORKER_POOL_TYPE_PIXEL_BUFFER,
30 RASTER_WORKER_POOL_TYPE_IMAGE, 32 RASTER_WORKER_POOL_TYPE_IMAGE,
33 RASTER_WORKER_POOL_TYPE_IMAGE_COPY,
31 RASTER_WORKER_POOL_TYPE_DIRECT 34 RASTER_WORKER_POOL_TYPE_DIRECT
32 }; 35 };
33 36
34 class TestRasterTaskImpl : public RasterTask { 37 class TestRasterTaskImpl : public RasterTask {
35 public: 38 public:
36 typedef base::Callback< 39 typedef base::Callback<
37 void(const PicturePileImpl::Analysis& analysis, bool was_canceled)> Reply; 40 void(const PicturePileImpl::Analysis& analysis, bool was_canceled)> Reply;
38 41
39 TestRasterTaskImpl(const Resource* resource, 42 TestRasterTaskImpl(const Resource* resource,
40 const Reply& reply, 43 const Reply& reply,
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 timeout_seconds_(5), 109 timeout_seconds_(5),
107 timed_out_(false) { 110 timed_out_(false) {
108 output_surface_ = FakeOutputSurface::Create3d(context_provider_).Pass(); 111 output_surface_ = FakeOutputSurface::Create3d(context_provider_).Pass();
109 CHECK(output_surface_->BindToClient(&output_surface_client_)); 112 CHECK(output_surface_->BindToClient(&output_surface_client_));
110 113
111 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); 114 shared_bitmap_manager_.reset(new TestSharedBitmapManager());
112 resource_provider_ = 115 resource_provider_ =
113 ResourceProvider::Create( 116 ResourceProvider::Create(
114 output_surface_.get(), shared_bitmap_manager_.get(), 0, false, 1) 117 output_surface_.get(), shared_bitmap_manager_.get(), 0, false, 1)
115 .Pass(); 118 .Pass();
119 staging_resource_pool_ = ResourcePool::Create(
120 resource_provider_.get(), GL_TEXTURE_2D, RGBA_8888);
116 121
117 switch (GetParam()) { 122 switch (GetParam()) {
118 case RASTER_WORKER_POOL_TYPE_PIXEL_BUFFER: 123 case RASTER_WORKER_POOL_TYPE_PIXEL_BUFFER:
119 raster_worker_pool_ = PixelBufferRasterWorkerPool::Create( 124 raster_worker_pool_ = PixelBufferRasterWorkerPool::Create(
120 base::MessageLoopProxy::current().get(), 125 base::MessageLoopProxy::current().get(),
121 RasterWorkerPool::GetTaskGraphRunner(), 126 RasterWorkerPool::GetTaskGraphRunner(),
122 resource_provider_.get(), 127 resource_provider_.get(),
123 std::numeric_limits<size_t>::max()); 128 std::numeric_limits<size_t>::max());
124 break; 129 break;
125 case RASTER_WORKER_POOL_TYPE_IMAGE: 130 case RASTER_WORKER_POOL_TYPE_IMAGE:
126 raster_worker_pool_ = ImageRasterWorkerPool::Create( 131 raster_worker_pool_ = ImageRasterWorkerPool::Create(
127 base::MessageLoopProxy::current().get(), 132 base::MessageLoopProxy::current().get(),
128 RasterWorkerPool::GetTaskGraphRunner(), 133 RasterWorkerPool::GetTaskGraphRunner(),
129 resource_provider_.get()); 134 resource_provider_.get());
130 break; 135 break;
136 case RASTER_WORKER_POOL_TYPE_IMAGE_COPY:
137 raster_worker_pool_ = ImageCopyRasterWorkerPool::Create(
138 base::MessageLoopProxy::current().get(),
139 RasterWorkerPool::GetTaskGraphRunner(),
140 resource_provider_.get(),
141 staging_resource_pool_.get());
142 break;
131 case RASTER_WORKER_POOL_TYPE_DIRECT: 143 case RASTER_WORKER_POOL_TYPE_DIRECT:
132 raster_worker_pool_ = DirectRasterWorkerPool::Create( 144 raster_worker_pool_ = DirectRasterWorkerPool::Create(
133 base::MessageLoopProxy::current().get(), 145 base::MessageLoopProxy::current().get(),
134 resource_provider_.get(), 146 resource_provider_.get(),
135 context_provider_.get()); 147 context_provider_.get());
136 break; 148 break;
137 } 149 }
138 150
139 DCHECK(raster_worker_pool_); 151 DCHECK(raster_worker_pool_);
140 raster_worker_pool_->AsRasterizer()->SetClient(this); 152 raster_worker_pool_->AsRasterizer()->SetClient(this);
141 } 153 }
142 virtual ~RasterWorkerPoolTest() { resource_provider_.reset(); } 154 virtual ~RasterWorkerPoolTest() {
155 staging_resource_pool_.reset();
156 resource_provider_.reset();
157 }
143 158
144 // Overridden from testing::Test: 159 // Overridden from testing::Test:
145 virtual void TearDown() OVERRIDE { 160 virtual void TearDown() OVERRIDE {
146 raster_worker_pool_->AsRasterizer()->Shutdown(); 161 raster_worker_pool_->AsRasterizer()->Shutdown();
147 raster_worker_pool_->AsRasterizer()->CheckForCompletedTasks(); 162 raster_worker_pool_->AsRasterizer()->CheckForCompletedTasks();
148 } 163 }
149 164
150 // Overriden from RasterWorkerPoolClient: 165 // Overriden from RasterWorkerPoolClient:
151 virtual bool ShouldForceTasksRequiredForActivationToComplete() const 166 virtual bool ShouldForceTasksRequiredForActivationToComplete() const
152 OVERRIDE { 167 OVERRIDE {
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 timed_out_ = true; 257 timed_out_ = true;
243 base::MessageLoop::current()->Quit(); 258 base::MessageLoop::current()->Quit();
244 } 259 }
245 260
246 protected: 261 protected:
247 scoped_refptr<TestContextProvider> context_provider_; 262 scoped_refptr<TestContextProvider> context_provider_;
248 FakeOutputSurfaceClient output_surface_client_; 263 FakeOutputSurfaceClient output_surface_client_;
249 scoped_ptr<FakeOutputSurface> output_surface_; 264 scoped_ptr<FakeOutputSurface> output_surface_;
250 scoped_ptr<SharedBitmapManager> shared_bitmap_manager_; 265 scoped_ptr<SharedBitmapManager> shared_bitmap_manager_;
251 scoped_ptr<ResourceProvider> resource_provider_; 266 scoped_ptr<ResourceProvider> resource_provider_;
267 scoped_ptr<ResourcePool> staging_resource_pool_;
252 scoped_ptr<RasterWorkerPool> raster_worker_pool_; 268 scoped_ptr<RasterWorkerPool> raster_worker_pool_;
253 base::CancelableClosure timeout_; 269 base::CancelableClosure timeout_;
254 int timeout_seconds_; 270 int timeout_seconds_;
255 bool timed_out_; 271 bool timed_out_;
256 RasterTaskVector tasks_; 272 RasterTaskVector tasks_;
257 std::vector<RasterTaskResult> completed_tasks_; 273 std::vector<RasterTaskResult> completed_tasks_;
258 }; 274 };
259 275
260 TEST_P(RasterWorkerPoolTest, Basic) { 276 TEST_P(RasterWorkerPoolTest, Basic) {
261 AppendTask(0u); 277 AppendTask(0u);
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 // Unblock the first task to allow the second task to complete. 319 // Unblock the first task to allow the second task to complete.
304 lock.Release(); 320 lock.Release();
305 321
306 RunMessageLoopUntilAllTasksHaveCompleted(); 322 RunMessageLoopUntilAllTasksHaveCompleted();
307 } 323 }
308 324
309 INSTANTIATE_TEST_CASE_P(RasterWorkerPoolTests, 325 INSTANTIATE_TEST_CASE_P(RasterWorkerPoolTests,
310 RasterWorkerPoolTest, 326 RasterWorkerPoolTest,
311 ::testing::Values(RASTER_WORKER_POOL_TYPE_PIXEL_BUFFER, 327 ::testing::Values(RASTER_WORKER_POOL_TYPE_PIXEL_BUFFER,
312 RASTER_WORKER_POOL_TYPE_IMAGE, 328 RASTER_WORKER_POOL_TYPE_IMAGE,
329 RASTER_WORKER_POOL_TYPE_IMAGE_COPY,
313 RASTER_WORKER_POOL_TYPE_DIRECT)); 330 RASTER_WORKER_POOL_TYPE_DIRECT));
314 331
315 } // namespace 332 } // namespace
316 } // namespace cc 333 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698