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/debug/picture_record_benchmark.h" | 5 #include "cc/debug/picture_record_benchmark.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/values.h" | 10 #include "base/values.h" |
11 #include "cc/layers/layer.h" | 11 #include "cc/layers/layer.h" |
12 #include "cc/layers/picture_layer.h" | 12 #include "cc/layers/picture_layer.h" |
13 #include "cc/resources/picture.h" | 13 #include "cc/resources/picture.h" |
14 #include "cc/trees/layer_tree_host.h" | 14 #include "cc/trees/layer_tree_host.h" |
15 #include "cc/trees/layer_tree_host_common.h" | 15 #include "cc/trees/layer_tree_host_common.h" |
16 #include "third_party/skia/include/core/SkBBHFactory.h" | |
17 #include "ui/gfx/geometry/rect.h" | 16 #include "ui/gfx/geometry/rect.h" |
18 | 17 |
19 namespace cc { | 18 namespace cc { |
20 | 19 |
21 namespace { | 20 namespace { |
22 | 21 |
23 const int kPositionIncrement = 100; | 22 const int kPositionIncrement = 100; |
24 const int kTileGridSize = 512; | 23 const int kTileGridSize = 512; |
25 const int kTileGridBorder = 1; | |
26 | 24 |
27 } // namespace | 25 } // namespace |
28 | 26 |
29 PictureRecordBenchmark::PictureRecordBenchmark( | 27 PictureRecordBenchmark::PictureRecordBenchmark( |
30 scoped_ptr<base::Value> value, | 28 scoped_ptr<base::Value> value, |
31 const MicroBenchmark::DoneCallback& callback) | 29 const MicroBenchmark::DoneCallback& callback) |
32 : MicroBenchmark(callback) { | 30 : MicroBenchmark(callback) { |
33 if (!value) | 31 if (!value) |
34 return; | 32 return; |
35 | 33 |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
86 } | 84 } |
87 | 85 |
88 void PictureRecordBenchmark::Run(Layer* layer) { | 86 void PictureRecordBenchmark::Run(Layer* layer) { |
89 layer->RunMicroBenchmark(this); | 87 layer->RunMicroBenchmark(this); |
90 } | 88 } |
91 | 89 |
92 void PictureRecordBenchmark::RunOnLayer(PictureLayer* layer) { | 90 void PictureRecordBenchmark::RunOnLayer(PictureLayer* layer) { |
93 ContentLayerClient* painter = layer->client(); | 91 ContentLayerClient* painter = layer->client(); |
94 gfx::Size content_bounds = layer->content_bounds(); | 92 gfx::Size content_bounds = layer->content_bounds(); |
95 | 93 |
96 SkTileGridFactory::TileGridInfo tile_grid_info; | 94 gfx::Size tile_grid_size(kTileGridSize, kTileGridSize); |
97 tile_grid_info.fTileInterval.set(kTileGridSize - 2 * kTileGridBorder, | |
98 kTileGridSize - 2 * kTileGridBorder); | |
99 tile_grid_info.fMargin.set(kTileGridBorder, kTileGridBorder); | |
100 tile_grid_info.fOffset.set(-kTileGridBorder, -kTileGridBorder); | |
101 | 95 |
102 for (size_t i = 0; i < dimensions_.size(); ++i) { | 96 for (size_t i = 0; i < dimensions_.size(); ++i) { |
103 std::pair<int, int> dimensions = dimensions_[i]; | 97 std::pair<int, int> dimensions = dimensions_[i]; |
104 int width = dimensions.first; | 98 int width = dimensions.first; |
105 int height = dimensions.second; | 99 int height = dimensions.second; |
106 | 100 |
107 int y_limit = std::max(1, content_bounds.height() - height); | 101 int y_limit = std::max(1, content_bounds.height() - height); |
108 int x_limit = std::max(1, content_bounds.width() - width); | 102 int x_limit = std::max(1, content_bounds.width() - width); |
109 for (int y = 0; y < y_limit; y += kPositionIncrement) { | 103 for (int y = 0; y < y_limit; y += kPositionIncrement) { |
110 for (int x = 0; x < x_limit; x += kPositionIncrement) { | 104 for (int x = 0; x < x_limit; x += kPositionIncrement) { |
111 gfx::Rect rect = gfx::Rect(x, y, width, height); | 105 gfx::Rect rect = gfx::Rect(x, y, width, height); |
112 | 106 |
113 base::TimeTicks start = base::TimeTicks::HighResNow(); | 107 base::TimeTicks start = base::TimeTicks::HighResNow(); |
114 | 108 |
115 scoped_refptr<Picture> picture = Picture::Create( | 109 scoped_refptr<Picture> picture = Picture::Create( |
116 rect, painter, tile_grid_info, false, Picture::RECORD_NORMALLY); | 110 rect, painter, tile_grid_size, false, Picture::RECORD_NORMALLY); |
117 | 111 |
118 base::TimeTicks end = base::TimeTicks::HighResNow(); | 112 base::TimeTicks end = base::TimeTicks::HighResNow(); |
119 base::TimeDelta duration = end - start; | 113 base::TimeDelta duration = end - start; |
120 TotalTime& total_time = times_[dimensions]; | 114 TotalTime& total_time = times_[dimensions]; |
121 total_time.first += duration; | 115 total_time.first += duration; |
122 total_time.second++; | 116 total_time.second++; |
123 } | 117 } |
124 } | 118 } |
125 } | 119 } |
126 } | 120 } |
127 | 121 |
128 } // namespace cc | 122 } // namespace cc |
OLD | NEW |