| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/resource_pool.h" | 5 #include "cc/resources/resource_pool.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include "base/run_loop.h" | 9 #include "base/run_loop.h" |
| 10 #include "base/threading/thread_task_runner_handle.h" | 10 #include "base/threading/thread_task_runner_handle.h" |
| (...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 346 | 346 |
| 347 gfx::Size size(100, 100); | 347 gfx::Size size(100, 100); |
| 348 ResourceFormat format = RGBA_8888; | 348 ResourceFormat format = RGBA_8888; |
| 349 gfx::ColorSpace color_space = gfx::ColorSpace::CreateSRGB(); | 349 gfx::ColorSpace color_space = gfx::ColorSpace::CreateSRGB(); |
| 350 Resource* resource = | 350 Resource* resource = |
| 351 resource_pool_->AcquireResource(size, format, color_space); | 351 resource_pool_->AcquireResource(size, format, color_space); |
| 352 | 352 |
| 353 EXPECT_EQ(1u, resource_pool_->GetTotalResourceCountForTesting()); | 353 EXPECT_EQ(1u, resource_pool_->GetTotalResourceCountForTesting()); |
| 354 EXPECT_EQ(0u, resource_pool_->GetBusyResourceCountForTesting()); | 354 EXPECT_EQ(0u, resource_pool_->GetBusyResourceCountForTesting()); |
| 355 | 355 |
| 356 // Suspending should not impact an in-use resource. | 356 // Purging and suspending should not impact an in-use resource. |
| 357 resource_pool_->OnPurgeMemory(); |
| 357 resource_pool_->OnMemoryStateChange(base::MemoryState::SUSPENDED); | 358 resource_pool_->OnMemoryStateChange(base::MemoryState::SUSPENDED); |
| 358 EXPECT_EQ(1u, resource_pool_->GetTotalResourceCountForTesting()); | 359 EXPECT_EQ(1u, resource_pool_->GetTotalResourceCountForTesting()); |
| 359 EXPECT_EQ(0u, resource_pool_->GetBusyResourceCountForTesting()); | 360 EXPECT_EQ(0u, resource_pool_->GetBusyResourceCountForTesting()); |
| 360 resource_pool_->OnMemoryStateChange(base::MemoryState::NORMAL); | 361 resource_pool_->OnMemoryStateChange(base::MemoryState::NORMAL); |
| 361 | 362 |
| 362 // Release the resource making it busy. | 363 // Release the resource making it busy. |
| 363 resource_pool_->ReleaseResource(resource); | 364 resource_pool_->ReleaseResource(resource); |
| 364 EXPECT_EQ(1u, resource_pool_->GetTotalResourceCountForTesting()); | 365 EXPECT_EQ(1u, resource_pool_->GetTotalResourceCountForTesting()); |
| 365 EXPECT_EQ(1u, resource_pool_->GetBusyResourceCountForTesting()); | 366 EXPECT_EQ(1u, resource_pool_->GetBusyResourceCountForTesting()); |
| 366 | 367 |
| 367 // Suspending should now free the busy resource. | 368 // Purging and suspending should now free the busy resource. |
| 369 resource_pool_->OnPurgeMemory(); |
| 368 resource_pool_->OnMemoryStateChange(base::MemoryState::SUSPENDED); | 370 resource_pool_->OnMemoryStateChange(base::MemoryState::SUSPENDED); |
| 369 EXPECT_EQ(0u, resource_pool_->GetTotalResourceCountForTesting()); | 371 EXPECT_EQ(0u, resource_pool_->GetTotalResourceCountForTesting()); |
| 370 EXPECT_EQ(0u, resource_pool_->GetBusyResourceCountForTesting()); | 372 EXPECT_EQ(0u, resource_pool_->GetBusyResourceCountForTesting()); |
| 371 } | 373 } |
| 372 | 374 |
| 373 TEST_F(ResourcePoolTest, TextureHintRespected) { | 375 TEST_F(ResourcePoolTest, TextureHintRespected) { |
| 374 gfx::Size size(100, 100); | 376 gfx::Size size(100, 100); |
| 375 ResourceFormat format = RGBA_8888; | 377 ResourceFormat format = RGBA_8888; |
| 376 gfx::ColorSpace color_space; | 378 gfx::ColorSpace color_space; |
| 377 | 379 |
| 378 resource_pool_ = | 380 resource_pool_ = |
| 379 ResourcePool::Create(resource_provider_.get(), task_runner_.get(), | 381 ResourcePool::Create(resource_provider_.get(), task_runner_.get(), |
| 380 ResourceProvider::TEXTURE_HINT_IMMUTABLE, | 382 ResourceProvider::TEXTURE_HINT_IMMUTABLE, |
| 381 base::TimeDelta::FromMilliseconds(100)); | 383 base::TimeDelta::FromMilliseconds(100)); |
| 382 Resource* resource = | 384 Resource* resource = |
| 383 resource_pool_->AcquireResource(size, format, color_space); | 385 resource_pool_->AcquireResource(size, format, color_space); |
| 384 EXPECT_TRUE(resource_provider_->IsImmutable(resource->id())); | 386 EXPECT_TRUE(resource_provider_->IsImmutable(resource->id())); |
| 385 resource_pool_->ReleaseResource(resource); | 387 resource_pool_->ReleaseResource(resource); |
| 386 | 388 |
| 387 resource_pool_ = | 389 resource_pool_ = |
| 388 ResourcePool::Create(resource_provider_.get(), task_runner_.get(), | 390 ResourcePool::Create(resource_provider_.get(), task_runner_.get(), |
| 389 ResourceProvider::TEXTURE_HINT_DEFAULT, | 391 ResourceProvider::TEXTURE_HINT_DEFAULT, |
| 390 base::TimeDelta::FromMilliseconds(100)); | 392 base::TimeDelta::FromMilliseconds(100)); |
| 391 resource = resource_pool_->AcquireResource(size, format, color_space); | 393 resource = resource_pool_->AcquireResource(size, format, color_space); |
| 392 EXPECT_FALSE(resource_provider_->IsImmutable(resource->id())); | 394 EXPECT_FALSE(resource_provider_->IsImmutable(resource->id())); |
| 393 resource_pool_->ReleaseResource(resource); | 395 resource_pool_->ReleaseResource(resource); |
| 394 } | 396 } |
| 395 | 397 |
| 396 } // namespace cc | 398 } // namespace cc |
| OLD | NEW |