OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/tiles/picture_layer_tiling_set.h" | 5 #include "cc/tiles/picture_layer_tiling_set.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 | 60 |
61 TEST(PictureLayerTilingSetTest, NoResources) { | 61 TEST(PictureLayerTilingSetTest, NoResources) { |
62 FakePictureLayerTilingClient client; | 62 FakePictureLayerTilingClient client; |
63 gfx::Size layer_bounds(1000, 800); | 63 gfx::Size layer_bounds(1000, 800); |
64 std::unique_ptr<TestablePictureLayerTilingSet> set = CreateTilingSet(&client); | 64 std::unique_ptr<TestablePictureLayerTilingSet> set = CreateTilingSet(&client); |
65 client.SetTileSize(gfx::Size(256, 256)); | 65 client.SetTileSize(gfx::Size(256, 256)); |
66 | 66 |
67 scoped_refptr<FakeRasterSource> raster_source = | 67 scoped_refptr<FakeRasterSource> raster_source = |
68 FakeRasterSource::CreateEmpty(layer_bounds); | 68 FakeRasterSource::CreateEmpty(layer_bounds); |
69 | 69 |
70 set->AddTiling(1.0, raster_source); | 70 set->AddTiling(gfx::AxisTransform2d(), raster_source); |
71 set->AddTiling(1.5, raster_source); | 71 set->AddTiling(gfx::AxisTransform2d(1.5, gfx::Vector2dF()), raster_source); |
72 set->AddTiling(2.0, raster_source); | 72 set->AddTiling(gfx::AxisTransform2d(2.0, gfx::Vector2dF()), raster_source); |
73 | 73 |
74 float contents_scale = 2.0; | 74 float contents_scale = 2.0; |
75 gfx::Size content_bounds( | 75 gfx::Size content_bounds( |
76 gfx::ScaleToCeiledSize(layer_bounds, contents_scale)); | 76 gfx::ScaleToCeiledSize(layer_bounds, contents_scale)); |
77 gfx::Rect content_rect(content_bounds); | 77 gfx::Rect content_rect(content_bounds); |
78 | 78 |
79 Region remaining(content_rect); | 79 Region remaining(content_rect); |
80 PictureLayerTilingSet::CoverageIterator iter(set.get(), contents_scale, | 80 PictureLayerTilingSet::CoverageIterator iter(set.get(), contents_scale, |
81 content_rect, contents_scale); | 81 content_rect, contents_scale); |
82 for (; iter; ++iter) { | 82 for (; iter; ++iter) { |
(...skipping 16 matching lines...) Expand all Loading... |
99 PictureLayerTilingSet::TilingRange between_high_and_low_res_range(0, 0); | 99 PictureLayerTilingSet::TilingRange between_high_and_low_res_range(0, 0); |
100 PictureLayerTilingSet::TilingRange low_res_range(0, 0); | 100 PictureLayerTilingSet::TilingRange low_res_range(0, 0); |
101 PictureLayerTilingSet::TilingRange lower_than_low_res_range(0, 0); | 101 PictureLayerTilingSet::TilingRange lower_than_low_res_range(0, 0); |
102 PictureLayerTiling* high_res_tiling; | 102 PictureLayerTiling* high_res_tiling; |
103 PictureLayerTiling* low_res_tiling; | 103 PictureLayerTiling* low_res_tiling; |
104 | 104 |
105 scoped_refptr<FakeRasterSource> raster_source = | 105 scoped_refptr<FakeRasterSource> raster_source = |
106 FakeRasterSource::CreateFilled(layer_bounds); | 106 FakeRasterSource::CreateFilled(layer_bounds); |
107 | 107 |
108 std::unique_ptr<TestablePictureLayerTilingSet> set = CreateTilingSet(&client); | 108 std::unique_ptr<TestablePictureLayerTilingSet> set = CreateTilingSet(&client); |
109 set->AddTiling(2.0, raster_source); | 109 set->AddTiling(gfx::AxisTransform2d(2.0, gfx::Vector2dF()), raster_source); |
110 high_res_tiling = set->AddTiling(1.0, raster_source); | 110 high_res_tiling = set->AddTiling(gfx::AxisTransform2d(), raster_source); |
111 high_res_tiling->set_resolution(HIGH_RESOLUTION); | 111 high_res_tiling->set_resolution(HIGH_RESOLUTION); |
112 set->AddTiling(0.5, raster_source); | 112 set->AddTiling(gfx::AxisTransform2d(0.5, gfx::Vector2dF()), raster_source); |
113 low_res_tiling = set->AddTiling(0.25, raster_source); | 113 low_res_tiling = set->AddTiling(gfx::AxisTransform2d(0.25, gfx::Vector2dF()), |
| 114 raster_source); |
114 low_res_tiling->set_resolution(LOW_RESOLUTION); | 115 low_res_tiling->set_resolution(LOW_RESOLUTION); |
115 set->AddTiling(0.125, raster_source); | 116 set->AddTiling(gfx::AxisTransform2d(0.125, gfx::Vector2dF()), raster_source); |
116 | 117 |
117 higher_than_high_res_range = | 118 higher_than_high_res_range = |
118 set->GetTilingRange(PictureLayerTilingSet::HIGHER_THAN_HIGH_RES); | 119 set->GetTilingRange(PictureLayerTilingSet::HIGHER_THAN_HIGH_RES); |
119 EXPECT_EQ(0u, higher_than_high_res_range.start); | 120 EXPECT_EQ(0u, higher_than_high_res_range.start); |
120 EXPECT_EQ(1u, higher_than_high_res_range.end); | 121 EXPECT_EQ(1u, higher_than_high_res_range.end); |
121 | 122 |
122 high_res_range = set->GetTilingRange(PictureLayerTilingSet::HIGH_RES); | 123 high_res_range = set->GetTilingRange(PictureLayerTilingSet::HIGH_RES); |
123 EXPECT_EQ(1u, high_res_range.start); | 124 EXPECT_EQ(1u, high_res_range.start); |
124 EXPECT_EQ(2u, high_res_range.end); | 125 EXPECT_EQ(2u, high_res_range.end); |
125 | 126 |
126 between_high_and_low_res_range = | 127 between_high_and_low_res_range = |
127 set->GetTilingRange(PictureLayerTilingSet::BETWEEN_HIGH_AND_LOW_RES); | 128 set->GetTilingRange(PictureLayerTilingSet::BETWEEN_HIGH_AND_LOW_RES); |
128 EXPECT_EQ(2u, between_high_and_low_res_range.start); | 129 EXPECT_EQ(2u, between_high_and_low_res_range.start); |
129 EXPECT_EQ(3u, between_high_and_low_res_range.end); | 130 EXPECT_EQ(3u, between_high_and_low_res_range.end); |
130 | 131 |
131 low_res_range = set->GetTilingRange(PictureLayerTilingSet::LOW_RES); | 132 low_res_range = set->GetTilingRange(PictureLayerTilingSet::LOW_RES); |
132 EXPECT_EQ(3u, low_res_range.start); | 133 EXPECT_EQ(3u, low_res_range.start); |
133 EXPECT_EQ(4u, low_res_range.end); | 134 EXPECT_EQ(4u, low_res_range.end); |
134 | 135 |
135 lower_than_low_res_range = | 136 lower_than_low_res_range = |
136 set->GetTilingRange(PictureLayerTilingSet::LOWER_THAN_LOW_RES); | 137 set->GetTilingRange(PictureLayerTilingSet::LOWER_THAN_LOW_RES); |
137 EXPECT_EQ(4u, lower_than_low_res_range.start); | 138 EXPECT_EQ(4u, lower_than_low_res_range.start); |
138 EXPECT_EQ(5u, lower_than_low_res_range.end); | 139 EXPECT_EQ(5u, lower_than_low_res_range.end); |
139 | 140 |
140 std::unique_ptr<TestablePictureLayerTilingSet> set_without_low_res = | 141 std::unique_ptr<TestablePictureLayerTilingSet> set_without_low_res = |
141 CreateTilingSet(&client); | 142 CreateTilingSet(&client); |
142 set_without_low_res->AddTiling(2.0, raster_source); | 143 set_without_low_res->AddTiling(gfx::AxisTransform2d(2.0, gfx::Vector2dF()), |
143 high_res_tiling = set_without_low_res->AddTiling(1.0, raster_source); | 144 raster_source); |
| 145 high_res_tiling = |
| 146 set_without_low_res->AddTiling(gfx::AxisTransform2d(), raster_source); |
144 high_res_tiling->set_resolution(HIGH_RESOLUTION); | 147 high_res_tiling->set_resolution(HIGH_RESOLUTION); |
145 set_without_low_res->AddTiling(0.5, raster_source); | 148 set_without_low_res->AddTiling(gfx::AxisTransform2d(0.5, gfx::Vector2dF()), |
146 set_without_low_res->AddTiling(0.25, raster_source); | 149 raster_source); |
| 150 set_without_low_res->AddTiling(gfx::AxisTransform2d(0.25, gfx::Vector2dF()), |
| 151 raster_source); |
147 | 152 |
148 higher_than_high_res_range = set_without_low_res->GetTilingRange( | 153 higher_than_high_res_range = set_without_low_res->GetTilingRange( |
149 PictureLayerTilingSet::HIGHER_THAN_HIGH_RES); | 154 PictureLayerTilingSet::HIGHER_THAN_HIGH_RES); |
150 EXPECT_EQ(0u, higher_than_high_res_range.start); | 155 EXPECT_EQ(0u, higher_than_high_res_range.start); |
151 EXPECT_EQ(1u, higher_than_high_res_range.end); | 156 EXPECT_EQ(1u, higher_than_high_res_range.end); |
152 | 157 |
153 high_res_range = | 158 high_res_range = |
154 set_without_low_res->GetTilingRange(PictureLayerTilingSet::HIGH_RES); | 159 set_without_low_res->GetTilingRange(PictureLayerTilingSet::HIGH_RES); |
155 EXPECT_EQ(1u, high_res_range.start); | 160 EXPECT_EQ(1u, high_res_range.start); |
156 EXPECT_EQ(2u, high_res_range.end); | 161 EXPECT_EQ(2u, high_res_range.end); |
157 | 162 |
158 between_high_and_low_res_range = set_without_low_res->GetTilingRange( | 163 between_high_and_low_res_range = set_without_low_res->GetTilingRange( |
159 PictureLayerTilingSet::BETWEEN_HIGH_AND_LOW_RES); | 164 PictureLayerTilingSet::BETWEEN_HIGH_AND_LOW_RES); |
160 EXPECT_EQ(2u, between_high_and_low_res_range.start); | 165 EXPECT_EQ(2u, between_high_and_low_res_range.start); |
161 EXPECT_EQ(4u, between_high_and_low_res_range.end); | 166 EXPECT_EQ(4u, between_high_and_low_res_range.end); |
162 | 167 |
163 low_res_range = | 168 low_res_range = |
164 set_without_low_res->GetTilingRange(PictureLayerTilingSet::LOW_RES); | 169 set_without_low_res->GetTilingRange(PictureLayerTilingSet::LOW_RES); |
165 EXPECT_EQ(0u, low_res_range.end - low_res_range.start); | 170 EXPECT_EQ(0u, low_res_range.end - low_res_range.start); |
166 | 171 |
167 lower_than_low_res_range = set_without_low_res->GetTilingRange( | 172 lower_than_low_res_range = set_without_low_res->GetTilingRange( |
168 PictureLayerTilingSet::LOWER_THAN_LOW_RES); | 173 PictureLayerTilingSet::LOWER_THAN_LOW_RES); |
169 EXPECT_EQ(0u, lower_than_low_res_range.end - lower_than_low_res_range.start); | 174 EXPECT_EQ(0u, lower_than_low_res_range.end - lower_than_low_res_range.start); |
170 | 175 |
171 std::unique_ptr<TestablePictureLayerTilingSet> | 176 std::unique_ptr<TestablePictureLayerTilingSet> |
172 set_with_only_high_and_low_res = CreateTilingSet(&client); | 177 set_with_only_high_and_low_res = CreateTilingSet(&client); |
173 high_res_tiling = | 178 high_res_tiling = set_with_only_high_and_low_res->AddTiling( |
174 set_with_only_high_and_low_res->AddTiling(1.0, raster_source); | 179 gfx::AxisTransform2d(), raster_source); |
175 high_res_tiling->set_resolution(HIGH_RESOLUTION); | 180 high_res_tiling->set_resolution(HIGH_RESOLUTION); |
176 low_res_tiling = | 181 low_res_tiling = set_with_only_high_and_low_res->AddTiling( |
177 set_with_only_high_and_low_res->AddTiling(0.5, raster_source); | 182 gfx::AxisTransform2d(0.5, gfx::Vector2dF()), raster_source); |
178 low_res_tiling->set_resolution(LOW_RESOLUTION); | 183 low_res_tiling->set_resolution(LOW_RESOLUTION); |
179 | 184 |
180 higher_than_high_res_range = set_with_only_high_and_low_res->GetTilingRange( | 185 higher_than_high_res_range = set_with_only_high_and_low_res->GetTilingRange( |
181 PictureLayerTilingSet::HIGHER_THAN_HIGH_RES); | 186 PictureLayerTilingSet::HIGHER_THAN_HIGH_RES); |
182 EXPECT_EQ(0u, | 187 EXPECT_EQ(0u, |
183 higher_than_high_res_range.end - higher_than_high_res_range.start); | 188 higher_than_high_res_range.end - higher_than_high_res_range.start); |
184 | 189 |
185 high_res_range = set_with_only_high_and_low_res->GetTilingRange( | 190 high_res_range = set_with_only_high_and_low_res->GetTilingRange( |
186 PictureLayerTilingSet::HIGH_RES); | 191 PictureLayerTilingSet::HIGH_RES); |
187 EXPECT_EQ(0u, high_res_range.start); | 192 EXPECT_EQ(0u, high_res_range.start); |
188 EXPECT_EQ(1u, high_res_range.end); | 193 EXPECT_EQ(1u, high_res_range.end); |
189 | 194 |
190 between_high_and_low_res_range = | 195 between_high_and_low_res_range = |
191 set_with_only_high_and_low_res->GetTilingRange( | 196 set_with_only_high_and_low_res->GetTilingRange( |
192 PictureLayerTilingSet::BETWEEN_HIGH_AND_LOW_RES); | 197 PictureLayerTilingSet::BETWEEN_HIGH_AND_LOW_RES); |
193 EXPECT_EQ(0u, between_high_and_low_res_range.end - | 198 EXPECT_EQ(0u, between_high_and_low_res_range.end - |
194 between_high_and_low_res_range.start); | 199 between_high_and_low_res_range.start); |
195 | 200 |
196 low_res_range = set_with_only_high_and_low_res->GetTilingRange( | 201 low_res_range = set_with_only_high_and_low_res->GetTilingRange( |
197 PictureLayerTilingSet::LOW_RES); | 202 PictureLayerTilingSet::LOW_RES); |
198 EXPECT_EQ(1u, low_res_range.start); | 203 EXPECT_EQ(1u, low_res_range.start); |
199 EXPECT_EQ(2u, low_res_range.end); | 204 EXPECT_EQ(2u, low_res_range.end); |
200 | 205 |
201 lower_than_low_res_range = set_with_only_high_and_low_res->GetTilingRange( | 206 lower_than_low_res_range = set_with_only_high_and_low_res->GetTilingRange( |
202 PictureLayerTilingSet::LOWER_THAN_LOW_RES); | 207 PictureLayerTilingSet::LOWER_THAN_LOW_RES); |
203 EXPECT_EQ(0u, lower_than_low_res_range.end - lower_than_low_res_range.start); | 208 EXPECT_EQ(0u, lower_than_low_res_range.end - lower_than_low_res_range.start); |
204 | 209 |
205 std::unique_ptr<TestablePictureLayerTilingSet> set_with_only_high_res = | 210 std::unique_ptr<TestablePictureLayerTilingSet> set_with_only_high_res = |
206 CreateTilingSet(&client); | 211 CreateTilingSet(&client); |
207 high_res_tiling = set_with_only_high_res->AddTiling(1.0, raster_source); | 212 high_res_tiling = |
| 213 set_with_only_high_res->AddTiling(gfx::AxisTransform2d(), raster_source); |
208 high_res_tiling->set_resolution(HIGH_RESOLUTION); | 214 high_res_tiling->set_resolution(HIGH_RESOLUTION); |
209 | 215 |
210 higher_than_high_res_range = set_with_only_high_res->GetTilingRange( | 216 higher_than_high_res_range = set_with_only_high_res->GetTilingRange( |
211 PictureLayerTilingSet::HIGHER_THAN_HIGH_RES); | 217 PictureLayerTilingSet::HIGHER_THAN_HIGH_RES); |
212 EXPECT_EQ(0u, | 218 EXPECT_EQ(0u, |
213 higher_than_high_res_range.end - higher_than_high_res_range.start); | 219 higher_than_high_res_range.end - higher_than_high_res_range.start); |
214 | 220 |
215 high_res_range = | 221 high_res_range = |
216 set_with_only_high_res->GetTilingRange(PictureLayerTilingSet::HIGH_RES); | 222 set_with_only_high_res->GetTilingRange(PictureLayerTilingSet::HIGH_RES); |
217 EXPECT_EQ(0u, high_res_range.start); | 223 EXPECT_EQ(0u, high_res_range.start); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
249 FakePictureLayerTilingClient client(resource_provider.get()); | 255 FakePictureLayerTilingClient client(resource_provider.get()); |
250 client.SetTileSize(gfx::Size(256, 256)); | 256 client.SetTileSize(gfx::Size(256, 256)); |
251 gfx::Size layer_bounds(1000, 800); | 257 gfx::Size layer_bounds(1000, 800); |
252 std::unique_ptr<TestablePictureLayerTilingSet> set = | 258 std::unique_ptr<TestablePictureLayerTilingSet> set = |
253 CreateTilingSet(&client); | 259 CreateTilingSet(&client); |
254 scoped_refptr<FakeRasterSource> raster_source = | 260 scoped_refptr<FakeRasterSource> raster_source = |
255 FakeRasterSource::CreateFilled(layer_bounds); | 261 FakeRasterSource::CreateFilled(layer_bounds); |
256 | 262 |
257 float scale = min_scale; | 263 float scale = min_scale; |
258 for (int i = 0; i < num_tilings; ++i, scale += scale_increment) { | 264 for (int i = 0; i < num_tilings; ++i, scale += scale_increment) { |
259 PictureLayerTiling* tiling = set->AddTiling(scale, raster_source); | 265 PictureLayerTiling* tiling = set->AddTiling( |
| 266 gfx::AxisTransform2d(scale, gfx::Vector2dF()), raster_source); |
260 tiling->set_resolution(HIGH_RESOLUTION); | 267 tiling->set_resolution(HIGH_RESOLUTION); |
261 tiling->CreateAllTilesForTesting(); | 268 tiling->CreateAllTilesForTesting(); |
262 std::vector<Tile*> tiles = tiling->AllTilesForTesting(); | 269 std::vector<Tile*> tiles = tiling->AllTilesForTesting(); |
263 client.tile_manager()->InitializeTilesWithResourcesForTesting(tiles); | 270 client.tile_manager()->InitializeTilesWithResourcesForTesting(tiles); |
264 } | 271 } |
265 | 272 |
266 float max_contents_scale = scale; | 273 float max_contents_scale = scale; |
267 gfx::Size content_bounds( | 274 gfx::Size content_bounds( |
268 gfx::ScaleToCeiledSize(layer_bounds, max_contents_scale)); | 275 gfx::ScaleToCeiledSize(layer_bounds, max_contents_scale)); |
269 gfx::Rect content_rect(content_bounds); | 276 gfx::Rect content_rect(content_bounds); |
270 | 277 |
271 Region remaining(content_rect); | 278 Region remaining(content_rect); |
272 PictureLayerTilingSet::CoverageIterator iter( | 279 PictureLayerTilingSet::CoverageIterator iter( |
273 set.get(), max_contents_scale, content_rect, ideal_contents_scale); | 280 set.get(), max_contents_scale, content_rect, ideal_contents_scale); |
274 for (; iter; ++iter) { | 281 for (; iter; ++iter) { |
275 gfx::Rect geometry_rect = iter.geometry_rect(); | 282 gfx::Rect geometry_rect = iter.geometry_rect(); |
276 EXPECT_TRUE(content_rect.Contains(geometry_rect)); | 283 EXPECT_TRUE(content_rect.Contains(geometry_rect)); |
277 ASSERT_TRUE(remaining.Contains(geometry_rect)); | 284 ASSERT_TRUE(remaining.Contains(geometry_rect)); |
278 remaining.Subtract(geometry_rect); | 285 remaining.Subtract(geometry_rect); |
279 | 286 |
280 float scale = iter.CurrentTiling()->contents_scale(); | 287 float scale = iter.CurrentTiling()->contents_scale_key(); |
281 EXPECT_EQ(expected_scale, scale); | 288 EXPECT_EQ(expected_scale, scale); |
282 | 289 |
283 if (num_tilings) | 290 if (num_tilings) |
284 EXPECT_TRUE(*iter); | 291 EXPECT_TRUE(*iter); |
285 else | 292 else |
286 EXPECT_FALSE(*iter); | 293 EXPECT_FALSE(*iter); |
287 } | 294 } |
288 EXPECT_TRUE(remaining.IsEmpty()); | 295 EXPECT_TRUE(remaining.IsEmpty()); |
289 } | 296 } |
290 }; | 297 }; |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
334 | 341 |
335 gfx::Size layer_bounds(100, 100); | 342 gfx::Size layer_bounds(100, 100); |
336 scoped_refptr<FakeRasterSource> raster_source = | 343 scoped_refptr<FakeRasterSource> raster_source = |
337 FakeRasterSource::CreateFilled(layer_bounds); | 344 FakeRasterSource::CreateFilled(layer_bounds); |
338 | 345 |
339 gfx::Size tile_size1(10, 10); | 346 gfx::Size tile_size1(10, 10); |
340 gfx::Size tile_size2(30, 30); | 347 gfx::Size tile_size2(30, 30); |
341 gfx::Size tile_size3(20, 20); | 348 gfx::Size tile_size3(20, 20); |
342 | 349 |
343 pending_client.SetTileSize(tile_size1); | 350 pending_client.SetTileSize(tile_size1); |
344 pending_set->AddTiling(1.f, raster_source); | 351 pending_set->AddTiling(gfx::AxisTransform2d(), raster_source); |
345 // New tilings get the correct tile size. | 352 // New tilings get the correct tile size. |
346 EXPECT_EQ(tile_size1, pending_set->tiling_at(0)->tile_size()); | 353 EXPECT_EQ(tile_size1, pending_set->tiling_at(0)->tile_size()); |
347 | 354 |
348 // Set some expected things for the tiling set to function. | 355 // Set some expected things for the tiling set to function. |
349 pending_set->tiling_at(0)->set_resolution(HIGH_RESOLUTION); | 356 pending_set->tiling_at(0)->set_resolution(HIGH_RESOLUTION); |
350 active_client.set_twin_tiling_set(pending_set.get()); | 357 active_client.set_twin_tiling_set(pending_set.get()); |
351 | 358 |
352 // Set a priority rect so we get tiles. | 359 // Set a priority rect so we get tiles. |
353 pending_set->UpdateTilePriorities(gfx::Rect(layer_bounds), 1.f, 1.0, | 360 pending_set->UpdateTilePriorities(gfx::Rect(layer_bounds), 1.f, 1.0, |
354 Occlusion(), false); | 361 Occlusion(), false); |
355 EXPECT_EQ(tile_size1, pending_set->tiling_at(0)->tile_size()); | 362 EXPECT_EQ(tile_size1, pending_set->tiling_at(0)->tile_size()); |
356 | 363 |
357 // The tiles should get the correct size. | 364 // The tiles should get the correct size. |
358 std::vector<Tile*> pending_tiles = | 365 std::vector<Tile*> pending_tiles = |
359 pending_set->tiling_at(0)->AllTilesForTesting(); | 366 pending_set->tiling_at(0)->AllTilesForTesting(); |
360 EXPECT_GT(pending_tiles.size(), 0u); | 367 EXPECT_GT(pending_tiles.size(), 0u); |
361 for (auto* tile : pending_tiles) | 368 for (auto* tile : pending_tiles) |
362 EXPECT_EQ(tile_size1, tile->content_rect().size()); | 369 EXPECT_EQ(tile_size1, tile->content_rect().size()); |
363 | 370 |
364 // Update to a new source frame with a new tile size. | 371 // Update to a new source frame with a new tile size. |
365 // Note that setting a new raster source can typically only happen after | 372 // Note that setting a new raster source can typically only happen after |
366 // activation, since we can't set the raster source twice on the pending tree | 373 // activation, since we can't set the raster source twice on the pending tree |
367 // without activating. For test, just remove and add a new tiling instead. | 374 // without activating. For test, just remove and add a new tiling instead. |
368 pending_set->RemoveAllTilings(); | 375 pending_set->RemoveAllTilings(); |
369 pending_set->AddTiling(1.f, raster_source); | 376 pending_set->AddTiling(gfx::AxisTransform2d(), raster_source); |
370 pending_set->tiling_at(0)->set_resolution(HIGH_RESOLUTION); | 377 pending_set->tiling_at(0)->set_resolution(HIGH_RESOLUTION); |
371 pending_client.SetTileSize(tile_size2); | 378 pending_client.SetTileSize(tile_size2); |
372 pending_set->UpdateTilingsToCurrentRasterSourceForCommit(raster_source.get(), | 379 pending_set->UpdateTilingsToCurrentRasterSourceForCommit(raster_source.get(), |
373 Region(), 1.f, 1.f); | 380 Region(), 1.f, 1.f); |
374 // The tiling should get the correct tile size. | 381 // The tiling should get the correct tile size. |
375 EXPECT_EQ(tile_size2, pending_set->tiling_at(0)->tile_size()); | 382 EXPECT_EQ(tile_size2, pending_set->tiling_at(0)->tile_size()); |
376 | 383 |
377 // Set a priority rect so we get tiles. | 384 // Set a priority rect so we get tiles. |
378 pending_set->UpdateTilePriorities(gfx::Rect(layer_bounds), 1.f, 2.0, | 385 pending_set->UpdateTilePriorities(gfx::Rect(layer_bounds), 1.f, 2.0, |
379 Occlusion(), false); | 386 Occlusion(), false); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
439 1000, 1000.f); | 446 1000, 1000.f); |
440 std::unique_ptr<PictureLayerTilingSet> active_set = | 447 std::unique_ptr<PictureLayerTilingSet> active_set = |
441 PictureLayerTilingSet::Create(ACTIVE_TREE, &active_client, 1000, 1.f, | 448 PictureLayerTilingSet::Create(ACTIVE_TREE, &active_client, 1000, 1.f, |
442 1000, 1000.f); | 449 1000, 1000.f); |
443 | 450 |
444 gfx::Size layer_bounds(100, 105); | 451 gfx::Size layer_bounds(100, 105); |
445 scoped_refptr<FakeRasterSource> raster_source = | 452 scoped_refptr<FakeRasterSource> raster_source = |
446 FakeRasterSource::CreateEmpty(layer_bounds); | 453 FakeRasterSource::CreateEmpty(layer_bounds); |
447 | 454 |
448 // Tilings can be added of any scale, the tiling client can controls this. | 455 // Tilings can be added of any scale, the tiling client can controls this. |
449 pending_set->AddTiling(1.f, raster_source); | 456 pending_set->AddTiling(gfx::AxisTransform2d(), raster_source); |
450 pending_set->AddTiling(2.f, raster_source); | 457 pending_set->AddTiling(gfx::AxisTransform2d(2.f, gfx::Vector2dF()), |
451 pending_set->AddTiling(3.f, raster_source); | 458 raster_source); |
| 459 pending_set->AddTiling(gfx::AxisTransform2d(3.f, gfx::Vector2dF()), |
| 460 raster_source); |
452 | 461 |
453 // Set some expected things for the tiling set to function. | 462 // Set some expected things for the tiling set to function. |
454 pending_set->tiling_at(0)->set_resolution(HIGH_RESOLUTION); | 463 pending_set->tiling_at(0)->set_resolution(HIGH_RESOLUTION); |
455 active_client.set_twin_tiling_set(pending_set.get()); | 464 active_client.set_twin_tiling_set(pending_set.get()); |
456 | 465 |
457 // Update to a new source frame with a max content scale that is larger than | 466 // Update to a new source frame with a max content scale that is larger than |
458 // everything. | 467 // everything. |
459 float max_content_scale = 3.f; | 468 float max_content_scale = 3.f; |
460 pending_set->UpdateTilingsToCurrentRasterSourceForCommit( | 469 pending_set->UpdateTilingsToCurrentRasterSourceForCommit( |
461 raster_source.get(), Region(), 1.f, max_content_scale); | 470 raster_source.get(), Region(), 1.f, max_content_scale); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
496 LayerTreeSettings settings; | 505 LayerTreeSettings settings; |
497 settings.skewport_extrapolation_limit_in_screen_pixels = 75; | 506 settings.skewport_extrapolation_limit_in_screen_pixels = 75; |
498 settings.tiling_interest_area_padding = 1000000; | 507 settings.tiling_interest_area_padding = 1000000; |
499 | 508 |
500 scoped_refptr<FakeRasterSource> raster_source = | 509 scoped_refptr<FakeRasterSource> raster_source = |
501 FakeRasterSource::CreateFilled(layer_bounds); | 510 FakeRasterSource::CreateFilled(layer_bounds); |
502 std::unique_ptr<TestablePictureLayerTilingSet> tiling_set = | 511 std::unique_ptr<TestablePictureLayerTilingSet> tiling_set = |
503 CreateTilingSetWithSettings(&client, settings); | 512 CreateTilingSetWithSettings(&client, settings); |
504 | 513 |
505 EXPECT_FALSE(tiling_set->TilingsNeedUpdate(viewport, 1.0)); | 514 EXPECT_FALSE(tiling_set->TilingsNeedUpdate(viewport, 1.0)); |
506 tiling_set->AddTiling(1.f, raster_source); | 515 tiling_set->AddTiling(gfx::AxisTransform2d(), raster_source); |
507 EXPECT_TRUE(tiling_set->TilingsNeedUpdate(viewport, 1.0)); | 516 EXPECT_TRUE(tiling_set->TilingsNeedUpdate(viewport, 1.0)); |
508 | 517 |
509 tiling_set->UpdateTilePriorities(viewport, 1.f, 1.0, Occlusion(), true); | 518 tiling_set->UpdateTilePriorities(viewport, 1.f, 1.0, Occlusion(), true); |
510 | 519 |
511 // Move viewport down 50 pixels in 0.5 seconds. | 520 // Move viewport down 50 pixels in 0.5 seconds. |
512 gfx::Rect down_skewport = | 521 gfx::Rect down_skewport = |
513 tiling_set->ComputeSkewport(gfx::Rect(0, 50, 100, 100), 1.5, 1.f); | 522 tiling_set->ComputeSkewport(gfx::Rect(0, 50, 100, 100), 1.5, 1.f); |
514 | 523 |
515 EXPECT_EQ(0, down_skewport.x()); | 524 EXPECT_EQ(0, down_skewport.x()); |
516 EXPECT_EQ(50, down_skewport.y()); | 525 EXPECT_EQ(50, down_skewport.y()); |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
582 FakePictureLayerTilingClient client; | 591 FakePictureLayerTilingClient client; |
583 | 592 |
584 gfx::Size layer_bounds(200, 200); | 593 gfx::Size layer_bounds(200, 200); |
585 client.SetTileSize(gfx::Size(100, 100)); | 594 client.SetTileSize(gfx::Size(100, 100)); |
586 LayerTreeSettings settings; | 595 LayerTreeSettings settings; |
587 settings.tiling_interest_area_padding = 1000000000; | 596 settings.tiling_interest_area_padding = 1000000000; |
588 scoped_refptr<FakeRasterSource> raster_source = | 597 scoped_refptr<FakeRasterSource> raster_source = |
589 FakeRasterSource::CreateFilled(layer_bounds); | 598 FakeRasterSource::CreateFilled(layer_bounds); |
590 std::unique_ptr<TestablePictureLayerTilingSet> tiling_set = | 599 std::unique_ptr<TestablePictureLayerTilingSet> tiling_set = |
591 CreateTilingSetWithSettings(&client, settings); | 600 CreateTilingSetWithSettings(&client, settings); |
592 tiling_set->AddTiling(1.f, raster_source); | 601 tiling_set->AddTiling(gfx::AxisTransform2d(), raster_source); |
593 | 602 |
594 gfx::Rect viewport1(-1918, 255860, 4010, 2356); | 603 gfx::Rect viewport1(-1918, 255860, 4010, 2356); |
595 gfx::Rect viewport2(-7088, -91738, 14212, 8350); | 604 gfx::Rect viewport2(-7088, -91738, 14212, 8350); |
596 gfx::Rect viewport3(-12730024, -158883296, 24607540, 14454512); | 605 gfx::Rect viewport3(-12730024, -158883296, 24607540, 14454512); |
597 double time = 1.0; | 606 double time = 1.0; |
598 tiling_set->UpdateTilePriorities(viewport1, 1.f, time, Occlusion(), true); | 607 tiling_set->UpdateTilePriorities(viewport1, 1.f, time, Occlusion(), true); |
599 time += 0.016; | 608 time += 0.016; |
600 EXPECT_TRUE( | 609 EXPECT_TRUE( |
601 tiling_set->ComputeSkewport(viewport2, time, 1.f).Contains(viewport2)); | 610 tiling_set->ComputeSkewport(viewport2, time, 1.f).Contains(viewport2)); |
602 tiling_set->UpdateTilePriorities(viewport2, 1.f, time, Occlusion(), true); | 611 tiling_set->UpdateTilePriorities(viewport2, 1.f, time, Occlusion(), true); |
603 time += 0.016; | 612 time += 0.016; |
604 EXPECT_TRUE( | 613 EXPECT_TRUE( |
605 tiling_set->ComputeSkewport(viewport3, time, 1.f).Contains(viewport3)); | 614 tiling_set->ComputeSkewport(viewport3, time, 1.f).Contains(viewport3)); |
606 | 615 |
607 // Use a tiling with a large scale, so the viewport times the scale no longer | 616 // Use a tiling with a large scale, so the viewport times the scale no longer |
608 // fits into integers, and the viewport is not anywhere close to the tiling. | 617 // fits into integers, and the viewport is not anywhere close to the tiling. |
609 PictureLayerTiling* tiling = tiling_set->AddTiling(1000.f, raster_source); | 618 PictureLayerTiling* tiling = tiling_set->AddTiling( |
| 619 gfx::AxisTransform2d(1000.f, gfx::Vector2dF()), raster_source); |
610 EXPECT_TRUE(tiling_set->TilingsNeedUpdate(viewport3, time)); | 620 EXPECT_TRUE(tiling_set->TilingsNeedUpdate(viewport3, time)); |
611 tiling_set->UpdateTilePriorities(viewport3, 1.f, time, Occlusion(), true); | 621 tiling_set->UpdateTilePriorities(viewport3, 1.f, time, Occlusion(), true); |
612 EXPECT_TRUE(tiling->GetCurrentVisibleRectForTesting().IsEmpty()); | 622 EXPECT_TRUE(tiling->GetCurrentVisibleRectForTesting().IsEmpty()); |
613 } | 623 } |
614 | 624 |
615 TEST(PictureLayerTilingSetTest, ComputeSkewport) { | 625 TEST(PictureLayerTilingSetTest, ComputeSkewport) { |
616 FakePictureLayerTilingClient client; | 626 FakePictureLayerTilingClient client; |
617 | 627 |
618 gfx::Rect viewport(0, 0, 100, 100); | 628 gfx::Rect viewport(0, 0, 100, 100); |
619 gfx::Size layer_bounds(200, 200); | 629 gfx::Size layer_bounds(200, 200); |
620 | 630 |
621 client.SetTileSize(gfx::Size(100, 100)); | 631 client.SetTileSize(gfx::Size(100, 100)); |
622 | 632 |
623 scoped_refptr<FakeRasterSource> raster_source = | 633 scoped_refptr<FakeRasterSource> raster_source = |
624 FakeRasterSource::CreateFilled(layer_bounds); | 634 FakeRasterSource::CreateFilled(layer_bounds); |
625 std::unique_ptr<TestablePictureLayerTilingSet> tiling_set = | 635 std::unique_ptr<TestablePictureLayerTilingSet> tiling_set = |
626 CreateTilingSet(&client); | 636 CreateTilingSet(&client); |
627 tiling_set->AddTiling(1.f, raster_source); | 637 tiling_set->AddTiling(gfx::AxisTransform2d(), raster_source); |
628 | 638 |
629 tiling_set->UpdateTilePriorities(viewport, 1.f, 1.0, Occlusion(), true); | 639 tiling_set->UpdateTilePriorities(viewport, 1.f, 1.0, Occlusion(), true); |
630 | 640 |
631 // Move viewport down 50 pixels in 0.5 seconds. | 641 // Move viewport down 50 pixels in 0.5 seconds. |
632 gfx::Rect down_skewport = | 642 gfx::Rect down_skewport = |
633 tiling_set->ComputeSkewport(gfx::Rect(0, 50, 100, 100), 1.5, 1.f); | 643 tiling_set->ComputeSkewport(gfx::Rect(0, 50, 100, 100), 1.5, 1.f); |
634 | 644 |
635 EXPECT_EQ(0, down_skewport.x()); | 645 EXPECT_EQ(0, down_skewport.x()); |
636 EXPECT_EQ(50, down_skewport.y()); | 646 EXPECT_EQ(50, down_skewport.y()); |
637 EXPECT_EQ(100, down_skewport.width()); | 647 EXPECT_EQ(100, down_skewport.width()); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
679 | 689 |
680 gfx::Rect viewport(0, 0, 100, 100); | 690 gfx::Rect viewport(0, 0, 100, 100); |
681 gfx::Size layer_bounds(200, 200); | 691 gfx::Size layer_bounds(200, 200); |
682 | 692 |
683 client.SetTileSize(gfx::Size(100, 100)); | 693 client.SetTileSize(gfx::Size(100, 100)); |
684 | 694 |
685 scoped_refptr<FakeRasterSource> raster_source = | 695 scoped_refptr<FakeRasterSource> raster_source = |
686 FakeRasterSource::CreateFilled(layer_bounds); | 696 FakeRasterSource::CreateFilled(layer_bounds); |
687 std::unique_ptr<TestablePictureLayerTilingSet> tiling_set = | 697 std::unique_ptr<TestablePictureLayerTilingSet> tiling_set = |
688 CreateTilingSet(&client); | 698 CreateTilingSet(&client); |
689 tiling_set->AddTiling(1.f, raster_source); | 699 tiling_set->AddTiling(gfx::AxisTransform2d(), raster_source); |
690 | 700 |
691 tiling_set->UpdateTilePriorities(viewport, 1.f, 1.0, Occlusion(), true); | 701 tiling_set->UpdateTilePriorities(viewport, 1.f, 1.0, Occlusion(), true); |
692 | 702 |
693 // Move viewport down 50 pixels in 0.5 seconds. | 703 // Move viewport down 50 pixels in 0.5 seconds. |
694 gfx::Rect viewport_50 = gfx::Rect(0, 50, 100, 100); | 704 gfx::Rect viewport_50 = gfx::Rect(0, 50, 100, 100); |
695 gfx::Rect skewport_50 = tiling_set->ComputeSkewport(viewport_50, 1.5, 1.f); | 705 gfx::Rect skewport_50 = tiling_set->ComputeSkewport(viewport_50, 1.5, 1.f); |
696 | 706 |
697 EXPECT_EQ(gfx::Rect(0, 50, 100, 200), skewport_50); | 707 EXPECT_EQ(gfx::Rect(0, 50, 100, 200), skewport_50); |
698 tiling_set->UpdateTilePriorities(viewport_50, 1.f, 1.5, Occlusion(), true); | 708 tiling_set->UpdateTilePriorities(viewport_50, 1.f, 1.5, Occlusion(), true); |
699 | 709 |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
753 | 763 |
754 // Tiling at 0.25 scale: this should create 47x47 tiles of size 10x10. | 764 // Tiling at 0.25 scale: this should create 47x47 tiles of size 10x10. |
755 // The reason is that each tile has a one pixel border, so tile at (1, 2) | 765 // The reason is that each tile has a one pixel border, so tile at (1, 2) |
756 // for instance begins at (8, 16) pixels. So tile at (46, 46) will begin at | 766 // for instance begins at (8, 16) pixels. So tile at (46, 46) will begin at |
757 // (368, 368) and extend to the end of 1500 * 0.25 = 375 edge of the | 767 // (368, 368) and extend to the end of 1500 * 0.25 = 375 edge of the |
758 // tiling. | 768 // tiling. |
759 scoped_refptr<FakeRasterSource> raster_source = | 769 scoped_refptr<FakeRasterSource> raster_source = |
760 FakeRasterSource::CreateFilled(layer_bounds); | 770 FakeRasterSource::CreateFilled(layer_bounds); |
761 std::unique_ptr<TestablePictureLayerTilingSet> tiling_set = | 771 std::unique_ptr<TestablePictureLayerTilingSet> tiling_set = |
762 CreateTilingSet(&client); | 772 CreateTilingSet(&client); |
763 auto* tiling = tiling_set->AddTiling(0.25f, raster_source); | 773 auto* tiling = tiling_set->AddTiling( |
| 774 gfx::AxisTransform2d(0.25f, gfx::Vector2dF()), raster_source); |
764 tiling->set_resolution(HIGH_RESOLUTION); | 775 tiling->set_resolution(HIGH_RESOLUTION); |
765 gfx::Rect viewport_in_content_space = | 776 gfx::Rect viewport_in_content_space = |
766 gfx::ScaleToEnclosedRect(viewport, 0.25f); | 777 gfx::ScaleToEnclosedRect(viewport, 0.25f); |
767 | 778 |
768 tiling_set->UpdateTilePriorities(viewport, 1.f, 1.0, Occlusion(), true); | 779 tiling_set->UpdateTilePriorities(viewport, 1.f, 1.0, Occlusion(), true); |
769 auto prioritized_tiles = tiling->UpdateAndGetAllPrioritizedTilesForTesting(); | 780 auto prioritized_tiles = tiling->UpdateAndGetAllPrioritizedTilesForTesting(); |
770 | 781 |
771 // Compute the soon border. | 782 // Compute the soon border. |
772 gfx::Rect soon_border_rect_in_content_space = | 783 gfx::Rect soon_border_rect_in_content_space = |
773 tiling_set->ComputeSoonBorderRect(viewport, 1.f); | 784 tiling_set->ComputeSoonBorderRect(viewport, 1.f); |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
914 priority = prioritized_tiles[tiling->TileAt(5, 1)].priority(); | 925 priority = prioritized_tiles[tiling->TileAt(5, 1)].priority(); |
915 EXPECT_FLOAT_EQ(136.f, priority.distance_to_visible); | 926 EXPECT_FLOAT_EQ(136.f, priority.distance_to_visible); |
916 | 927 |
917 priority = prioritized_tiles[tiling->TileAt(2, 5)].priority(); | 928 priority = prioritized_tiles[tiling->TileAt(2, 5)].priority(); |
918 EXPECT_FLOAT_EQ(56.f, priority.distance_to_visible); | 929 EXPECT_FLOAT_EQ(56.f, priority.distance_to_visible); |
919 | 930 |
920 priority = prioritized_tiles[tiling->TileAt(3, 4)].priority(); | 931 priority = prioritized_tiles[tiling->TileAt(3, 4)].priority(); |
921 EXPECT_FLOAT_EQ(8.f, priority.distance_to_visible); | 932 EXPECT_FLOAT_EQ(8.f, priority.distance_to_visible); |
922 | 933 |
923 // Test additional scales. | 934 // Test additional scales. |
924 tiling = tiling_set->AddTiling(0.2f, raster_source); | 935 tiling = tiling_set->AddTiling(gfx::AxisTransform2d(0.2f, gfx::Vector2dF()), |
| 936 raster_source); |
925 tiling->set_resolution(HIGH_RESOLUTION); | 937 tiling->set_resolution(HIGH_RESOLUTION); |
926 tiling_set->UpdateTilePriorities(viewport, 1.0f, 4.0, Occlusion(), true); | 938 tiling_set->UpdateTilePriorities(viewport, 1.0f, 4.0, Occlusion(), true); |
927 prioritized_tiles = tiling->UpdateAndGetAllPrioritizedTilesForTesting(); | 939 prioritized_tiles = tiling->UpdateAndGetAllPrioritizedTilesForTesting(); |
928 | 940 |
929 priority = prioritized_tiles[tiling->TileAt(5, 1)].priority(); | 941 priority = prioritized_tiles[tiling->TileAt(5, 1)].priority(); |
930 EXPECT_FLOAT_EQ(110.f, priority.distance_to_visible); | 942 EXPECT_FLOAT_EQ(110.f, priority.distance_to_visible); |
931 | 943 |
932 priority = prioritized_tiles[tiling->TileAt(2, 5)].priority(); | 944 priority = prioritized_tiles[tiling->TileAt(2, 5)].priority(); |
933 EXPECT_FLOAT_EQ(70.f, priority.distance_to_visible); | 945 EXPECT_FLOAT_EQ(70.f, priority.distance_to_visible); |
934 | 946 |
(...skipping 14 matching lines...) Expand all Loading... |
949 } | 961 } |
950 | 962 |
951 TEST(PictureLayerTilingTest, InvalidateAfterComputeTilePriorityRects) { | 963 TEST(PictureLayerTilingTest, InvalidateAfterComputeTilePriorityRects) { |
952 FakePictureLayerTilingClient pending_client; | 964 FakePictureLayerTilingClient pending_client; |
953 pending_client.SetTileSize(gfx::Size(100, 100)); | 965 pending_client.SetTileSize(gfx::Size(100, 100)); |
954 | 966 |
955 scoped_refptr<FakeRasterSource> raster_source = | 967 scoped_refptr<FakeRasterSource> raster_source = |
956 FakeRasterSource::CreateFilled(gfx::Size(100, 100)); | 968 FakeRasterSource::CreateFilled(gfx::Size(100, 100)); |
957 std::unique_ptr<TestablePictureLayerTilingSet> tiling_set = | 969 std::unique_ptr<TestablePictureLayerTilingSet> tiling_set = |
958 CreateTilingSet(&pending_client); | 970 CreateTilingSet(&pending_client); |
959 auto* pending_tiling = tiling_set->AddTiling(1.f, raster_source); | 971 auto* pending_tiling = |
| 972 tiling_set->AddTiling(gfx::AxisTransform2d(), raster_source); |
960 pending_tiling->set_resolution(HIGH_RESOLUTION); | 973 pending_tiling->set_resolution(HIGH_RESOLUTION); |
961 | 974 |
962 // Ensure that we can compute tile priority rects, invalidate, and compute the | 975 // Ensure that we can compute tile priority rects, invalidate, and compute the |
963 // rects again. It is important that the second compute tile priority rects | 976 // rects again. It is important that the second compute tile priority rects |
964 // return true, indicating that things have changed (since invalidation has | 977 // return true, indicating that things have changed (since invalidation has |
965 // changed things). This causes PrepareTiles to be properly scheduled. If the | 978 // changed things). This causes PrepareTiles to be properly scheduled. If the |
966 // second ComputeTilePriorityRects returns false, then we assume that | 979 // second ComputeTilePriorityRects returns false, then we assume that |
967 // PrepareTiles isn't needed and we signal that we're ready to draw | 980 // PrepareTiles isn't needed and we signal that we're ready to draw |
968 // immediately, which can cause visual glitches. | 981 // immediately, which can cause visual glitches. |
969 // | 982 // |
(...skipping 22 matching lines...) Expand all Loading... |
992 PictureLayerTilingSet::Create(PENDING_TREE, &pending_client, 1000, 1.f, | 1005 PictureLayerTilingSet::Create(PENDING_TREE, &pending_client, 1000, 1.f, |
993 1000, 1000.f); | 1006 1000, 1000.f); |
994 std::unique_ptr<PictureLayerTilingSet> active_set = | 1007 std::unique_ptr<PictureLayerTilingSet> active_set = |
995 PictureLayerTilingSet::Create(ACTIVE_TREE, &active_client, 1000, 1.f, | 1008 PictureLayerTilingSet::Create(ACTIVE_TREE, &active_client, 1000, 1.f, |
996 1000, 1000.f); | 1009 1000, 1000.f); |
997 | 1010 |
998 gfx::Size layer_bounds(100, 100); | 1011 gfx::Size layer_bounds(100, 100); |
999 scoped_refptr<FakeRasterSource> raster_source = | 1012 scoped_refptr<FakeRasterSource> raster_source = |
1000 FakeRasterSource::CreateFilled(layer_bounds); | 1013 FakeRasterSource::CreateFilled(layer_bounds); |
1001 | 1014 |
1002 auto* pending_tiling = pending_set->AddTiling(1.f, raster_source); | 1015 auto* pending_tiling = |
| 1016 pending_set->AddTiling(gfx::AxisTransform2d(), raster_source); |
1003 pending_tiling->set_resolution(HIGH_RESOLUTION); | 1017 pending_tiling->set_resolution(HIGH_RESOLUTION); |
1004 active_client.set_twin_tiling_set(pending_set.get()); | 1018 active_client.set_twin_tiling_set(pending_set.get()); |
1005 | 1019 |
1006 double time = 1.; | 1020 double time = 1.; |
1007 gfx::Rect viewport(0, 0, 100, 100); | 1021 gfx::Rect viewport(0, 0, 100, 100); |
1008 | 1022 |
1009 // The first commit will update the raster source for pending tilings. | 1023 // The first commit will update the raster source for pending tilings. |
1010 pending_set->UpdateTilingsToCurrentRasterSourceForCommit(raster_source, | 1024 pending_set->UpdateTilingsToCurrentRasterSourceForCommit(raster_source, |
1011 Region(), 1.f, 1.f); | 1025 Region(), 1.f, 1.f); |
1012 // UpdateTilePriorities for pending set gets called during UDP in commit. | 1026 // UpdateTilePriorities for pending set gets called during UDP in commit. |
(...skipping 18 matching lines...) Expand all Loading... |
1031 pending_set->UpdateTilingsToCurrentRasterSourceForCommit(raster_source, | 1045 pending_set->UpdateTilingsToCurrentRasterSourceForCommit(raster_source, |
1032 Region(), 1.f, 1.f); | 1046 Region(), 1.f, 1.f); |
1033 // UpdateTilePriorities for pending set gets called during UDP in commit. | 1047 // UpdateTilePriorities for pending set gets called during UDP in commit. |
1034 EXPECT_TRUE(pending_set->UpdateTilePriorities(viewport, 1.f, time, | 1048 EXPECT_TRUE(pending_set->UpdateTilePriorities(viewport, 1.f, time, |
1035 Occlusion(), true)); | 1049 Occlusion(), true)); |
1036 // No changes for active set until activation. | 1050 // No changes for active set until activation. |
1037 EXPECT_FALSE( | 1051 EXPECT_FALSE( |
1038 active_set->UpdateTilePriorities(viewport, 1.f, time, Occlusion(), true)); | 1052 active_set->UpdateTilePriorities(viewport, 1.f, time, Occlusion(), true)); |
1039 } | 1053 } |
1040 | 1054 |
| 1055 TEST(PictureLayerTilingSetTest, TilingTranslationChanges) { |
| 1056 gfx::Size tile_size(64, 64); |
| 1057 FakePictureLayerTilingClient pending_client; |
| 1058 FakePictureLayerTilingClient active_client; |
| 1059 pending_client.SetTileSize(tile_size); |
| 1060 active_client.SetTileSize(tile_size); |
| 1061 std::unique_ptr<PictureLayerTilingSet> pending_set = |
| 1062 PictureLayerTilingSet::Create(PENDING_TREE, &pending_client, 0, 1.f, 0, |
| 1063 0.f); |
| 1064 std::unique_ptr<PictureLayerTilingSet> active_set = |
| 1065 PictureLayerTilingSet::Create(ACTIVE_TREE, &active_client, 0, 1.f, 0, |
| 1066 0.f); |
| 1067 active_client.set_twin_tiling_set(pending_set.get()); |
| 1068 |
| 1069 gfx::Size layer_bounds(100, 100); |
| 1070 scoped_refptr<FakeRasterSource> raster_source = |
| 1071 FakeRasterSource::CreateFilled(layer_bounds); |
| 1072 |
| 1073 gfx::AxisTransform2d raster_transform1(1.f, gfx::Vector2dF(0.25f, 0.25f)); |
| 1074 pending_set->AddTiling(raster_transform1, raster_source); |
| 1075 pending_set->tiling_at(0)->set_resolution(HIGH_RESOLUTION); |
| 1076 |
| 1077 // Set a priority rect so we get tiles. |
| 1078 pending_set->UpdateTilePriorities(gfx::Rect(layer_bounds), 1.f, 1.0, |
| 1079 Occlusion(), false); |
| 1080 |
| 1081 // Make sure all tiles are generated. |
| 1082 EXPECT_EQ(4u, pending_set->tiling_at(0)->AllTilesForTesting().size()); |
| 1083 |
| 1084 // Clone from the pending to the active tree. |
| 1085 active_set->UpdateTilingsToCurrentRasterSourceForActivation( |
| 1086 raster_source.get(), pending_set.get(), Region(), 1.f, 1.f); |
| 1087 |
| 1088 // Verifies active tree cloned the tiling correctly. |
| 1089 ASSERT_EQ(1u, active_set->num_tilings()); |
| 1090 EXPECT_EQ(active_set->tiling_at(0)->raster_transform(), raster_transform1); |
| 1091 EXPECT_EQ(4u, active_set->tiling_at(0)->AllTilesForTesting().size()); |
| 1092 |
| 1093 // Change raster translation on the pending set. |
| 1094 gfx::AxisTransform2d raster_transform2(1.f, gfx::Vector2dF(0.75f, 0.75f)); |
| 1095 pending_set->RemoveAllTilings(); |
| 1096 pending_set->AddTiling(raster_transform2, raster_source); |
| 1097 pending_set->tiling_at(0)->set_resolution(HIGH_RESOLUTION); |
| 1098 |
| 1099 // Set a different priority rect to get one tile. |
| 1100 pending_set->UpdateTilePriorities(gfx::Rect(1, 1), 1.f, 1.0, Occlusion(), |
| 1101 false); |
| 1102 EXPECT_EQ(1u, pending_set->tiling_at(0)->AllTilesForTesting().size()); |
| 1103 |
| 1104 // Commit the pending to the active tree again. |
| 1105 active_set->UpdateTilingsToCurrentRasterSourceForActivation( |
| 1106 raster_source.get(), pending_set.get(), Region(), 1.f, 1.f); |
| 1107 |
| 1108 // Verifies the old tiling with a different translation is dropped. |
| 1109 ASSERT_EQ(1u, active_set->num_tilings()); |
| 1110 EXPECT_EQ(active_set->tiling_at(0)->raster_transform(), raster_transform2); |
| 1111 EXPECT_EQ(1u, active_set->tiling_at(0)->AllTilesForTesting().size()); |
| 1112 } |
| 1113 |
1041 } // namespace | 1114 } // namespace |
1042 } // namespace cc | 1115 } // namespace cc |
OLD | NEW |