| OLD | NEW |
| 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> |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 123 struct RasterTaskResult { | 123 struct RasterTaskResult { |
| 124 unsigned id; | 124 unsigned id; |
| 125 bool canceled; | 125 bool canceled; |
| 126 }; | 126 }; |
| 127 | 127 |
| 128 typedef std::vector<scoped_refptr<TileTask>> RasterTaskVector; | 128 typedef std::vector<scoped_refptr<TileTask>> RasterTaskVector; |
| 129 | 129 |
| 130 enum NamedTaskSet { REQUIRED_FOR_ACTIVATION, REQUIRED_FOR_DRAW, ALL }; | 130 enum NamedTaskSet { REQUIRED_FOR_ACTIVATION, REQUIRED_FOR_DRAW, ALL }; |
| 131 | 131 |
| 132 RasterBufferProviderTest() | 132 RasterBufferProviderTest() |
| 133 : context_provider_(TestContextProvider::Create()), | 133 : all_tile_tasks_finished_( |
| 134 worker_context_provider_(TestContextProvider::CreateWorker()), | |
| 135 all_tile_tasks_finished_( | |
| 136 base::ThreadTaskRunnerHandle::Get().get(), | 134 base::ThreadTaskRunnerHandle::Get().get(), |
| 137 base::Bind(&RasterBufferProviderTest::AllTileTasksFinished, | 135 base::Bind(&RasterBufferProviderTest::AllTileTasksFinished, |
| 138 base::Unretained(this))), | 136 base::Unretained(this))), |
| 139 timeout_seconds_(5), | 137 timeout_seconds_(5), |
| 140 timed_out_(false) {} | 138 timed_out_(false) {} |
| 141 | 139 |
| 142 // Overridden from testing::Test: | 140 // Overridden from testing::Test: |
| 143 void SetUp() override { | 141 void SetUp() override { |
| 144 std::unique_ptr<RasterBufferProvider> raster_buffer_provider; | 142 std::unique_ptr<RasterBufferProvider> raster_buffer_provider; |
| 145 switch (GetParam()) { | 143 switch (GetParam()) { |
| 146 case RASTER_BUFFER_PROVIDER_TYPE_ZERO_COPY: | 144 case RASTER_BUFFER_PROVIDER_TYPE_ZERO_COPY: |
| 147 Create3dOutputSurfaceAndResourceProvider(); | 145 Create3dOutputSurfaceAndResourceProvider(); |
| 148 raster_buffer_provider = ZeroCopyRasterBufferProvider::Create( | 146 raster_buffer_provider = ZeroCopyRasterBufferProvider::Create( |
| 149 resource_provider_.get(), PlatformColor::BestTextureFormat()); | 147 resource_provider_.get(), PlatformColor::BestTextureFormat()); |
| 150 break; | 148 break; |
| 151 case RASTER_BUFFER_PROVIDER_TYPE_ONE_COPY: | 149 case RASTER_BUFFER_PROVIDER_TYPE_ONE_COPY: |
| 152 Create3dOutputSurfaceAndResourceProvider(); | 150 Create3dOutputSurfaceAndResourceProvider(); |
| 153 raster_buffer_provider = OneCopyRasterBufferProvider::Create( | 151 raster_buffer_provider = OneCopyRasterBufferProvider::Create( |
| 154 base::ThreadTaskRunnerHandle::Get().get(), context_provider_.get(), | 152 base::ThreadTaskRunnerHandle::Get().get(), |
| 155 resource_provider_.get(), kMaxBytesPerCopyOperation, false, | 153 output_surface_->context_provider(), resource_provider_.get(), |
| 156 kMaxStagingBuffers, PlatformColor::BestTextureFormat()); | 154 kMaxBytesPerCopyOperation, false, kMaxStagingBuffers, |
| 155 PlatformColor::BestTextureFormat()); |
| 157 break; | 156 break; |
| 158 case RASTER_BUFFER_PROVIDER_TYPE_GPU: | 157 case RASTER_BUFFER_PROVIDER_TYPE_GPU: |
| 159 Create3dOutputSurfaceAndResourceProvider(); | 158 Create3dOutputSurfaceAndResourceProvider(); |
| 160 raster_buffer_provider = GpuRasterBufferProvider::Create( | 159 raster_buffer_provider = |
| 161 context_provider_.get(), resource_provider_.get(), false, 0); | 160 GpuRasterBufferProvider::Create(output_surface_->context_provider(), |
| 161 resource_provider_.get(), false, 0); |
| 162 break; | 162 break; |
| 163 case RASTER_BUFFER_PROVIDER_TYPE_BITMAP: | 163 case RASTER_BUFFER_PROVIDER_TYPE_BITMAP: |
| 164 CreateSoftwareOutputSurfaceAndResourceProvider(); | 164 CreateSoftwareOutputSurfaceAndResourceProvider(); |
| 165 raster_buffer_provider = | 165 raster_buffer_provider = |
| 166 BitmapRasterBufferProvider::Create(resource_provider_.get()); | 166 BitmapRasterBufferProvider::Create(resource_provider_.get()); |
| 167 break; | 167 break; |
| 168 } | 168 } |
| 169 | 169 |
| 170 DCHECK(raster_buffer_provider); | 170 DCHECK(raster_buffer_provider); |
| 171 | 171 |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 243 void LoseContext(ContextProvider* context_provider) { | 243 void LoseContext(ContextProvider* context_provider) { |
| 244 if (!context_provider) | 244 if (!context_provider) |
| 245 return; | 245 return; |
| 246 context_provider->ContextGL()->LoseContextCHROMIUM( | 246 context_provider->ContextGL()->LoseContextCHROMIUM( |
| 247 GL_GUILTY_CONTEXT_RESET_ARB, GL_INNOCENT_CONTEXT_RESET_ARB); | 247 GL_GUILTY_CONTEXT_RESET_ARB, GL_INNOCENT_CONTEXT_RESET_ARB); |
| 248 context_provider->ContextGL()->Flush(); | 248 context_provider->ContextGL()->Flush(); |
| 249 } | 249 } |
| 250 | 250 |
| 251 private: | 251 private: |
| 252 void Create3dOutputSurfaceAndResourceProvider() { | 252 void Create3dOutputSurfaceAndResourceProvider() { |
| 253 output_surface_ = FakeOutputSurface::Create3d(context_provider_, | 253 gpu::Capabilities capabilities; |
| 254 worker_context_provider_); | 254 capabilities.sync_query = true; |
| 255 output_surface_ = FakeOutputSurface::Create3d( |
| 256 base::MakeUnique<TestContextProvider::Factory>(capabilities), |
| 257 TestContextProvider::Create()); |
| 255 CHECK(output_surface_->BindToClient(&output_surface_client_)); | 258 CHECK(output_surface_->BindToClient(&output_surface_client_)); |
| 256 TestWebGraphicsContext3D* context3d = context_provider_->TestContext3d(); | 259 context_provider_ = |
| 257 context3d->set_support_sync_query(true); | 260 static_cast<TestContextProvider*>(output_surface_->context_provider()); |
| 258 resource_provider_ = FakeResourceProvider::Create( | 261 resource_provider_ = FakeResourceProvider::Create( |
| 259 output_surface_.get(), nullptr, &gpu_memory_buffer_manager_); | 262 output_surface_.get(), nullptr, &gpu_memory_buffer_manager_); |
| 260 } | 263 } |
| 261 | 264 |
| 262 void CreateSoftwareOutputSurfaceAndResourceProvider() { | 265 void CreateSoftwareOutputSurfaceAndResourceProvider() { |
| 263 output_surface_ = FakeOutputSurface::CreateSoftware( | 266 output_surface_ = FakeOutputSurface::CreateSoftware( |
| 264 base::WrapUnique(new SoftwareOutputDevice)); | 267 base::WrapUnique(new SoftwareOutputDevice)); |
| 265 CHECK(output_surface_->BindToClient(&output_surface_client_)); | 268 CHECK(output_surface_->BindToClient(&output_surface_client_)); |
| 266 resource_provider_ = FakeResourceProvider::Create( | 269 resource_provider_ = FakeResourceProvider::Create( |
| 267 output_surface_.get(), &shared_bitmap_manager_, nullptr); | 270 output_surface_.get(), &shared_bitmap_manager_, nullptr); |
| 268 } | 271 } |
| 269 | 272 |
| 270 void OnTaskCompleted(std::unique_ptr<ScopedResource> resource, | 273 void OnTaskCompleted(std::unique_ptr<ScopedResource> resource, |
| 271 unsigned id, | 274 unsigned id, |
| 272 bool was_canceled) { | 275 bool was_canceled) { |
| 273 RasterTaskResult result; | 276 RasterTaskResult result; |
| 274 result.id = id; | 277 result.id = id; |
| 275 result.canceled = was_canceled; | 278 result.canceled = was_canceled; |
| 276 completed_tasks_.push_back(result); | 279 completed_tasks_.push_back(result); |
| 277 } | 280 } |
| 278 | 281 |
| 279 void OnTimeout() { | 282 void OnTimeout() { |
| 280 timed_out_ = true; | 283 timed_out_ = true; |
| 281 base::MessageLoop::current()->QuitWhenIdle(); | 284 base::MessageLoop::current()->QuitWhenIdle(); |
| 282 } | 285 } |
| 283 | 286 |
| 284 protected: | 287 protected: |
| 285 scoped_refptr<TestContextProvider> context_provider_; | |
| 286 scoped_refptr<TestContextProvider> worker_context_provider_; | |
| 287 FakeOutputSurfaceClient output_surface_client_; | 288 FakeOutputSurfaceClient output_surface_client_; |
| 289 TestContextProvider* context_provider_ = nullptr; |
| 288 std::unique_ptr<FakeOutputSurface> output_surface_; | 290 std::unique_ptr<FakeOutputSurface> output_surface_; |
| 289 std::unique_ptr<ResourceProvider> resource_provider_; | 291 std::unique_ptr<ResourceProvider> resource_provider_; |
| 290 std::unique_ptr<TileTaskManager> tile_task_manager_; | 292 std::unique_ptr<TileTaskManager> tile_task_manager_; |
| 291 TestGpuMemoryBufferManager gpu_memory_buffer_manager_; | 293 TestGpuMemoryBufferManager gpu_memory_buffer_manager_; |
| 292 TestSharedBitmapManager shared_bitmap_manager_; | 294 TestSharedBitmapManager shared_bitmap_manager_; |
| 293 SynchronousTaskGraphRunner task_graph_runner_; | 295 SynchronousTaskGraphRunner task_graph_runner_; |
| 294 base::CancelableClosure timeout_; | 296 base::CancelableClosure timeout_; |
| 295 UniqueNotifier all_tile_tasks_finished_; | 297 UniqueNotifier all_tile_tasks_finished_; |
| 296 int timeout_seconds_; | 298 int timeout_seconds_; |
| 297 bool timed_out_; | 299 bool timed_out_; |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 368 | 370 |
| 369 INSTANTIATE_TEST_CASE_P(RasterBufferProviderTests, | 371 INSTANTIATE_TEST_CASE_P(RasterBufferProviderTests, |
| 370 RasterBufferProviderTest, | 372 RasterBufferProviderTest, |
| 371 ::testing::Values(RASTER_BUFFER_PROVIDER_TYPE_ZERO_COPY, | 373 ::testing::Values(RASTER_BUFFER_PROVIDER_TYPE_ZERO_COPY, |
| 372 RASTER_BUFFER_PROVIDER_TYPE_ONE_COPY, | 374 RASTER_BUFFER_PROVIDER_TYPE_ONE_COPY, |
| 373 RASTER_BUFFER_PROVIDER_TYPE_GPU, | 375 RASTER_BUFFER_PROVIDER_TYPE_GPU, |
| 374 RASTER_BUFFER_PROVIDER_TYPE_BITMAP)); | 376 RASTER_BUFFER_PROVIDER_TYPE_BITMAP)); |
| 375 | 377 |
| 376 } // namespace | 378 } // namespace |
| 377 } // namespace cc | 379 } // namespace cc |
| OLD | NEW |