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

Side by Side Diff: cc/raster/raster_buffer_provider_unittest.cc

Issue 2337913003: Fork cc::OutputSurface into cc::CompositorFrameSink. (Closed)
Patch Set: cfsfork: android-vulkan Created 4 years, 3 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
« no previous file with comments | « cc/raster/raster_buffer_provider_perftest.cc ('k') | cc/resources/resource_pool_unittest.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 #include "cc/raster/raster_buffer_provider.h" 5 #include "cc/raster/raster_buffer_provider.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
11 #include <limits> 11 #include <limits>
12 #include <vector> 12 #include <vector>
13 13
14 #include "base/cancelable_callback.h" 14 #include "base/cancelable_callback.h"
15 #include "base/location.h" 15 #include "base/location.h"
16 #include "base/macros.h" 16 #include "base/macros.h"
17 #include "base/memory/ptr_util.h" 17 #include "base/memory/ptr_util.h"
18 #include "base/single_thread_task_runner.h" 18 #include "base/single_thread_task_runner.h"
19 #include "base/threading/thread_task_runner_handle.h" 19 #include "base/threading/thread_task_runner_handle.h"
20 #include "cc/base/unique_notifier.h" 20 #include "cc/base/unique_notifier.h"
21 #include "cc/raster/bitmap_raster_buffer_provider.h" 21 #include "cc/raster/bitmap_raster_buffer_provider.h"
22 #include "cc/raster/gpu_raster_buffer_provider.h" 22 #include "cc/raster/gpu_raster_buffer_provider.h"
23 #include "cc/raster/one_copy_raster_buffer_provider.h" 23 #include "cc/raster/one_copy_raster_buffer_provider.h"
24 #include "cc/raster/synchronous_task_graph_runner.h" 24 #include "cc/raster/synchronous_task_graph_runner.h"
25 #include "cc/raster/zero_copy_raster_buffer_provider.h" 25 #include "cc/raster/zero_copy_raster_buffer_provider.h"
26 #include "cc/resources/platform_color.h" 26 #include "cc/resources/platform_color.h"
27 #include "cc/resources/resource_pool.h" 27 #include "cc/resources/resource_pool.h"
28 #include "cc/resources/resource_provider.h" 28 #include "cc/resources/resource_provider.h"
29 #include "cc/resources/scoped_resource.h" 29 #include "cc/resources/scoped_resource.h"
30 #include "cc/test/fake_output_surface.h"
31 #include "cc/test/fake_output_surface_client.h"
32 #include "cc/test/fake_raster_source.h" 30 #include "cc/test/fake_raster_source.h"
33 #include "cc/test/fake_resource_provider.h" 31 #include "cc/test/fake_resource_provider.h"
32 #include "cc/test/test_context_provider.h"
34 #include "cc/test/test_gpu_memory_buffer_manager.h" 33 #include "cc/test/test_gpu_memory_buffer_manager.h"
35 #include "cc/test/test_shared_bitmap_manager.h" 34 #include "cc/test/test_shared_bitmap_manager.h"
36 #include "cc/test/test_web_graphics_context_3d.h" 35 #include "cc/test/test_web_graphics_context_3d.h"
37 #include "cc/tiles/tile_task_manager.h" 36 #include "cc/tiles/tile_task_manager.h"
38 #include "gpu/GLES2/gl2extchromium.h" 37 #include "gpu/GLES2/gl2extchromium.h"
39 #include "testing/gtest/include/gtest/gtest.h" 38 #include "testing/gtest/include/gtest/gtest.h"
40 39
41 namespace cc { 40 namespace cc {
42 namespace { 41 namespace {
43 42
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 struct RasterTaskResult { 141 struct RasterTaskResult {
143 unsigned id; 142 unsigned id;
144 bool canceled; 143 bool canceled;
145 }; 144 };
146 145
147 typedef std::vector<scoped_refptr<TileTask>> RasterTaskVector; 146 typedef std::vector<scoped_refptr<TileTask>> RasterTaskVector;
148 147
149 enum NamedTaskSet { REQUIRED_FOR_ACTIVATION, REQUIRED_FOR_DRAW, ALL }; 148 enum NamedTaskSet { REQUIRED_FOR_ACTIVATION, REQUIRED_FOR_DRAW, ALL };
150 149
151 RasterBufferProviderTest() 150 RasterBufferProviderTest()
152 : context_provider_(TestContextProvider::Create()), 151 : all_tile_tasks_finished_(
153 worker_context_provider_(TestContextProvider::CreateWorker()),
154 all_tile_tasks_finished_(
155 base::ThreadTaskRunnerHandle::Get().get(), 152 base::ThreadTaskRunnerHandle::Get().get(),
156 base::Bind(&RasterBufferProviderTest::AllTileTasksFinished, 153 base::Bind(&RasterBufferProviderTest::AllTileTasksFinished,
157 base::Unretained(this))), 154 base::Unretained(this))),
158 timeout_seconds_(5), 155 timeout_seconds_(5),
159 timed_out_(false) {} 156 timed_out_(false) {}
160 157
161 // Overridden from testing::Test: 158 // Overridden from testing::Test:
162 void SetUp() override { 159 void SetUp() override {
163 switch (GetParam()) { 160 switch (GetParam()) {
164 case RASTER_BUFFER_PROVIDER_TYPE_ZERO_COPY: 161 case RASTER_BUFFER_PROVIDER_TYPE_ZERO_COPY:
165 Create3dOutputSurfaceAndResourceProvider(); 162 Create3dResourceProvider();
166 raster_buffer_provider_ = ZeroCopyRasterBufferProvider::Create( 163 raster_buffer_provider_ = ZeroCopyRasterBufferProvider::Create(
167 resource_provider_.get(), PlatformColor::BestTextureFormat()); 164 resource_provider_.get(), PlatformColor::BestTextureFormat());
168 break; 165 break;
169 case RASTER_BUFFER_PROVIDER_TYPE_ONE_COPY: 166 case RASTER_BUFFER_PROVIDER_TYPE_ONE_COPY:
170 Create3dOutputSurfaceAndResourceProvider(); 167 Create3dResourceProvider();
171 raster_buffer_provider_ = base::MakeUnique<OneCopyRasterBufferProvider>( 168 raster_buffer_provider_ = base::MakeUnique<OneCopyRasterBufferProvider>(
172 base::ThreadTaskRunnerHandle::Get().get(), context_provider_.get(), 169 base::ThreadTaskRunnerHandle::Get().get(), context_provider_.get(),
173 worker_context_provider_.get(), resource_provider_.get(), 170 worker_context_provider_.get(), resource_provider_.get(),
174 kMaxBytesPerCopyOperation, false, kMaxStagingBuffers, 171 kMaxBytesPerCopyOperation, false, kMaxStagingBuffers,
175 PlatformColor::BestTextureFormat(), false); 172 PlatformColor::BestTextureFormat(), false);
176 break; 173 break;
177 case RASTER_BUFFER_PROVIDER_TYPE_GPU: 174 case RASTER_BUFFER_PROVIDER_TYPE_GPU:
178 Create3dOutputSurfaceAndResourceProvider(); 175 Create3dResourceProvider();
179 raster_buffer_provider_ = base::MakeUnique<GpuRasterBufferProvider>( 176 raster_buffer_provider_ = base::MakeUnique<GpuRasterBufferProvider>(
180 context_provider_.get(), worker_context_provider_.get(), 177 context_provider_.get(), worker_context_provider_.get(),
181 resource_provider_.get(), false, 0, false); 178 resource_provider_.get(), false, 0, false);
182 break; 179 break;
183 case RASTER_BUFFER_PROVIDER_TYPE_BITMAP: 180 case RASTER_BUFFER_PROVIDER_TYPE_BITMAP:
184 CreateSoftwareOutputSurfaceAndResourceProvider(); 181 CreateSoftwareResourceProvider();
185 raster_buffer_provider_ = 182 raster_buffer_provider_ =
186 BitmapRasterBufferProvider::Create(resource_provider_.get()); 183 BitmapRasterBufferProvider::Create(resource_provider_.get());
187 break; 184 break;
188 } 185 }
189 186
190 DCHECK(raster_buffer_provider_); 187 DCHECK(raster_buffer_provider_);
191 188
192 tile_task_manager_ = TileTaskManagerImpl::Create(&task_graph_runner_); 189 tile_task_manager_ = TileTaskManagerImpl::Create(&task_graph_runner_);
193 } 190 }
194 191
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
272 unsigned id, 269 unsigned id,
273 bool was_canceled) override { 270 bool was_canceled) override {
274 raster_buffer_provider_->ReleaseBufferForRaster(std::move(raster_buffer)); 271 raster_buffer_provider_->ReleaseBufferForRaster(std::move(raster_buffer));
275 RasterTaskResult result; 272 RasterTaskResult result;
276 result.id = id; 273 result.id = id;
277 result.canceled = was_canceled; 274 result.canceled = was_canceled;
278 completed_tasks_.push_back(result); 275 completed_tasks_.push_back(result);
279 } 276 }
280 277
281 private: 278 private:
282 void Create3dOutputSurfaceAndResourceProvider() { 279 void Create3dResourceProvider() {
283 output_surface_ = FakeOutputSurface::Create3d(context_provider_, 280 context_provider_ = TestContextProvider::Create();
284 worker_context_provider_); 281 context_provider_->BindToCurrentThread();
285 CHECK(output_surface_->BindToClient(&output_surface_client_)); 282 worker_context_provider_ = TestContextProvider::CreateWorker();
286 TestWebGraphicsContext3D* context3d = context_provider_->TestContext3d(); 283 TestWebGraphicsContext3D* context3d = context_provider_->TestContext3d();
287 context3d->set_support_sync_query(true); 284 context3d->set_support_sync_query(true);
288 resource_provider_ = FakeResourceProvider::Create( 285 resource_provider_ = FakeResourceProvider::Create(
289 output_surface_.get(), nullptr, &gpu_memory_buffer_manager_); 286 context_provider_.get(), &shared_bitmap_manager_,
287 &gpu_memory_buffer_manager_);
290 } 288 }
291 289
292 void CreateSoftwareOutputSurfaceAndResourceProvider() { 290 void CreateSoftwareResourceProvider() {
293 output_surface_ = FakeOutputSurface::CreateSoftware(
294 base::WrapUnique(new SoftwareOutputDevice));
295 CHECK(output_surface_->BindToClient(&output_surface_client_));
296 resource_provider_ = FakeResourceProvider::Create( 291 resource_provider_ = FakeResourceProvider::Create(
297 output_surface_.get(), &shared_bitmap_manager_, nullptr); 292 nullptr, &shared_bitmap_manager_, &gpu_memory_buffer_manager_);
298 } 293 }
299 294
300 void OnTimeout() { 295 void OnTimeout() {
301 timed_out_ = true; 296 timed_out_ = true;
302 base::MessageLoop::current()->QuitWhenIdle(); 297 base::MessageLoop::current()->QuitWhenIdle();
303 } 298 }
304 299
305 protected: 300 protected:
306 scoped_refptr<TestContextProvider> context_provider_; 301 scoped_refptr<TestContextProvider> context_provider_;
307 scoped_refptr<TestContextProvider> worker_context_provider_; 302 scoped_refptr<TestContextProvider> worker_context_provider_;
308 FakeOutputSurfaceClient output_surface_client_;
309 std::unique_ptr<FakeOutputSurface> output_surface_;
310 std::unique_ptr<ResourceProvider> resource_provider_; 303 std::unique_ptr<ResourceProvider> resource_provider_;
311 std::unique_ptr<TileTaskManager> tile_task_manager_; 304 std::unique_ptr<TileTaskManager> tile_task_manager_;
312 std::unique_ptr<RasterBufferProvider> raster_buffer_provider_; 305 std::unique_ptr<RasterBufferProvider> raster_buffer_provider_;
313 TestGpuMemoryBufferManager gpu_memory_buffer_manager_; 306 TestGpuMemoryBufferManager gpu_memory_buffer_manager_;
314 TestSharedBitmapManager shared_bitmap_manager_; 307 TestSharedBitmapManager shared_bitmap_manager_;
315 SynchronousTaskGraphRunner task_graph_runner_; 308 SynchronousTaskGraphRunner task_graph_runner_;
316 base::CancelableClosure timeout_; 309 base::CancelableClosure timeout_;
317 UniqueNotifier all_tile_tasks_finished_; 310 UniqueNotifier all_tile_tasks_finished_;
318 int timeout_seconds_; 311 int timeout_seconds_;
319 bool timed_out_; 312 bool timed_out_;
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 AppendTask(1u); 360 AppendTask(1u);
368 ScheduleTasks(); 361 ScheduleTasks();
369 362
370 // Unblock the first task to allow the second task to complete. 363 // Unblock the first task to allow the second task to complete.
371 lock.Release(); 364 lock.Release();
372 365
373 RunMessageLoopUntilAllTasksHaveCompleted(); 366 RunMessageLoopUntilAllTasksHaveCompleted();
374 } 367 }
375 368
376 TEST_P(RasterBufferProviderTest, LostContext) { 369 TEST_P(RasterBufferProviderTest, LostContext) {
377 LoseContext(output_surface_->context_provider()); 370 LoseContext(context_provider_.get());
378 LoseContext(output_surface_->worker_context_provider()); 371 LoseContext(worker_context_provider_.get());
379 372
380 AppendTask(0u); 373 AppendTask(0u);
381 AppendTask(1u); 374 AppendTask(1u);
382 ScheduleTasks(); 375 ScheduleTasks();
383 376
384 RunMessageLoopUntilAllTasksHaveCompleted(); 377 RunMessageLoopUntilAllTasksHaveCompleted();
385 378
386 ASSERT_EQ(2u, completed_tasks().size()); 379 ASSERT_EQ(2u, completed_tasks().size());
387 EXPECT_FALSE(completed_tasks()[0].canceled); 380 EXPECT_FALSE(completed_tasks()[0].canceled);
388 EXPECT_FALSE(completed_tasks()[1].canceled); 381 EXPECT_FALSE(completed_tasks()[1].canceled);
389 } 382 }
390 383
391 INSTANTIATE_TEST_CASE_P(RasterBufferProviderTests, 384 INSTANTIATE_TEST_CASE_P(RasterBufferProviderTests,
392 RasterBufferProviderTest, 385 RasterBufferProviderTest,
393 ::testing::Values(RASTER_BUFFER_PROVIDER_TYPE_ZERO_COPY, 386 ::testing::Values(RASTER_BUFFER_PROVIDER_TYPE_ZERO_COPY,
394 RASTER_BUFFER_PROVIDER_TYPE_ONE_COPY, 387 RASTER_BUFFER_PROVIDER_TYPE_ONE_COPY,
395 RASTER_BUFFER_PROVIDER_TYPE_GPU, 388 RASTER_BUFFER_PROVIDER_TYPE_GPU,
396 RASTER_BUFFER_PROVIDER_TYPE_BITMAP)); 389 RASTER_BUFFER_PROVIDER_TYPE_BITMAP));
397 390
398 } // namespace 391 } // namespace
399 } // namespace cc 392 } // namespace cc
OLDNEW
« no previous file with comments | « cc/raster/raster_buffer_provider_perftest.cc ('k') | cc/resources/resource_pool_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698