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

Side by Side Diff: cc/trees/damage_tracker_unittest.cc

Issue 21154002: Add support for converting cc::FilterOperations into an SkImageFilter (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 7 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 | Annotate | Revision Log
« no previous file with comments | « cc/trees/damage_tracker.cc ('k') | cc/trees/layer_tree_host_common.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 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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/trees/damage_tracker.h" 5 #include "cc/trees/damage_tracker.h"
6 6
7 #include "cc/base/math_util.h" 7 #include "cc/base/math_util.h"
8 #include "cc/layers/layer_impl.h" 8 #include "cc/layers/layer_impl.h"
9 #include "cc/output/filter_operation.h" 9 #include "cc/output/filter_operation.h"
10 #include "cc/output/filter_operations.h" 10 #include "cc/output/filter_operations.h"
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 // surfaces to ancestors. 56 // surfaces to ancestors.
57 for (int i = render_surface_layer_list.size() - 1; i >= 0; --i) { 57 for (int i = render_surface_layer_list.size() - 1; i >= 0; --i) {
58 RenderSurfaceImpl* target_surface = 58 RenderSurfaceImpl* target_surface =
59 render_surface_layer_list[i]->render_surface(); 59 render_surface_layer_list[i]->render_surface();
60 target_surface->damage_tracker()->UpdateDamageTrackingState( 60 target_surface->damage_tracker()->UpdateDamageTrackingState(
61 target_surface->layer_list(), 61 target_surface->layer_list(),
62 target_surface->OwningLayerId(), 62 target_surface->OwningLayerId(),
63 target_surface->SurfacePropertyChangedOnlyFromDescendant(), 63 target_surface->SurfacePropertyChangedOnlyFromDescendant(),
64 target_surface->content_rect(), 64 target_surface->content_rect(),
65 render_surface_layer_list[i]->mask_layer(), 65 render_surface_layer_list[i]->mask_layer(),
66 render_surface_layer_list[i]->filters(), 66 render_surface_layer_list[i]->filters());
67 render_surface_layer_list[i]->filter().get());
68 } 67 }
69 68
70 root->ResetAllChangeTrackingForSubtree(); 69 root->ResetAllChangeTrackingForSubtree();
71 } 70 }
72 71
73 class DamageTrackerTest : public testing::Test { 72 class DamageTrackerTest : public testing::Test {
74 public: 73 public:
75 DamageTrackerTest() : host_impl_(&proxy_) {} 74 DamageTrackerTest() : host_impl_(&proxy_) {}
76 75
77 scoped_ptr<LayerImpl> CreateTestTreeWithOneSurface() { 76 scoped_ptr<LayerImpl> CreateTestTreeWithOneSurface() {
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after
439 scoped_ptr<LayerImpl> root = CreateAndSetUpTestTreeWithOneSurface(); 438 scoped_ptr<LayerImpl> root = CreateAndSetUpTestTreeWithOneSurface();
440 LayerImpl* child = root->children()[0]; 439 LayerImpl* child = root->children()[0];
441 gfx::RectF root_damage_rect, child_damage_rect; 440 gfx::RectF root_damage_rect, child_damage_rect;
442 441
443 // Allow us to set damage on child too. 442 // Allow us to set damage on child too.
444 child->SetDrawsContent(true); 443 child->SetDrawsContent(true);
445 444
446 skia::RefPtr<SkImageFilter> filter = 445 skia::RefPtr<SkImageFilter> filter =
447 skia::AdoptRef(new SkBlurImageFilter(SkIntToScalar(2), 446 skia::AdoptRef(new SkBlurImageFilter(SkIntToScalar(2),
448 SkIntToScalar(2))); 447 SkIntToScalar(2)));
448 FilterOperations filters;
449 filters.Append(FilterOperation::CreateReferenceFilter(filter));
449 450
450 // Setting the filter will damage the whole surface. 451 // Setting the filter will damage the whole surface.
451 ClearDamageForAllSurfaces(root.get()); 452 ClearDamageForAllSurfaces(root.get());
452 child->SetFilter(filter); 453 child->SetFilters(filters);
453 EmulateDrawingOneFrame(root.get()); 454 EmulateDrawingOneFrame(root.get());
454 root_damage_rect = 455 root_damage_rect =
455 root->render_surface()->damage_tracker()->current_damage_rect(); 456 root->render_surface()->damage_tracker()->current_damage_rect();
456 child_damage_rect = 457 child_damage_rect =
457 child->render_surface()->damage_tracker()->current_damage_rect(); 458 child->render_surface()->damage_tracker()->current_damage_rect();
458 EXPECT_FLOAT_RECT_EQ(gfx::RectF(100.f, 100.f, 30.f, 30.f), root_damage_rect); 459 EXPECT_FLOAT_RECT_EQ(gfx::RectF(100.f, 100.f, 30.f, 30.f), root_damage_rect);
459 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0.f, 0.f, 30.f, 30.f), child_damage_rect); 460 EXPECT_FLOAT_RECT_EQ(gfx::RectF(0.f, 0.f, 30.f, 30.f), child_damage_rect);
460 461
461 // CASE 1: Setting the update rect should damage the whole surface (for now) 462 // CASE 1: Setting the update rect should damage the whole surface (for now)
462 ClearDamageForAllSurfaces(root.get()); 463 ClearDamageForAllSurfaces(root.get());
(...skipping 827 matching lines...) Expand 10 before | Expand all | Expand 10 after
1290 ASSERT_TRUE(root == root->render_target()); 1291 ASSERT_TRUE(root == root->render_target());
1291 RenderSurfaceImpl* target_surface = root->render_surface(); 1292 RenderSurfaceImpl* target_surface = root->render_surface();
1292 1293
1293 LayerImplList empty_list; 1294 LayerImplList empty_list;
1294 target_surface->damage_tracker()->UpdateDamageTrackingState( 1295 target_surface->damage_tracker()->UpdateDamageTrackingState(
1295 empty_list, 1296 empty_list,
1296 target_surface->OwningLayerId(), 1297 target_surface->OwningLayerId(),
1297 false, 1298 false,
1298 gfx::Rect(), 1299 gfx::Rect(),
1299 NULL, 1300 NULL,
1300 FilterOperations(), 1301 FilterOperations());
1301 NULL);
1302 1302
1303 gfx::RectF damage_rect = 1303 gfx::RectF damage_rect =
1304 target_surface->damage_tracker()->current_damage_rect(); 1304 target_surface->damage_tracker()->current_damage_rect();
1305 EXPECT_TRUE(damage_rect.IsEmpty()); 1305 EXPECT_TRUE(damage_rect.IsEmpty());
1306 } 1306 }
1307 1307
1308 TEST_F(DamageTrackerTest, VerifyDamageAccumulatesUntilReset) { 1308 TEST_F(DamageTrackerTest, VerifyDamageAccumulatesUntilReset) {
1309 // If damage is not cleared, it should accumulate. 1309 // If damage is not cleared, it should accumulate.
1310 1310
1311 scoped_ptr<LayerImpl> root = CreateAndSetUpTestTreeWithOneSurface(); 1311 scoped_ptr<LayerImpl> root = CreateAndSetUpTestTreeWithOneSurface();
(...skipping 26 matching lines...) Expand all
1338 // Damage should remain empty even after one frame, since there's yet no new 1338 // Damage should remain empty even after one frame, since there's yet no new
1339 // damage. 1339 // damage.
1340 EmulateDrawingOneFrame(root.get()); 1340 EmulateDrawingOneFrame(root.get());
1341 root_damage_rect = 1341 root_damage_rect =
1342 root->render_surface()->damage_tracker()->current_damage_rect(); 1342 root->render_surface()->damage_tracker()->current_damage_rect();
1343 EXPECT_TRUE(root_damage_rect.IsEmpty()); 1343 EXPECT_TRUE(root_damage_rect.IsEmpty());
1344 } 1344 }
1345 1345
1346 } // namespace 1346 } // namespace
1347 } // namespace cc 1347 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/damage_tracker.cc ('k') | cc/trees/layer_tree_host_common.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698