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

Unified Diff: cc/region_unittest.cc

Issue 11369103: Compare SkRegion and android::Region performance. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 1 month 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/region.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/region_unittest.cc
diff --git a/cc/region_unittest.cc b/cc/region_unittest.cc
index c73c5f26dd1209aa1d996e0478422139488b429b..7aacfd4ea5dadf1b307f466fbbbc6ad94095e525 100644
--- a/cc/region_unittest.cc
+++ b/cc/region_unittest.cc
@@ -417,4 +417,53 @@ TEST(RegionTest, IsEmpty) {
EXPECT_FALSE(SkIRect::MakeXYWH(0, 0, 2, 2).isEmpty());
}
-} // namespace
+} // namespace
+
+#include "cc/layer.h"
+#include "cc/layer_tree_host_common.h"
+#include "cc/occlusion_tracker.h"
+
+void blah() {
+ static int count = 0;
+ ++count;
+}
+
+namespace {
+TEST(RegionTest, Speed) {
+ scoped_refptr<Layer> root_layer = Layer::create();
+
+ for (int i = 0; i < 10000; ++i) {
+ scoped_refptr<Layer> layer = Layer::create();
+ layer->setIsDrawable(true);
+ layer->setAnchorPoint(gfx::Point());
+ layer->setBounds(gfx::Size(400, 400));
+ layer->setContentsOpaque(true);
+
+ int x = i % 600;
+ int y = 600 - x;
+ layer->setPosition(gfx::Point(x, y));
+
+ root_layer->addChild(layer);
+ }
+
+ Layer::LayerList renderSurfaceLayerList;
+ gfx::Size device_viewport_size(1000, 1000);
+ LayerTreeHostCommon::calculateDrawTransforms(root_layer, device_viewport_size, 1, 1, 1000, renderSurfaceLayerList);
+
+ bool recordMetrics = false;
+ OcclusionTracker occlusionTracker(gfx::Rect(device_viewport_size), recordMetrics);
+ occlusionTracker.setMinimumTrackingSize(gfx::Size());
+
+ typedef LayerIterator<Layer, Layer::LayerList, RenderSurface, LayerIteratorActions::FrontToBack> LayerIteratorType;
+ LayerIteratorType end = LayerIteratorType::end(&renderSurfaceLayerList);
+ for (LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); it != end; ++it) {
+ occlusionTracker.enterLayer(it);
+
+ bool occluded = occlusionTracker.occluded(it->renderTarget(), gfx::Rect(it->contentBounds()), it->drawTransform(), true, it->drawableContentRect(), NULL);
+ if (!occluded)
+ blah();
+
+ occlusionTracker.leaveLayer(it);
+ }
+}
+} // namespace
« no previous file with comments | « cc/region.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698