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/quads/draw_quad.h" | 5 #include "cc/quads/draw_quad.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
11 #include "cc/base/math_util.h" | 11 #include "cc/base/math_util.h" |
12 #include "cc/output/filter_operations.h" | 12 #include "cc/output/filter_operations.h" |
13 #include "cc/quads/checkerboard_draw_quad.h" | 13 #include "cc/quads/checkerboard_draw_quad.h" |
14 #include "cc/quads/debug_border_draw_quad.h" | 14 #include "cc/quads/debug_border_draw_quad.h" |
15 #include "cc/quads/io_surface_draw_quad.h" | 15 #include "cc/quads/io_surface_draw_quad.h" |
| 16 #include "cc/quads/largest_draw_quad.h" |
16 #include "cc/quads/picture_draw_quad.h" | 17 #include "cc/quads/picture_draw_quad.h" |
17 #include "cc/quads/render_pass.h" | 18 #include "cc/quads/render_pass.h" |
18 #include "cc/quads/render_pass_draw_quad.h" | 19 #include "cc/quads/render_pass_draw_quad.h" |
19 #include "cc/quads/solid_color_draw_quad.h" | 20 #include "cc/quads/solid_color_draw_quad.h" |
20 #include "cc/quads/stream_video_draw_quad.h" | 21 #include "cc/quads/stream_video_draw_quad.h" |
21 #include "cc/quads/surface_draw_quad.h" | 22 #include "cc/quads/surface_draw_quad.h" |
22 #include "cc/quads/texture_draw_quad.h" | 23 #include "cc/quads/texture_draw_quad.h" |
23 #include "cc/quads/tile_draw_quad.h" | 24 #include "cc/quads/tile_draw_quad.h" |
24 #include "cc/quads/yuv_video_draw_quad.h" | 25 #include "cc/quads/yuv_video_draw_quad.h" |
25 #include "cc/resources/picture_pile_impl.h" | 26 #include "cc/resources/picture_pile_impl.h" |
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
219 quad_visible_rect, \ | 220 quad_visible_rect, \ |
220 needs_blending, \ | 221 needs_blending, \ |
221 a, \ | 222 a, \ |
222 b, \ | 223 b, \ |
223 c, \ | 224 c, \ |
224 d, \ | 225 d, \ |
225 e); \ | 226 e); \ |
226 } \ | 227 } \ |
227 SETUP_AND_COPY_QUAD_ALL(Type, quad_all); | 228 SETUP_AND_COPY_QUAD_ALL(Type, quad_all); |
228 | 229 |
229 #define CREATE_QUAD_5_NEW_RP(Type, a, b, c, d, e, copy_a) \ | |
230 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \ | |
231 { QUAD_DATA quad_new->SetNew(shared_state, quad_rect, a, b, c, d, e); } \ | |
232 SETUP_AND_COPY_QUAD_NEW_RP(Type, quad_new, copy_a); | |
233 | |
234 #define CREATE_QUAD_5_ALL_RP(Type, a, b, c, d, e, copy_a) \ | |
235 Type* quad_all = render_pass->CreateAndAppendDrawQuad<Type>(); \ | |
236 { \ | |
237 QUAD_DATA quad_all->SetAll(shared_state, \ | |
238 quad_rect, \ | |
239 quad_opaque_rect, \ | |
240 quad_visible_rect, \ | |
241 needs_blending, \ | |
242 a, \ | |
243 b, \ | |
244 c, \ | |
245 d, \ | |
246 e); \ | |
247 } \ | |
248 SETUP_AND_COPY_QUAD_ALL_RP(Type, quad_all, copy_a); | |
249 | |
250 #define CREATE_QUAD_6_NEW(Type, a, b, c, d, e, f) \ | 230 #define CREATE_QUAD_6_NEW(Type, a, b, c, d, e, f) \ |
251 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \ | 231 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \ |
252 { QUAD_DATA quad_new->SetNew(shared_state, quad_rect, a, b, c, d, e, f); } \ | 232 { QUAD_DATA quad_new->SetNew(shared_state, quad_rect, a, b, c, d, e, f); } \ |
253 SETUP_AND_COPY_QUAD_NEW(Type, quad_new); | 233 SETUP_AND_COPY_QUAD_NEW(Type, quad_new); |
254 | 234 |
255 #define CREATE_QUAD_6_ALL(Type, a, b, c, d, e, f) \ | 235 #define CREATE_QUAD_6_ALL(Type, a, b, c, d, e, f) \ |
256 Type* quad_all = render_pass->CreateAndAppendDrawQuad<Type>(); \ | 236 Type* quad_all = render_pass->CreateAndAppendDrawQuad<Type>(); \ |
257 { \ | 237 { \ |
258 QUAD_DATA quad_all->SetAll(shared_state, \ | 238 QUAD_DATA quad_all->SetAll(shared_state, \ |
259 quad_rect, \ | 239 quad_rect, \ |
(...skipping 27 matching lines...) Expand all Loading... |
287 a, \ | 267 a, \ |
288 b, \ | 268 b, \ |
289 c, \ | 269 c, \ |
290 d, \ | 270 d, \ |
291 e, \ | 271 e, \ |
292 f, \ | 272 f, \ |
293 g); \ | 273 g); \ |
294 } \ | 274 } \ |
295 SETUP_AND_COPY_QUAD_ALL(Type, quad_all); | 275 SETUP_AND_COPY_QUAD_ALL(Type, quad_all); |
296 | 276 |
297 #define CREATE_QUAD_7_NEW_RP(Type, a, b, c, d, e, f, g, copy_a) \ | |
298 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \ | |
299 { \ | |
300 QUAD_DATA quad_new->SetNew(shared_state, quad_rect, a, b, c, d, e, f, g); \ | |
301 } \ | |
302 SETUP_AND_COPY_QUAD_NEW_RP(Type, quad_new, copy_a); | |
303 | |
304 #define CREATE_QUAD_7_ALL_RP(Type, a, b, c, d, e, f, g, copy_a) \ | |
305 Type* quad_all = render_pass->CreateAndAppendDrawQuad<Type>(); \ | |
306 { \ | |
307 QUAD_DATA quad_all->SetAll(shared_state, \ | |
308 quad_rect, \ | |
309 quad_opaque_rect, \ | |
310 quad_visible_rect, \ | |
311 needs_blending, \ | |
312 a, \ | |
313 b, \ | |
314 c, \ | |
315 d, \ | |
316 e, \ | |
317 f, \ | |
318 g); \ | |
319 } \ | |
320 SETUP_AND_COPY_QUAD_ALL_RP(Type, quad_all, copy_a); | |
321 | |
322 #define CREATE_QUAD_8_NEW(Type, a, b, c, d, e, f, g, h) \ | 277 #define CREATE_QUAD_8_NEW(Type, a, b, c, d, e, f, g, h) \ |
323 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \ | 278 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \ |
324 { \ | 279 { \ |
325 QUAD_DATA quad_new->SetNew( \ | 280 QUAD_DATA quad_new->SetNew( \ |
326 shared_state, quad_rect, a, b, c, d, e, f, g, h); \ | 281 shared_state, quad_rect, a, b, c, d, e, f, g, h); \ |
327 } \ | 282 } \ |
328 SETUP_AND_COPY_QUAD_NEW(Type, quad_new); | 283 SETUP_AND_COPY_QUAD_NEW(Type, quad_new); |
329 | 284 |
330 #define CREATE_QUAD_8_ALL(Type, a, b, c, d, e, f, g, h) \ | 285 #define CREATE_QUAD_8_ALL(Type, a, b, c, d, e, f, g, h) \ |
331 Type* quad_all = render_pass->CreateAndAppendDrawQuad<Type>(); \ | 286 Type* quad_all = render_pass->CreateAndAppendDrawQuad<Type>(); \ |
332 { \ | 287 { \ |
333 QUAD_DATA quad_all->SetAll(shared_state, \ | 288 QUAD_DATA quad_all->SetAll(shared_state, \ |
334 quad_rect, \ | 289 quad_rect, \ |
335 quad_opaque_rect, \ | 290 quad_opaque_rect, \ |
336 quad_visible_rect, \ | 291 quad_visible_rect, \ |
337 needs_blending, \ | 292 needs_blending, \ |
338 a, \ | 293 a, \ |
339 b, \ | 294 b, \ |
340 c, \ | 295 c, \ |
341 d, \ | 296 d, \ |
342 e, \ | 297 e, \ |
343 f, \ | 298 f, \ |
344 g, \ | 299 g, \ |
345 h); \ | 300 h); \ |
346 } \ | 301 } \ |
347 SETUP_AND_COPY_QUAD_ALL(Type, quad_all); | 302 SETUP_AND_COPY_QUAD_ALL(Type, quad_all); |
348 | 303 |
349 #define CREATE_QUAD_8_ALL_RP(Type, a, b, c, d, e, f, g, h, copy_a) \ | |
350 Type* quad_all = render_pass->CreateAndAppendDrawQuad<Type>(); \ | |
351 { \ | |
352 QUAD_DATA quad_all->SetAll(shared_state, \ | |
353 quad_rect, \ | |
354 quad_opaque_rect, \ | |
355 quad_visible_rect, \ | |
356 needs_blending, \ | |
357 a, \ | |
358 b, \ | |
359 c, \ | |
360 d, \ | |
361 e, \ | |
362 f, \ | |
363 g, \ | |
364 h); \ | |
365 } \ | |
366 SETUP_AND_COPY_QUAD_ALL_RP(Type, quad_all, copy_a); | |
367 | |
368 #define CREATE_QUAD_9_NEW(Type, a, b, c, d, e, f, g, h, i) \ | 304 #define CREATE_QUAD_9_NEW(Type, a, b, c, d, e, f, g, h, i) \ |
369 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \ | 305 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \ |
370 { \ | 306 { \ |
371 QUAD_DATA quad_new->SetNew( \ | 307 QUAD_DATA quad_new->SetNew( \ |
372 shared_state, quad_rect, a, b, c, d, e, f, g, h, i); \ | 308 shared_state, quad_rect, a, b, c, d, e, f, g, h, i); \ |
373 } \ | 309 } \ |
374 SETUP_AND_COPY_QUAD_NEW(Type, quad_new); | 310 SETUP_AND_COPY_QUAD_NEW(Type, quad_new); |
375 | 311 |
376 #define CREATE_QUAD_9_NEW_RP(Type, a, b, c, d, e, f, g, h, i, copy_a) \ | |
377 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \ | |
378 { \ | |
379 QUAD_DATA quad_new->SetNew( \ | |
380 shared_state, quad_rect, a, b, c, d, e, f, g, h, i); \ | |
381 } \ | |
382 SETUP_AND_COPY_QUAD_NEW_RP(Type, quad_new, copy_a); | |
383 | |
384 #define CREATE_QUAD_9_ALL(Type, a, b, c, d, e, f, g, h, i) \ | 312 #define CREATE_QUAD_9_ALL(Type, a, b, c, d, e, f, g, h, i) \ |
385 { \ | 313 { \ |
386 QUAD_DATA quad_all->SetAll(shared_state, \ | 314 QUAD_DATA quad_all->SetAll(shared_state, \ |
387 quad_rect, \ | 315 quad_rect, \ |
388 quad_opaque_rect, \ | 316 quad_opaque_rect, \ |
389 quad_visible_rect, \ | 317 quad_visible_rect, \ |
390 needs_blending, \ | 318 needs_blending, \ |
391 a, \ | 319 a, \ |
392 b, \ | 320 b, \ |
393 c, \ | 321 c, \ |
394 d, \ | 322 d, \ |
395 e, \ | 323 e, \ |
396 f, \ | 324 f, \ |
397 g, \ | 325 g, \ |
398 h, \ | 326 h, \ |
399 i); \ | 327 i); \ |
400 } \ | 328 } \ |
401 SETUP_AND_COPY_QUAD_ALL(Type, quad_all); | 329 SETUP_AND_COPY_QUAD_ALL(Type, quad_all); |
402 | 330 |
| 331 #define CREATE_QUAD_ALL_RP(Type, a, b, c, d, e, f, copy_a) \ |
| 332 Type* quad_all = render_pass->CreateAndAppendDrawQuad<Type>(); \ |
| 333 { \ |
| 334 QUAD_DATA quad_all->SetAll(shared_state, \ |
| 335 quad_rect, \ |
| 336 quad_opaque_rect, \ |
| 337 quad_visible_rect, \ |
| 338 needs_blending, \ |
| 339 a, \ |
| 340 b, \ |
| 341 c, \ |
| 342 d, \ |
| 343 e, \ |
| 344 f); \ |
| 345 } \ |
| 346 SETUP_AND_COPY_QUAD_ALL_RP(Type, quad_all, copy_a); |
| 347 |
| 348 #define CREATE_QUAD_NEW_RP(Type, a, b, c, d, e, f, g, copy_a) \ |
| 349 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \ |
| 350 { \ |
| 351 QUAD_DATA quad_new->SetNew(shared_state, quad_rect, a, b, c, d, e, f, g); \ |
| 352 } \ |
| 353 SETUP_AND_COPY_QUAD_NEW_RP(Type, quad_new, copy_a); |
| 354 |
403 TEST(DrawQuadTest, CopyCheckerboardDrawQuad) { | 355 TEST(DrawQuadTest, CopyCheckerboardDrawQuad) { |
404 gfx::Rect visible_rect(40, 50, 30, 20); | 356 gfx::Rect visible_rect(40, 50, 30, 20); |
405 SkColor color = 0xfabb0011; | 357 SkColor color = 0xfabb0011; |
406 CREATE_SHARED_STATE(); | 358 CREATE_SHARED_STATE(); |
407 | 359 |
408 CREATE_QUAD_2_NEW(CheckerboardDrawQuad, visible_rect, color); | 360 CREATE_QUAD_2_NEW(CheckerboardDrawQuad, visible_rect, color); |
409 EXPECT_EQ(DrawQuad::CHECKERBOARD, copy_quad->material); | 361 EXPECT_EQ(DrawQuad::CHECKERBOARD, copy_quad->material); |
410 EXPECT_RECT_EQ(visible_rect, copy_quad->visible_rect); | 362 EXPECT_RECT_EQ(visible_rect, copy_quad->visible_rect); |
411 EXPECT_EQ(color, copy_quad->color); | 363 EXPECT_EQ(color, copy_quad->color); |
412 | 364 |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
457 CREATE_QUAD_3_ALL(IOSurfaceDrawQuad, size, resource_id, orientation); | 409 CREATE_QUAD_3_ALL(IOSurfaceDrawQuad, size, resource_id, orientation); |
458 EXPECT_EQ(DrawQuad::IO_SURFACE_CONTENT, copy_quad->material); | 410 EXPECT_EQ(DrawQuad::IO_SURFACE_CONTENT, copy_quad->material); |
459 EXPECT_EQ(size, copy_quad->io_surface_size); | 411 EXPECT_EQ(size, copy_quad->io_surface_size); |
460 EXPECT_EQ(resource_id, copy_quad->io_surface_resource_id); | 412 EXPECT_EQ(resource_id, copy_quad->io_surface_resource_id); |
461 EXPECT_EQ(orientation, copy_quad->orientation); | 413 EXPECT_EQ(orientation, copy_quad->orientation); |
462 } | 414 } |
463 | 415 |
464 TEST(DrawQuadTest, CopyRenderPassDrawQuad) { | 416 TEST(DrawQuadTest, CopyRenderPassDrawQuad) { |
465 gfx::Rect visible_rect(40, 50, 30, 20); | 417 gfx::Rect visible_rect(40, 50, 30, 20); |
466 RenderPass::Id render_pass_id(22, 64); | 418 RenderPass::Id render_pass_id(22, 64); |
467 bool is_replica = true; | |
468 ResourceProvider::ResourceId mask_resource_id = 78; | 419 ResourceProvider::ResourceId mask_resource_id = 78; |
469 gfx::Rect contents_changed_since_last_frame(42, 11, 74, 24); | |
470 gfx::RectF mask_u_v_rect(-45.f, -21.f, 33.f, 19.f); | 420 gfx::RectF mask_u_v_rect(-45.f, -21.f, 33.f, 19.f); |
471 FilterOperations filters; | 421 FilterOperations filters; |
472 filters.Append(FilterOperation::CreateBlurFilter(1.f)); | 422 filters.Append(FilterOperation::CreateBlurFilter(1.f)); |
473 gfx::Vector2dF filters_scale; | 423 gfx::Vector2dF filters_scale; |
474 FilterOperations background_filters; | 424 FilterOperations background_filters; |
475 background_filters.Append( | 425 background_filters.Append( |
476 FilterOperation::CreateGrayscaleFilter(1.f)); | 426 FilterOperation::CreateGrayscaleFilter(1.f)); |
477 | 427 |
478 RenderPass::Id copied_render_pass_id(235, 11); | 428 RenderPass::Id copied_render_pass_id(235, 11); |
479 CREATE_SHARED_STATE(); | 429 CREATE_SHARED_STATE(); |
480 | 430 |
481 CREATE_QUAD_9_NEW_RP(RenderPassDrawQuad, | 431 CREATE_QUAD_NEW_RP(RenderPassDrawQuad, |
482 visible_rect, | 432 visible_rect, |
483 render_pass_id, | 433 render_pass_id, |
484 is_replica, | 434 mask_resource_id, |
485 mask_resource_id, | 435 mask_u_v_rect, |
486 contents_changed_since_last_frame, | 436 filters, |
487 mask_u_v_rect, | 437 filters_scale, |
488 filters, | 438 background_filters, |
489 filters_scale, | 439 copied_render_pass_id); |
490 background_filters, | |
491 copied_render_pass_id); | |
492 EXPECT_EQ(DrawQuad::RENDER_PASS, copy_quad->material); | 440 EXPECT_EQ(DrawQuad::RENDER_PASS, copy_quad->material); |
493 EXPECT_RECT_EQ(visible_rect, copy_quad->visible_rect); | 441 EXPECT_RECT_EQ(visible_rect, copy_quad->visible_rect); |
494 EXPECT_EQ(copied_render_pass_id, copy_quad->render_pass_id); | 442 EXPECT_EQ(copied_render_pass_id, copy_quad->render_pass_id); |
495 EXPECT_EQ(is_replica, copy_quad->is_replica); | |
496 EXPECT_EQ(mask_resource_id, copy_quad->mask_resource_id); | 443 EXPECT_EQ(mask_resource_id, copy_quad->mask_resource_id); |
497 EXPECT_RECT_EQ(contents_changed_since_last_frame, | |
498 copy_quad->contents_changed_since_last_frame); | |
499 EXPECT_EQ(mask_u_v_rect.ToString(), copy_quad->mask_uv_rect.ToString()); | 444 EXPECT_EQ(mask_u_v_rect.ToString(), copy_quad->mask_uv_rect.ToString()); |
500 EXPECT_EQ(filters, copy_quad->filters); | 445 EXPECT_EQ(filters, copy_quad->filters); |
| 446 EXPECT_EQ(filters_scale, copy_quad->filters_scale); |
501 EXPECT_EQ(background_filters, copy_quad->background_filters); | 447 EXPECT_EQ(background_filters, copy_quad->background_filters); |
502 | 448 |
503 CREATE_QUAD_8_ALL_RP(RenderPassDrawQuad, | 449 CREATE_QUAD_ALL_RP(RenderPassDrawQuad, |
504 render_pass_id, | 450 render_pass_id, |
505 is_replica, | 451 mask_resource_id, |
506 mask_resource_id, | 452 mask_u_v_rect, |
507 contents_changed_since_last_frame, | 453 filters, |
508 mask_u_v_rect, | 454 filters_scale, |
509 filters, | 455 background_filters, |
510 filters_scale, | 456 copied_render_pass_id); |
511 background_filters, | |
512 copied_render_pass_id); | |
513 EXPECT_EQ(DrawQuad::RENDER_PASS, copy_quad->material); | 457 EXPECT_EQ(DrawQuad::RENDER_PASS, copy_quad->material); |
514 EXPECT_EQ(copied_render_pass_id, copy_quad->render_pass_id); | 458 EXPECT_EQ(copied_render_pass_id, copy_quad->render_pass_id); |
515 EXPECT_EQ(is_replica, copy_quad->is_replica); | |
516 EXPECT_EQ(mask_resource_id, copy_quad->mask_resource_id); | 459 EXPECT_EQ(mask_resource_id, copy_quad->mask_resource_id); |
517 EXPECT_RECT_EQ(contents_changed_since_last_frame, | |
518 copy_quad->contents_changed_since_last_frame); | |
519 EXPECT_EQ(mask_u_v_rect.ToString(), copy_quad->mask_uv_rect.ToString()); | 460 EXPECT_EQ(mask_u_v_rect.ToString(), copy_quad->mask_uv_rect.ToString()); |
520 EXPECT_EQ(filters, copy_quad->filters); | 461 EXPECT_EQ(filters, copy_quad->filters); |
| 462 EXPECT_EQ(filters_scale, copy_quad->filters_scale); |
521 EXPECT_EQ(background_filters, copy_quad->background_filters); | 463 EXPECT_EQ(background_filters, copy_quad->background_filters); |
522 } | 464 } |
523 | 465 |
524 TEST(DrawQuadTest, CopySolidColorDrawQuad) { | 466 TEST(DrawQuadTest, CopySolidColorDrawQuad) { |
525 gfx::Rect visible_rect(40, 50, 30, 20); | 467 gfx::Rect visible_rect(40, 50, 30, 20); |
526 SkColor color = 0x49494949; | 468 SkColor color = 0x49494949; |
527 bool force_anti_aliasing_off = false; | 469 bool force_anti_aliasing_off = false; |
528 CREATE_SHARED_STATE(); | 470 CREATE_SHARED_STATE(); |
529 | 471 |
530 CREATE_QUAD_3_NEW( | 472 CREATE_QUAD_3_NEW( |
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
806 resource_id, | 748 resource_id, |
807 orientation); | 749 orientation); |
808 EXPECT_EQ(resource_id, quad_new->io_surface_resource_id); | 750 EXPECT_EQ(resource_id, quad_new->io_surface_resource_id); |
809 EXPECT_EQ(1, IterateAndCount(quad_new)); | 751 EXPECT_EQ(1, IterateAndCount(quad_new)); |
810 EXPECT_EQ(resource_id + 1, quad_new->io_surface_resource_id); | 752 EXPECT_EQ(resource_id + 1, quad_new->io_surface_resource_id); |
811 } | 753 } |
812 | 754 |
813 TEST_F(DrawQuadIteratorTest, RenderPassDrawQuad) { | 755 TEST_F(DrawQuadIteratorTest, RenderPassDrawQuad) { |
814 gfx::Rect visible_rect(40, 50, 30, 20); | 756 gfx::Rect visible_rect(40, 50, 30, 20); |
815 RenderPass::Id render_pass_id(22, 64); | 757 RenderPass::Id render_pass_id(22, 64); |
816 bool is_replica = true; | |
817 ResourceProvider::ResourceId mask_resource_id = 78; | 758 ResourceProvider::ResourceId mask_resource_id = 78; |
818 gfx::Rect contents_changed_since_last_frame(42, 11, 74, 24); | |
819 gfx::RectF mask_u_v_rect(-45.f, -21.f, 33.f, 19.f); | 759 gfx::RectF mask_u_v_rect(-45.f, -21.f, 33.f, 19.f); |
820 FilterOperations filters; | 760 FilterOperations filters; |
821 filters.Append(FilterOperation::CreateBlurFilter(1.f)); | 761 filters.Append(FilterOperation::CreateBlurFilter(1.f)); |
| 762 gfx::Vector2dF filters_scale(2.f, 3.f); |
822 FilterOperations background_filters; | 763 FilterOperations background_filters; |
823 background_filters.Append( | 764 background_filters.Append( |
824 FilterOperation::CreateGrayscaleFilter(1.f)); | 765 FilterOperation::CreateGrayscaleFilter(1.f)); |
825 | 766 |
826 RenderPass::Id copied_render_pass_id(235, 11); | 767 RenderPass::Id copied_render_pass_id(235, 11); |
827 | 768 |
828 CREATE_SHARED_STATE(); | 769 CREATE_SHARED_STATE(); |
829 CREATE_QUAD_9_NEW_RP(RenderPassDrawQuad, | 770 CREATE_QUAD_NEW_RP(RenderPassDrawQuad, |
830 visible_rect, | 771 visible_rect, |
831 render_pass_id, | 772 render_pass_id, |
832 is_replica, | 773 mask_resource_id, |
833 mask_resource_id, | 774 mask_u_v_rect, |
834 contents_changed_since_last_frame, | 775 filters, |
835 mask_u_v_rect, | 776 filters_scale, |
836 filters, | 777 background_filters, |
837 gfx::Vector2dF(), | 778 copied_render_pass_id); |
838 background_filters, | |
839 copied_render_pass_id); | |
840 EXPECT_EQ(mask_resource_id, quad_new->mask_resource_id); | 779 EXPECT_EQ(mask_resource_id, quad_new->mask_resource_id); |
841 EXPECT_EQ(1, IterateAndCount(quad_new)); | 780 EXPECT_EQ(1, IterateAndCount(quad_new)); |
842 EXPECT_EQ(mask_resource_id + 1, quad_new->mask_resource_id); | 781 EXPECT_EQ(mask_resource_id + 1, quad_new->mask_resource_id); |
843 quad_new->mask_resource_id = 0; | 782 quad_new->mask_resource_id = 0; |
844 EXPECT_EQ(0, IterateAndCount(quad_new)); | 783 EXPECT_EQ(0, IterateAndCount(quad_new)); |
845 EXPECT_EQ(0u, quad_new->mask_resource_id); | 784 EXPECT_EQ(0u, quad_new->mask_resource_id); |
846 } | 785 } |
847 | 786 |
848 TEST_F(DrawQuadIteratorTest, SolidColorDrawQuad) { | 787 TEST_F(DrawQuadIteratorTest, SolidColorDrawQuad) { |
849 gfx::Rect visible_rect(40, 50, 30, 20); | 788 gfx::Rect visible_rect(40, 50, 30, 20); |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
976 visible_rect, | 915 visible_rect, |
977 tex_coord_rect, | 916 tex_coord_rect, |
978 texture_size, | 917 texture_size, |
979 texture_format, | 918 texture_format, |
980 content_rect, | 919 content_rect, |
981 contents_scale, | 920 contents_scale, |
982 picture_pile); | 921 picture_pile); |
983 EXPECT_EQ(0, IterateAndCount(quad_new)); | 922 EXPECT_EQ(0, IterateAndCount(quad_new)); |
984 } | 923 } |
985 | 924 |
| 925 TEST(DrawQuadTest, LargestQuadType) { |
| 926 size_t largest = 0; |
| 927 |
| 928 for (int i = 0; i <= DrawQuad::MATERIAL_LAST; ++i) { |
| 929 switch (static_cast<DrawQuad::Material>(i)) { |
| 930 case DrawQuad::CHECKERBOARD: |
| 931 largest = std::max(largest, sizeof(CheckerboardDrawQuad)); |
| 932 break; |
| 933 case DrawQuad::DEBUG_BORDER: |
| 934 largest = std::max(largest, sizeof(DebugBorderDrawQuad)); |
| 935 break; |
| 936 case DrawQuad::IO_SURFACE_CONTENT: |
| 937 largest = std::max(largest, sizeof(IOSurfaceDrawQuad)); |
| 938 break; |
| 939 case DrawQuad::PICTURE_CONTENT: |
| 940 largest = std::max(largest, sizeof(PictureDrawQuad)); |
| 941 break; |
| 942 case DrawQuad::TEXTURE_CONTENT: |
| 943 largest = std::max(largest, sizeof(TextureDrawQuad)); |
| 944 break; |
| 945 case DrawQuad::RENDER_PASS: |
| 946 largest = std::max(largest, sizeof(RenderPassDrawQuad)); |
| 947 break; |
| 948 case DrawQuad::SOLID_COLOR: |
| 949 largest = std::max(largest, sizeof(SolidColorDrawQuad)); |
| 950 break; |
| 951 case DrawQuad::SURFACE_CONTENT: |
| 952 largest = std::max(largest, sizeof(SurfaceDrawQuad)); |
| 953 break; |
| 954 case DrawQuad::TILED_CONTENT: |
| 955 largest = std::max(largest, sizeof(TileDrawQuad)); |
| 956 break; |
| 957 case DrawQuad::STREAM_VIDEO_CONTENT: |
| 958 largest = std::max(largest, sizeof(StreamVideoDrawQuad)); |
| 959 break; |
| 960 case DrawQuad::YUV_VIDEO_CONTENT: |
| 961 largest = std::max(largest, sizeof(YUVVideoDrawQuad)); |
| 962 break; |
| 963 case DrawQuad::INVALID: |
| 964 break; |
| 965 } |
| 966 } |
| 967 EXPECT_EQ(sizeof(kLargestDrawQuad), largest); |
| 968 |
| 969 if (!HasFailure()) |
| 970 return; |
| 971 |
| 972 // On failure, output the size of all quads for debugging. |
| 973 LOG(ERROR) << "largest " << largest; |
| 974 LOG(ERROR) << "kLargestDrawQuad " << sizeof(kLargestDrawQuad); |
| 975 for (int i = 0; i <= DrawQuad::MATERIAL_LAST; ++i) { |
| 976 switch (static_cast<DrawQuad::Material>(i)) { |
| 977 case DrawQuad::CHECKERBOARD: |
| 978 LOG(ERROR) << "CheckerboardDrawQuad " << sizeof(CheckerboardDrawQuad); |
| 979 break; |
| 980 case DrawQuad::DEBUG_BORDER: |
| 981 LOG(ERROR) << "DebugBorderDrawQuad " << sizeof(DebugBorderDrawQuad); |
| 982 break; |
| 983 case DrawQuad::IO_SURFACE_CONTENT: |
| 984 LOG(ERROR) << "IOSurfaceDrawQuad " << sizeof(IOSurfaceDrawQuad); |
| 985 break; |
| 986 case DrawQuad::PICTURE_CONTENT: |
| 987 LOG(ERROR) << "PictureDrawQuad " << sizeof(PictureDrawQuad); |
| 988 break; |
| 989 case DrawQuad::TEXTURE_CONTENT: |
| 990 LOG(ERROR) << "TextureDrawQuad " << sizeof(TextureDrawQuad); |
| 991 break; |
| 992 case DrawQuad::RENDER_PASS: |
| 993 LOG(ERROR) << "RenderPassDrawQuad " << sizeof(RenderPassDrawQuad); |
| 994 break; |
| 995 case DrawQuad::SOLID_COLOR: |
| 996 LOG(ERROR) << "SolidColorDrawQuad " << sizeof(SolidColorDrawQuad); |
| 997 break; |
| 998 case DrawQuad::SURFACE_CONTENT: |
| 999 LOG(ERROR) << "SurfaceDrawQuad " << sizeof(SurfaceDrawQuad); |
| 1000 break; |
| 1001 case DrawQuad::TILED_CONTENT: |
| 1002 LOG(ERROR) << "TileDrawQuad " << sizeof(TileDrawQuad); |
| 1003 break; |
| 1004 case DrawQuad::STREAM_VIDEO_CONTENT: |
| 1005 LOG(ERROR) << "StreamVideoDrawQuad " << sizeof(StreamVideoDrawQuad); |
| 1006 break; |
| 1007 case DrawQuad::YUV_VIDEO_CONTENT: |
| 1008 LOG(ERROR) << "YUVVideoDrawQuad " << sizeof(YUVVideoDrawQuad); |
| 1009 break; |
| 1010 case DrawQuad::INVALID: |
| 1011 break; |
| 1012 } |
| 1013 } |
| 1014 } |
| 1015 |
986 } // namespace | 1016 } // namespace |
987 } // namespace cc | 1017 } // namespace cc |
OLD | NEW |