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/trees/quad_culler.h" | 5 #include "cc/trees/quad_culler.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "cc/base/math_util.h" | 9 #include "cc/base/math_util.h" |
10 #include "cc/debug/overdraw_metrics.h" | 10 #include "cc/debug/overdraw_metrics.h" |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 rect_in_target.Union(MathUtil::MapClippedRect( | 100 rect_in_target.Union(MathUtil::MapClippedRect( |
101 parent->draw_transform(), parent->visible_content_rect())); | 101 parent->draw_transform(), parent->visible_content_rect())); |
102 parent->render_surface()->SetContentRect(rect_in_target); | 102 parent->render_surface()->SetContentRect(rect_in_target); |
103 } | 103 } |
104 layer->draw_properties().drawable_content_rect = rect_in_target; | 104 layer->draw_properties().drawable_content_rect = rect_in_target; |
105 | 105 |
106 return layer.Pass(); | 106 return layer.Pass(); |
107 } | 107 } |
108 | 108 |
109 void AppendQuads(QuadList* quad_list, | 109 void AppendQuads(QuadList* quad_list, |
110 SharedQuadStateList& shared_state_list, | 110 SharedQuadStateList* shared_state_list, |
111 TiledLayerImpl* layer, | 111 TiledLayerImpl* layer, |
112 LayerIteratorType& it, | 112 LayerIteratorType* it, |
113 OcclusionTrackerImpl& occlusion_tracker) { | 113 OcclusionTrackerImpl* occlusion_tracker) { |
114 occlusion_tracker.EnterLayer(it); | 114 occlusion_tracker->EnterLayer(*it); |
115 QuadCuller quad_culler( | 115 QuadCuller quad_culler( |
116 quad_list, &shared_state_list, layer, occlusion_tracker, false, false); | 116 quad_list, shared_state_list, layer, *occlusion_tracker, false, false); |
117 AppendQuadsData data; | 117 AppendQuadsData data; |
118 layer->AppendQuads(&quad_culler, &data); | 118 layer->AppendQuads(&quad_culler, &data); |
119 occlusion_tracker.LeaveLayer(it); | 119 occlusion_tracker->LeaveLayer(*it); |
120 ++it; | 120 ++it; |
121 } | 121 } |
122 | 122 |
123 protected: | 123 protected: |
124 FakeImplProxy proxy_; | 124 FakeImplProxy proxy_; |
125 FakeLayerTreeHostImpl host_impl_; | 125 FakeLayerTreeHostImpl host_impl_; |
126 int layer_id_; | 126 int layer_id_; |
127 | 127 |
128 DISALLOW_COPY_AND_ASSIGN(QuadCullerTest); | 128 DISALLOW_COPY_AND_ASSIGN(QuadCullerTest); |
129 }; | 129 }; |
(...skipping 22 matching lines...) Expand all Loading... |
152 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | 152 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), |
153 gfx::Transform(), | 153 gfx::Transform(), |
154 child_rect, | 154 child_rect, |
155 1, | 155 1, |
156 false, | 156 false, |
157 gfx::Rect(), | 157 gfx::Rect(), |
158 render_surface_layer_list); | 158 render_surface_layer_list); |
159 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); | 159 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); |
160 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 160 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
161 | 161 |
162 AppendQuads( | 162 AppendQuads(&quad_list, |
163 &quad_list, shared_state_list, child_layer.get(), it, occlusion_tracker); | 163 &shared_state_list, |
164 AppendQuads( | 164 child_layer.get(), |
165 &quad_list, shared_state_list, root_layer.get(), it, occlusion_tracker); | 165 &it, |
| 166 &occlusion_tracker); |
| 167 AppendQuads(&quad_list, |
| 168 &shared_state_list, |
| 169 root_layer.get(), |
| 170 &it, |
| 171 &occlusion_tracker); |
166 EXPECT_EQ(quad_list.size(), 13u); | 172 EXPECT_EQ(quad_list.size(), 13u); |
167 EXPECT_NEAR( | 173 EXPECT_NEAR( |
168 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 90000, 1); | 174 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 90000, 1); |
169 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), | 175 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), |
170 40000, | 176 40000, |
171 1); | 177 1); |
172 EXPECT_NEAR( | 178 EXPECT_NEAR( |
173 occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), 0, 1); | 179 occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), 0, 1); |
174 } | 180 } |
175 | 181 |
(...skipping 11 matching lines...) Expand all Loading... |
187 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | 193 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), |
188 gfx::Transform(), | 194 gfx::Transform(), |
189 child_rect, | 195 child_rect, |
190 1, | 196 1, |
191 true, | 197 true, |
192 gfx::Rect(), | 198 gfx::Rect(), |
193 render_surface_layer_list); | 199 render_surface_layer_list); |
194 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); | 200 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); |
195 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 201 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
196 | 202 |
197 AppendQuads( | 203 AppendQuads(&quad_list, |
198 &quad_list, shared_state_list, child_layer.get(), it, occlusion_tracker); | 204 &shared_state_list, |
199 AppendQuads( | 205 child_layer.get(), |
200 &quad_list, shared_state_list, root_layer.get(), it, occlusion_tracker); | 206 &it, |
| 207 &occlusion_tracker); |
| 208 AppendQuads(&quad_list, |
| 209 &shared_state_list, |
| 210 root_layer.get(), |
| 211 &it, |
| 212 &occlusion_tracker); |
201 EXPECT_EQ(quad_list.size(), 9u); | 213 EXPECT_EQ(quad_list.size(), 9u); |
202 EXPECT_NEAR( | 214 EXPECT_NEAR( |
203 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 90000, 1); | 215 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 90000, 1); |
204 EXPECT_NEAR( | 216 EXPECT_NEAR( |
205 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); | 217 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); |
206 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), | 218 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), |
207 40000, | 219 40000, |
208 1); | 220 1); |
209 } | 221 } |
210 | 222 |
(...skipping 11 matching lines...) Expand all Loading... |
222 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | 234 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), |
223 child_transform, | 235 child_transform, |
224 child_rect, | 236 child_rect, |
225 0.9f, | 237 0.9f, |
226 true, | 238 true, |
227 gfx::Rect(), | 239 gfx::Rect(), |
228 render_surface_layer_list); | 240 render_surface_layer_list); |
229 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); | 241 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); |
230 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 242 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
231 | 243 |
232 AppendQuads( | 244 AppendQuads(&quad_list, |
233 &quad_list, shared_state_list, child_layer.get(), it, occlusion_tracker); | 245 &shared_state_list, |
234 AppendQuads( | 246 child_layer.get(), |
235 &quad_list, shared_state_list, root_layer.get(), it, occlusion_tracker); | 247 &it, |
| 248 &occlusion_tracker); |
| 249 AppendQuads(&quad_list, |
| 250 &shared_state_list, |
| 251 root_layer.get(), |
| 252 &it, |
| 253 &occlusion_tracker); |
236 EXPECT_EQ(quad_list.size(), 13u); | 254 EXPECT_EQ(quad_list.size(), 13u); |
237 EXPECT_NEAR( | 255 EXPECT_NEAR( |
238 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 90000, 1); | 256 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 90000, 1); |
239 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), | 257 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), |
240 40000, | 258 40000, |
241 1); | 259 1); |
242 EXPECT_NEAR( | 260 EXPECT_NEAR( |
243 occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), 0, 1); | 261 occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), 0, 1); |
244 } | 262 } |
245 | 263 |
(...skipping 11 matching lines...) Expand all Loading... |
257 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | 275 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), |
258 child_transform, | 276 child_transform, |
259 child_rect, | 277 child_rect, |
260 1, | 278 1, |
261 false, | 279 false, |
262 gfx::Rect(), | 280 gfx::Rect(), |
263 render_surface_layer_list); | 281 render_surface_layer_list); |
264 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); | 282 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); |
265 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 283 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
266 | 284 |
267 AppendQuads( | 285 AppendQuads(&quad_list, |
268 &quad_list, shared_state_list, child_layer.get(), it, occlusion_tracker); | 286 &shared_state_list, |
269 AppendQuads( | 287 child_layer.get(), |
270 &quad_list, shared_state_list, root_layer.get(), it, occlusion_tracker); | 288 &it, |
| 289 &occlusion_tracker); |
| 290 AppendQuads(&quad_list, |
| 291 &shared_state_list, |
| 292 root_layer.get(), |
| 293 &it, |
| 294 &occlusion_tracker); |
271 EXPECT_EQ(quad_list.size(), 13u); | 295 EXPECT_EQ(quad_list.size(), 13u); |
272 EXPECT_NEAR( | 296 EXPECT_NEAR( |
273 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 90000, 1); | 297 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 90000, 1); |
274 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), | 298 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), |
275 40000, | 299 40000, |
276 1); | 300 1); |
277 EXPECT_NEAR( | 301 EXPECT_NEAR( |
278 occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), 0, 1); | 302 occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), 0, 1); |
279 } | 303 } |
280 | 304 |
(...skipping 11 matching lines...) Expand all Loading... |
292 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | 316 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), |
293 child_transform, | 317 child_transform, |
294 child_rect, | 318 child_rect, |
295 1, | 319 1, |
296 true, | 320 true, |
297 gfx::Rect(), | 321 gfx::Rect(), |
298 render_surface_layer_list); | 322 render_surface_layer_list); |
299 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); | 323 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); |
300 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 324 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
301 | 325 |
302 AppendQuads( | 326 AppendQuads(&quad_list, |
303 &quad_list, shared_state_list, child_layer.get(), it, occlusion_tracker); | 327 &shared_state_list, |
304 AppendQuads( | 328 child_layer.get(), |
305 &quad_list, shared_state_list, root_layer.get(), it, occlusion_tracker); | 329 &it, |
| 330 &occlusion_tracker); |
| 331 AppendQuads(&quad_list, |
| 332 &shared_state_list, |
| 333 root_layer.get(), |
| 334 &it, |
| 335 &occlusion_tracker); |
306 ASSERT_EQ(quad_list.size(), 12u); | 336 ASSERT_EQ(quad_list.size(), 12u); |
307 | 337 |
308 gfx::Rect quad_visible_rect1 = quad_list[5]->visible_rect; | 338 gfx::Rect quad_visible_rect1 = quad_list[5]->visible_rect; |
309 EXPECT_EQ(quad_visible_rect1.height(), 50); | 339 EXPECT_EQ(quad_visible_rect1.height(), 50); |
310 | 340 |
311 gfx::Rect quad_visible_rect3 = quad_list[7]->visible_rect; | 341 gfx::Rect quad_visible_rect3 = quad_list[7]->visible_rect; |
312 EXPECT_EQ(quad_visible_rect3.width(), 50); | 342 EXPECT_EQ(quad_visible_rect3.width(), 50); |
313 | 343 |
314 // Next index is 8, not 9, since centre quad culled. | 344 // Next index is 8, not 9, since centre quad culled. |
315 gfx::Rect quad_visible_rect4 = quad_list[8]->visible_rect; | 345 gfx::Rect quad_visible_rect4 = quad_list[8]->visible_rect; |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
352 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | 382 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), |
353 child_transform, | 383 child_transform, |
354 child_rect, | 384 child_rect, |
355 1, | 385 1, |
356 true, | 386 true, |
357 gfx::Rect(), | 387 gfx::Rect(), |
358 render_surface_layer_list); | 388 render_surface_layer_list); |
359 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); | 389 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); |
360 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 390 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
361 | 391 |
362 AppendQuads( | 392 AppendQuads(&quad_list, |
363 &quad_list, shared_state_list, child_layer.get(), it, occlusion_tracker); | 393 &shared_state_list, |
364 AppendQuads( | 394 child_layer.get(), |
365 &quad_list, shared_state_list, root_layer.get(), it, occlusion_tracker); | 395 &it, |
| 396 &occlusion_tracker); |
| 397 AppendQuads(&quad_list, |
| 398 &shared_state_list, |
| 399 root_layer.get(), |
| 400 &it, |
| 401 &occlusion_tracker); |
366 EXPECT_EQ(quad_list.size(), 2u); | 402 EXPECT_EQ(quad_list.size(), 2u); |
367 | 403 |
368 EXPECT_NEAR( | 404 EXPECT_NEAR( |
369 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 20363, 1); | 405 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 20363, 1); |
370 EXPECT_NEAR( | 406 EXPECT_NEAR( |
371 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); | 407 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); |
372 EXPECT_NEAR( | 408 EXPECT_NEAR( |
373 occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), 0, 1); | 409 occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), 0, 1); |
374 } | 410 } |
375 | 411 |
(...skipping 21 matching lines...) Expand all Loading... |
397 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | 433 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), |
398 child_transform, | 434 child_transform, |
399 child_rect, | 435 child_rect, |
400 1, | 436 1, |
401 true, | 437 true, |
402 gfx::Rect(), | 438 gfx::Rect(), |
403 render_surface_layer_list); | 439 render_surface_layer_list); |
404 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); | 440 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); |
405 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 441 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
406 | 442 |
407 AppendQuads( | 443 AppendQuads(&quad_list, |
408 &quad_list, shared_state_list, child_layer.get(), it, occlusion_tracker); | 444 &shared_state_list, |
409 AppendQuads( | 445 child_layer.get(), |
410 &quad_list, shared_state_list, root_layer.get(), it, occlusion_tracker); | 446 &it, |
| 447 &occlusion_tracker); |
| 448 AppendQuads(&quad_list, |
| 449 &shared_state_list, |
| 450 root_layer.get(), |
| 451 &it, |
| 452 &occlusion_tracker); |
411 EXPECT_EQ(quad_list.size(), 2u); | 453 EXPECT_EQ(quad_list.size(), 2u); |
412 | 454 |
413 EXPECT_NEAR( | 455 EXPECT_NEAR( |
414 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 19643, 1); | 456 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 19643, 1); |
415 EXPECT_NEAR( | 457 EXPECT_NEAR( |
416 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); | 458 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); |
417 EXPECT_NEAR( | 459 EXPECT_NEAR( |
418 occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), 0, 1); | 460 occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), 0, 1); |
419 } | 461 } |
420 | 462 |
(...skipping 11 matching lines...) Expand all Loading... |
432 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | 474 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), |
433 child_transform, | 475 child_transform, |
434 child_rect, | 476 child_rect, |
435 1, | 477 1, |
436 true, | 478 true, |
437 gfx::Rect(), | 479 gfx::Rect(), |
438 render_surface_layer_list); | 480 render_surface_layer_list); |
439 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); | 481 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); |
440 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 482 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
441 | 483 |
442 AppendQuads( | 484 AppendQuads(&quad_list, |
443 &quad_list, shared_state_list, child_layer.get(), it, occlusion_tracker); | 485 &shared_state_list, |
444 AppendQuads( | 486 child_layer.get(), |
445 &quad_list, shared_state_list, root_layer.get(), it, occlusion_tracker); | 487 &it, |
| 488 &occlusion_tracker); |
| 489 AppendQuads(&quad_list, |
| 490 &shared_state_list, |
| 491 root_layer.get(), |
| 492 &it, |
| 493 &occlusion_tracker); |
446 EXPECT_EQ(quad_list.size(), 9u); | 494 EXPECT_EQ(quad_list.size(), 9u); |
447 EXPECT_NEAR( | 495 EXPECT_NEAR( |
448 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 90000, 1); | 496 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 90000, 1); |
449 EXPECT_NEAR( | 497 EXPECT_NEAR( |
450 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); | 498 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); |
451 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), | 499 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), |
452 40000, | 500 40000, |
453 1); | 501 1); |
454 } | 502 } |
455 | 503 |
(...skipping 15 matching lines...) Expand all Loading... |
471 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | 519 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), |
472 child_transform, | 520 child_transform, |
473 child_rect, | 521 child_rect, |
474 1, | 522 1, |
475 false, | 523 false, |
476 child_opaque_rect, | 524 child_opaque_rect, |
477 render_surface_layer_list); | 525 render_surface_layer_list); |
478 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); | 526 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); |
479 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 527 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
480 | 528 |
481 AppendQuads( | 529 AppendQuads(&quad_list, |
482 &quad_list, shared_state_list, child_layer.get(), it, occlusion_tracker); | 530 &shared_state_list, |
483 AppendQuads( | 531 child_layer.get(), |
484 &quad_list, shared_state_list, root_layer.get(), it, occlusion_tracker); | 532 &it, |
| 533 &occlusion_tracker); |
| 534 AppendQuads(&quad_list, |
| 535 &shared_state_list, |
| 536 root_layer.get(), |
| 537 &it, |
| 538 &occlusion_tracker); |
485 EXPECT_EQ(quad_list.size(), 12u); | 539 EXPECT_EQ(quad_list.size(), 12u); |
486 EXPECT_NEAR( | 540 EXPECT_NEAR( |
487 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 90000, 1); | 541 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 90000, 1); |
488 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), | 542 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), |
489 30000, | 543 30000, |
490 1); | 544 1); |
491 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), | 545 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), |
492 10000, | 546 10000, |
493 1); | 547 1); |
494 } | 548 } |
(...skipping 16 matching lines...) Expand all Loading... |
511 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | 565 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), |
512 child_transform, | 566 child_transform, |
513 child_rect, | 567 child_rect, |
514 1, | 568 1, |
515 false, | 569 false, |
516 child_opaque_rect, | 570 child_opaque_rect, |
517 render_surface_layer_list); | 571 render_surface_layer_list); |
518 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); | 572 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); |
519 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 573 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
520 | 574 |
521 AppendQuads( | 575 AppendQuads(&quad_list, |
522 &quad_list, shared_state_list, child_layer.get(), it, occlusion_tracker); | 576 &shared_state_list, |
523 AppendQuads( | 577 child_layer.get(), |
524 &quad_list, shared_state_list, root_layer.get(), it, occlusion_tracker); | 578 &it, |
| 579 &occlusion_tracker); |
| 580 AppendQuads(&quad_list, |
| 581 &shared_state_list, |
| 582 root_layer.get(), |
| 583 &it, |
| 584 &occlusion_tracker); |
525 EXPECT_EQ(quad_list.size(), 12u); | 585 EXPECT_EQ(quad_list.size(), 12u); |
526 EXPECT_NEAR( | 586 EXPECT_NEAR( |
527 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 90000, 1); | 587 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 90000, 1); |
528 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), | 588 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), |
529 25000, | 589 25000, |
530 1); | 590 1); |
531 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), | 591 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), |
532 15000, | 592 15000, |
533 1); | 593 1); |
534 } | 594 } |
(...skipping 16 matching lines...) Expand all Loading... |
551 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | 611 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), |
552 child_transform, | 612 child_transform, |
553 child_rect, | 613 child_rect, |
554 1, | 614 1, |
555 false, | 615 false, |
556 child_opaque_rect, | 616 child_opaque_rect, |
557 render_surface_layer_list); | 617 render_surface_layer_list); |
558 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); | 618 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); |
559 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 619 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
560 | 620 |
561 AppendQuads( | 621 AppendQuads(&quad_list, |
562 &quad_list, shared_state_list, child_layer.get(), it, occlusion_tracker); | 622 &shared_state_list, |
563 AppendQuads( | 623 child_layer.get(), |
564 &quad_list, shared_state_list, root_layer.get(), it, occlusion_tracker); | 624 &it, |
| 625 &occlusion_tracker); |
| 626 AppendQuads(&quad_list, |
| 627 &shared_state_list, |
| 628 root_layer.get(), |
| 629 &it, |
| 630 &occlusion_tracker); |
565 EXPECT_EQ(quad_list.size(), 13u); | 631 EXPECT_EQ(quad_list.size(), 13u); |
566 EXPECT_NEAR( | 632 EXPECT_NEAR( |
567 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 90000, 1); | 633 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 90000, 1); |
568 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), | 634 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), |
569 30000, | 635 30000, |
570 1); | 636 1); |
571 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), | 637 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), |
572 10000, | 638 10000, |
573 1); | 639 1); |
574 } | 640 } |
(...skipping 14 matching lines...) Expand all Loading... |
589 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | 655 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), |
590 child_transform, | 656 child_transform, |
591 child_rect, | 657 child_rect, |
592 1, | 658 1, |
593 true, | 659 true, |
594 gfx::Rect(), | 660 gfx::Rect(), |
595 render_surface_layer_list); | 661 render_surface_layer_list); |
596 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); | 662 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); |
597 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 663 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
598 | 664 |
599 AppendQuads( | 665 AppendQuads(&quad_list, |
600 &quad_list, shared_state_list, child_layer.get(), it, occlusion_tracker); | 666 &shared_state_list, |
601 AppendQuads( | 667 child_layer.get(), |
602 &quad_list, shared_state_list, root_layer.get(), it, occlusion_tracker); | 668 &it, |
| 669 &occlusion_tracker); |
| 670 AppendQuads(&quad_list, |
| 671 &shared_state_list, |
| 672 root_layer.get(), |
| 673 &it, |
| 674 &occlusion_tracker); |
603 EXPECT_EQ(quad_list.size(), 13u); | 675 EXPECT_EQ(quad_list.size(), 13u); |
604 EXPECT_NEAR( | 676 EXPECT_NEAR( |
605 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 130000, 1); | 677 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 130000, 1); |
606 EXPECT_NEAR( | 678 EXPECT_NEAR( |
607 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); | 679 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); |
608 EXPECT_NEAR( | 680 EXPECT_NEAR( |
609 occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), 0, 1); | 681 occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), 0, 1); |
610 } | 682 } |
611 | 683 |
612 // This test requires some explanation: here we are rotating the quads to be | 684 // This test requires some explanation: here we are rotating the quads to be |
(...skipping 19 matching lines...) Expand all Loading... |
632 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | 704 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), |
633 gfx::Transform(), | 705 gfx::Transform(), |
634 child_rect, | 706 child_rect, |
635 1, | 707 1, |
636 true, | 708 true, |
637 gfx::Rect(), | 709 gfx::Rect(), |
638 render_surface_layer_list); | 710 render_surface_layer_list); |
639 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); | 711 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(-100, -100, 1000, 1000)); |
640 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 712 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
641 | 713 |
642 AppendQuads( | 714 AppendQuads(&quad_list, |
643 &quad_list, shared_state_list, child_layer.get(), it, occlusion_tracker); | 715 &shared_state_list, |
644 AppendQuads( | 716 child_layer.get(), |
645 &quad_list, shared_state_list, root_layer.get(), it, occlusion_tracker); | 717 &it, |
| 718 &occlusion_tracker); |
| 719 AppendQuads(&quad_list, |
| 720 &shared_state_list, |
| 721 root_layer.get(), |
| 722 &it, |
| 723 &occlusion_tracker); |
646 EXPECT_EQ(quad_list.size(), 12u); | 724 EXPECT_EQ(quad_list.size(), 12u); |
647 EXPECT_NEAR( | 725 EXPECT_NEAR( |
648 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 100600, 1); | 726 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 100600, 1); |
649 EXPECT_NEAR( | 727 EXPECT_NEAR( |
650 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); | 728 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); |
651 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), | 729 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), |
652 29400, | 730 29400, |
653 1); | 731 1); |
654 } | 732 } |
655 | 733 |
(...skipping 10 matching lines...) Expand all Loading... |
666 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | 744 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), |
667 gfx::Transform(), | 745 gfx::Transform(), |
668 child_rect, | 746 child_rect, |
669 1, | 747 1, |
670 true, | 748 true, |
671 gfx::Rect(), | 749 gfx::Rect(), |
672 render_surface_layer_list); | 750 render_surface_layer_list); |
673 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(200, 100, 100, 100)); | 751 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(200, 100, 100, 100)); |
674 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 752 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
675 | 753 |
676 AppendQuads( | 754 AppendQuads(&quad_list, |
677 &quad_list, shared_state_list, child_layer.get(), it, occlusion_tracker); | 755 &shared_state_list, |
678 AppendQuads( | 756 child_layer.get(), |
679 &quad_list, shared_state_list, root_layer.get(), it, occlusion_tracker); | 757 &it, |
| 758 &occlusion_tracker); |
| 759 AppendQuads(&quad_list, |
| 760 &shared_state_list, |
| 761 root_layer.get(), |
| 762 &it, |
| 763 &occlusion_tracker); |
680 EXPECT_EQ(quad_list.size(), 1u); | 764 EXPECT_EQ(quad_list.size(), 1u); |
681 EXPECT_NEAR( | 765 EXPECT_NEAR( |
682 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 10000, 1); | 766 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 10000, 1); |
683 EXPECT_NEAR( | 767 EXPECT_NEAR( |
684 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); | 768 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); |
685 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), | 769 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), |
686 120000, | 770 120000, |
687 1); | 771 1); |
688 } | 772 } |
689 | 773 |
(...skipping 10 matching lines...) Expand all Loading... |
700 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | 784 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), |
701 gfx::Transform(), | 785 gfx::Transform(), |
702 child_rect, | 786 child_rect, |
703 1, | 787 1, |
704 true, | 788 true, |
705 gfx::Rect(), | 789 gfx::Rect(), |
706 render_surface_layer_list); | 790 render_surface_layer_list); |
707 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(100, 100, 100, 100)); | 791 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(100, 100, 100, 100)); |
708 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 792 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
709 | 793 |
710 AppendQuads( | 794 AppendQuads(&quad_list, |
711 &quad_list, shared_state_list, child_layer.get(), it, occlusion_tracker); | 795 &shared_state_list, |
712 AppendQuads( | 796 child_layer.get(), |
713 &quad_list, shared_state_list, root_layer.get(), it, occlusion_tracker); | 797 &it, |
| 798 &occlusion_tracker); |
| 799 AppendQuads(&quad_list, |
| 800 &shared_state_list, |
| 801 root_layer.get(), |
| 802 &it, |
| 803 &occlusion_tracker); |
714 EXPECT_EQ(quad_list.size(), 1u); | 804 EXPECT_EQ(quad_list.size(), 1u); |
715 EXPECT_NEAR( | 805 EXPECT_NEAR( |
716 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 10000, 1); | 806 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 10000, 1); |
717 EXPECT_NEAR( | 807 EXPECT_NEAR( |
718 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); | 808 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); |
719 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), | 809 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), |
720 120000, | 810 120000, |
721 1); | 811 1); |
722 } | 812 } |
723 | 813 |
(...skipping 10 matching lines...) Expand all Loading... |
734 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | 824 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), |
735 gfx::Transform(), | 825 gfx::Transform(), |
736 child_rect, | 826 child_rect, |
737 1, | 827 1, |
738 true, | 828 true, |
739 gfx::Rect(), | 829 gfx::Rect(), |
740 render_surface_layer_list); | 830 render_surface_layer_list); |
741 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(50, 50, 200, 200)); | 831 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(50, 50, 200, 200)); |
742 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 832 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
743 | 833 |
744 AppendQuads( | 834 AppendQuads(&quad_list, |
745 &quad_list, shared_state_list, child_layer.get(), it, occlusion_tracker); | 835 &shared_state_list, |
746 AppendQuads( | 836 child_layer.get(), |
747 &quad_list, shared_state_list, root_layer.get(), it, occlusion_tracker); | 837 &it, |
| 838 &occlusion_tracker); |
| 839 AppendQuads(&quad_list, |
| 840 &shared_state_list, |
| 841 root_layer.get(), |
| 842 &it, |
| 843 &occlusion_tracker); |
748 EXPECT_EQ(quad_list.size(), 9u); | 844 EXPECT_EQ(quad_list.size(), 9u); |
749 EXPECT_NEAR( | 845 EXPECT_NEAR( |
750 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 40000, 1); | 846 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 40000, 1); |
751 EXPECT_NEAR( | 847 EXPECT_NEAR( |
752 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); | 848 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); |
753 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), | 849 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), |
754 90000, | 850 90000, |
755 1); | 851 1); |
756 } | 852 } |
757 | 853 |
(...skipping 10 matching lines...) Expand all Loading... |
768 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | 864 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), |
769 gfx::Transform(), | 865 gfx::Transform(), |
770 child_rect, | 866 child_rect, |
771 1, | 867 1, |
772 true, | 868 true, |
773 gfx::Rect(), | 869 gfx::Rect(), |
774 render_surface_layer_list); | 870 render_surface_layer_list); |
775 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(500, 500, 100, 100)); | 871 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(500, 500, 100, 100)); |
776 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 872 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
777 | 873 |
778 AppendQuads( | 874 AppendQuads(&quad_list, |
779 &quad_list, shared_state_list, child_layer.get(), it, occlusion_tracker); | 875 &shared_state_list, |
780 AppendQuads( | 876 child_layer.get(), |
781 &quad_list, shared_state_list, root_layer.get(), it, occlusion_tracker); | 877 &it, |
| 878 &occlusion_tracker); |
| 879 AppendQuads(&quad_list, |
| 880 &shared_state_list, |
| 881 root_layer.get(), |
| 882 &it, |
| 883 &occlusion_tracker); |
782 EXPECT_EQ(quad_list.size(), 0u); | 884 EXPECT_EQ(quad_list.size(), 0u); |
783 EXPECT_NEAR( | 885 EXPECT_NEAR( |
784 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 0, 1); | 886 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 0, 1); |
785 EXPECT_NEAR( | 887 EXPECT_NEAR( |
786 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); | 888 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); |
787 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), | 889 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), |
788 130000, | 890 130000, |
789 1); | 891 1); |
790 } | 892 } |
791 | 893 |
(...skipping 11 matching lines...) Expand all Loading... |
803 gfx::Transform(), | 905 gfx::Transform(), |
804 child_rect, | 906 child_rect, |
805 1, | 907 1, |
806 true, | 908 true, |
807 gfx::Rect(), | 909 gfx::Rect(), |
808 render_surface_layer_list); | 910 render_surface_layer_list); |
809 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(50, 50, 200, 200), | 911 TestOcclusionTrackerImpl occlusion_tracker(gfx::Rect(50, 50, 200, 200), |
810 false); | 912 false); |
811 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 913 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
812 | 914 |
813 AppendQuads( | 915 AppendQuads(&quad_list, |
814 &quad_list, shared_state_list, child_layer.get(), it, occlusion_tracker); | 916 &shared_state_list, |
815 AppendQuads( | 917 child_layer.get(), |
816 &quad_list, shared_state_list, root_layer.get(), it, occlusion_tracker); | 918 &it, |
| 919 &occlusion_tracker); |
| 920 AppendQuads(&quad_list, |
| 921 &shared_state_list, |
| 922 root_layer.get(), |
| 923 &it, |
| 924 &occlusion_tracker); |
817 EXPECT_EQ(quad_list.size(), 9u); | 925 EXPECT_EQ(quad_list.size(), 9u); |
818 EXPECT_NEAR( | 926 EXPECT_NEAR( |
819 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 0, 1); | 927 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 0, 1); |
820 EXPECT_NEAR( | 928 EXPECT_NEAR( |
821 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); | 929 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); |
822 EXPECT_NEAR( | 930 EXPECT_NEAR( |
823 occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), 0, 1); | 931 occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), 0, 1); |
824 } | 932 } |
825 | 933 |
826 } // namespace | 934 } // namespace |
827 } // namespace cc | 935 } // namespace cc |
OLD | NEW |