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

Unified Diff: cc/resources/resource_pool_unittest.cc

Issue 2110083004: Partial raster for GPU (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@partialuma2
Patch Set: Add missing resource cleanup to unit tests. Created 4 years, 5 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/resource_pool.cc ('k') | cc/test/fake_raster_buffer_provider.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/resources/resource_pool_unittest.cc
diff --git a/cc/resources/resource_pool_unittest.cc b/cc/resources/resource_pool_unittest.cc
index d9025c621b11f94bf2e30afa11096a9160c9d34a..af14a604c5d43af3a09126707caf491bf80a176a 100644
--- a/cc/resources/resource_pool_unittest.cc
+++ b/cc/resources/resource_pool_unittest.cc
@@ -49,7 +49,7 @@ TEST_F(ResourcePoolTest, AcquireRelease) {
EXPECT_EQ(format, resource->format());
EXPECT_TRUE(resource_provider_->CanLockForWrite(resource->id()));
- resource_pool_->ReleaseResource(resource, 0u);
+ resource_pool_->ReleaseResource(resource);
}
TEST_F(ResourcePoolTest, AccountingSingleResource) {
@@ -70,7 +70,7 @@ TEST_F(ResourcePoolTest, AccountingSingleResource) {
EXPECT_EQ(1u, resource_pool_->resource_count());
EXPECT_EQ(0u, resource_pool_->GetBusyResourceCountForTesting());
- resource_pool_->ReleaseResource(resource, 0u);
+ resource_pool_->ReleaseResource(resource);
EXPECT_EQ(resource_bytes, resource_pool_->GetTotalMemoryUsageForTesting());
EXPECT_EQ(1u, resource_pool_->GetTotalResourceCountForTesting());
EXPECT_EQ(1u, resource_pool_->GetBusyResourceCountForTesting());
@@ -101,21 +101,21 @@ TEST_F(ResourcePoolTest, SimpleResourceReuse) {
ResourceFormat format = RGBA_8888;
Resource* resource = resource_pool_->AcquireResource(size, format);
- resource_pool_->ReleaseResource(resource, 0u);
+ resource_pool_->ReleaseResource(resource);
resource_pool_->CheckBusyResources();
EXPECT_EQ(1u, resource_provider_->num_resources());
// Same size/format should re-use resource.
resource = resource_pool_->AcquireResource(size, format);
EXPECT_EQ(1u, resource_provider_->num_resources());
- resource_pool_->ReleaseResource(resource, 0u);
+ resource_pool_->ReleaseResource(resource);
resource_pool_->CheckBusyResources();
EXPECT_EQ(1u, resource_provider_->num_resources());
// Different size/format should alloate new resource.
resource = resource_pool_->AcquireResource(gfx::Size(50, 50), LUMINANCE_8);
EXPECT_EQ(2u, resource_provider_->num_resources());
- resource_pool_->ReleaseResource(resource, 0u);
+ resource_pool_->ReleaseResource(resource);
resource_pool_->CheckBusyResources();
EXPECT_EQ(2u, resource_provider_->num_resources());
}
@@ -133,7 +133,7 @@ TEST_F(ResourcePoolTest, LostResource) {
EXPECT_EQ(1u, resource_provider_->num_resources());
resource_provider_->LoseResourceForTesting(resource->id());
- resource_pool_->ReleaseResource(resource, 0u);
+ resource_pool_->ReleaseResource(resource);
resource_pool_->CheckBusyResources();
EXPECT_EQ(0u, resource_provider_->num_resources());
}
@@ -157,7 +157,7 @@ TEST_F(ResourcePoolTest, BusyResourcesEventuallyFreed) {
EXPECT_EQ(40000u, resource_pool_->GetTotalMemoryUsageForTesting());
EXPECT_EQ(1u, resource_pool_->resource_count());
- resource_pool_->ReleaseResource(resource, 0u);
+ resource_pool_->ReleaseResource(resource);
EXPECT_EQ(1u, resource_provider_->num_resources());
EXPECT_EQ(40000u, resource_pool_->GetTotalMemoryUsageForTesting());
EXPECT_EQ(0u, resource_pool_->memory_usage_bytes());
@@ -195,7 +195,7 @@ TEST_F(ResourcePoolTest, UnusedResourcesEventuallyFreed) {
EXPECT_EQ(1u, resource_pool_->GetTotalResourceCountForTesting());
EXPECT_EQ(1u, resource_pool_->resource_count());
- resource_pool_->ReleaseResource(resource, 0u);
+ resource_pool_->ReleaseResource(resource);
EXPECT_EQ(1u, resource_provider_->num_resources());
EXPECT_EQ(40000u, resource_pool_->GetTotalMemoryUsageForTesting());
EXPECT_EQ(1u, resource_pool_->GetTotalResourceCountForTesting());
@@ -220,5 +220,70 @@ TEST_F(ResourcePoolTest, UnusedResourcesEventuallyFreed) {
EXPECT_EQ(0u, resource_pool_->GetTotalMemoryUsageForTesting());
}
+TEST_F(ResourcePoolTest, UpdateContentId) {
+ gfx::Size size(100, 100);
+ ResourceFormat format = RGBA_8888;
+ uint64_t content_id = 42;
+ uint64_t new_content_id = 43;
+ gfx::Rect new_invalidated_rect(20, 20, 10, 10);
+
+ Resource* resource = resource_pool_->AcquireResource(size, format);
+ resource_pool_->OnContentReplaced(resource->id(), content_id);
+ resource_pool_->ReleaseResource(resource);
+ resource_pool_->CheckBusyResources();
+
+ // Ensure that we can retrieve the resource based on |content_id|.
+ gfx::Rect invalidated_rect;
+ Resource* reacquired_resource =
+ resource_pool_->TryAcquireResourceForPartialRaster(
+ new_content_id, new_invalidated_rect, content_id, &invalidated_rect);
+ EXPECT_EQ(resource, reacquired_resource);
+ EXPECT_EQ(new_invalidated_rect, invalidated_rect);
+ resource_pool_->ReleaseResource(reacquired_resource);
+}
+
+TEST_F(ResourcePoolTest, UpdateContentIdAndInvalidatedRect) {
+ gfx::Size size(100, 100);
+ ResourceFormat format = RGBA_8888;
+ uint64_t content_ids[] = {42, 43, 44};
+ gfx::Rect invalidated_rect(20, 20, 10, 10);
+ gfx::Rect second_invalidated_rect(25, 25, 10, 10);
+ gfx::Rect expected_total_invalidated_rect(20, 20, 15, 15);
+
+ // Acquire a new resource with the first content id.
+ Resource* resource = resource_pool_->AcquireResource(size, format);
+ resource_pool_->OnContentReplaced(resource->id(), content_ids[0]);
+
+ // Attempt to acquire this resource. It is in use, so its ID and invalidated
+ // rect should be updated, but a new resource will be returned.
+ gfx::Rect new_invalidated_rect;
+ Resource* reacquired_resource =
+ resource_pool_->TryAcquireResourceForPartialRaster(
+ content_ids[1], invalidated_rect, content_ids[0],
+ &new_invalidated_rect);
+ EXPECT_EQ(nullptr, reacquired_resource);
+ EXPECT_EQ(gfx::Rect(), new_invalidated_rect);
+
+ // Release the original resource, returning it to the unused pool.
+ resource_pool_->ReleaseResource(resource);
+ resource_pool_->CheckBusyResources();
+
+ // Ensure that we cannot retrieve a resource based on the original content id.
+ reacquired_resource = resource_pool_->TryAcquireResourceForPartialRaster(
+ content_ids[1], invalidated_rect, content_ids[0], &new_invalidated_rect);
+ EXPECT_EQ(nullptr, reacquired_resource);
+ EXPECT_EQ(gfx::Rect(), new_invalidated_rect);
+
+ // Ensure that we can retrieve the resource based on the second (updated)
+ // content ID and that it has the expected invalidated rect.
+ gfx::Rect total_invalidated_rect;
+ reacquired_resource = resource_pool_->TryAcquireResourceForPartialRaster(
+ content_ids[2], second_invalidated_rect, content_ids[1],
+ &total_invalidated_rect);
+ EXPECT_EQ(resource, reacquired_resource);
+ EXPECT_EQ(expected_total_invalidated_rect, total_invalidated_rect);
+ resource_pool_->ReleaseResource(reacquired_resource);
+}
+
} // namespace
} // namespace cc
« no previous file with comments | « cc/resources/resource_pool.cc ('k') | cc/test/fake_raster_buffer_provider.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698