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_NEW_RP(Type, a, b, c, d, e, f, g, h, copy_a) \ | |
350 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \ | |
351 { \ | |
352 QUAD_DATA quad_new->SetNew( \ | |
353 shared_state, quad_rect, a, b, c, d, e, f, g, h); \ | |
354 } \ | |
355 SETUP_AND_COPY_QUAD_NEW_RP(Type, quad_new, copy_a); | |
356 | |
357 #define CREATE_QUAD_8_ALL_RP(Type, a, b, c, d, e, f, g, h, copy_a) \ | |
358 Type* quad_all = render_pass->CreateAndAppendDrawQuad<Type>(); \ | |
359 { \ | |
360 QUAD_DATA quad_all->SetAll(shared_state, \ | |
361 quad_rect, \ | |
362 quad_opaque_rect, \ | |
363 quad_visible_rect, \ | |
364 needs_blending, \ | |
365 a, \ | |
366 b, \ | |
367 c, \ | |
368 d, \ | |
369 e, \ | |
370 f, \ | |
371 g, \ | |
372 h); \ | |
373 } \ | |
374 SETUP_AND_COPY_QUAD_ALL_RP(Type, quad_all, copy_a); | |
375 | |
376 #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) \ |
377 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \ | 305 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \ |
378 { \ | 306 { \ |
379 QUAD_DATA quad_new->SetNew( \ | 307 QUAD_DATA quad_new->SetNew( \ |
380 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); \ |
381 } \ | 309 } \ |
382 SETUP_AND_COPY_QUAD_NEW(Type, quad_new); | 310 SETUP_AND_COPY_QUAD_NEW(Type, quad_new); |
383 | 311 |
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, 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 } \ |
| 345 SETUP_AND_COPY_QUAD_ALL_RP(Type, quad_all, copy_a); |
| 346 |
| 347 #define CREATE_QUAD_NEW_RP(Type, a, b, c, d, e, f, copy_a) \ |
| 348 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \ |
| 349 { QUAD_DATA quad_new->SetNew(shared_state, quad_rect, a, b, c, d, e, f); } \ |
| 350 SETUP_AND_COPY_QUAD_NEW_RP(Type, quad_new, copy_a); |
| 351 |
403 TEST(DrawQuadTest, CopyCheckerboardDrawQuad) { | 352 TEST(DrawQuadTest, CopyCheckerboardDrawQuad) { |
404 gfx::Rect visible_rect(40, 50, 30, 20); | 353 gfx::Rect visible_rect(40, 50, 30, 20); |
405 SkColor color = 0xfabb0011; | 354 SkColor color = 0xfabb0011; |
406 CREATE_SHARED_STATE(); | 355 CREATE_SHARED_STATE(); |
407 | 356 |
408 CREATE_QUAD_2_NEW(CheckerboardDrawQuad, visible_rect, color); | 357 CREATE_QUAD_2_NEW(CheckerboardDrawQuad, visible_rect, color); |
409 EXPECT_EQ(DrawQuad::CHECKERBOARD, copy_quad->material); | 358 EXPECT_EQ(DrawQuad::CHECKERBOARD, copy_quad->material); |
410 EXPECT_RECT_EQ(visible_rect, copy_quad->visible_rect); | 359 EXPECT_RECT_EQ(visible_rect, copy_quad->visible_rect); |
411 EXPECT_EQ(color, copy_quad->color); | 360 EXPECT_EQ(color, copy_quad->color); |
412 | 361 |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
457 CREATE_QUAD_3_ALL(IOSurfaceDrawQuad, size, resource_id, orientation); | 406 CREATE_QUAD_3_ALL(IOSurfaceDrawQuad, size, resource_id, orientation); |
458 EXPECT_EQ(DrawQuad::IO_SURFACE_CONTENT, copy_quad->material); | 407 EXPECT_EQ(DrawQuad::IO_SURFACE_CONTENT, copy_quad->material); |
459 EXPECT_EQ(size, copy_quad->io_surface_size); | 408 EXPECT_EQ(size, copy_quad->io_surface_size); |
460 EXPECT_EQ(resource_id, copy_quad->io_surface_resource_id); | 409 EXPECT_EQ(resource_id, copy_quad->io_surface_resource_id); |
461 EXPECT_EQ(orientation, copy_quad->orientation); | 410 EXPECT_EQ(orientation, copy_quad->orientation); |
462 } | 411 } |
463 | 412 |
464 TEST(DrawQuadTest, CopyRenderPassDrawQuad) { | 413 TEST(DrawQuadTest, CopyRenderPassDrawQuad) { |
465 gfx::Rect visible_rect(40, 50, 30, 20); | 414 gfx::Rect visible_rect(40, 50, 30, 20); |
466 RenderPass::Id render_pass_id(22, 64); | 415 RenderPass::Id render_pass_id(22, 64); |
467 bool is_replica = true; | |
468 ResourceProvider::ResourceId mask_resource_id = 78; | 416 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); | 417 gfx::RectF mask_u_v_rect(-45.f, -21.f, 33.f, 19.f); |
471 FilterOperations filters; | 418 FilterOperations filters; |
472 filters.Append(FilterOperation::CreateBlurFilter(1.f)); | 419 filters.Append(FilterOperation::CreateBlurFilter(1.f)); |
473 FilterOperations background_filters; | 420 FilterOperations background_filters; |
474 background_filters.Append( | 421 background_filters.Append( |
475 FilterOperation::CreateGrayscaleFilter(1.f)); | 422 FilterOperation::CreateGrayscaleFilter(1.f)); |
476 | 423 |
477 RenderPass::Id copied_render_pass_id(235, 11); | 424 RenderPass::Id copied_render_pass_id(235, 11); |
478 CREATE_SHARED_STATE(); | 425 CREATE_SHARED_STATE(); |
479 | 426 |
480 CREATE_QUAD_8_NEW_RP(RenderPassDrawQuad, | 427 CREATE_QUAD_NEW_RP(RenderPassDrawQuad, |
481 visible_rect, | 428 visible_rect, |
482 render_pass_id, | 429 render_pass_id, |
483 is_replica, | 430 mask_resource_id, |
484 mask_resource_id, | 431 mask_u_v_rect, |
485 contents_changed_since_last_frame, | 432 filters, |
486 mask_u_v_rect, | 433 background_filters, |
487 filters, | 434 copied_render_pass_id); |
488 background_filters, | |
489 copied_render_pass_id); | |
490 EXPECT_EQ(DrawQuad::RENDER_PASS, copy_quad->material); | 435 EXPECT_EQ(DrawQuad::RENDER_PASS, copy_quad->material); |
491 EXPECT_RECT_EQ(visible_rect, copy_quad->visible_rect); | 436 EXPECT_RECT_EQ(visible_rect, copy_quad->visible_rect); |
492 EXPECT_EQ(copied_render_pass_id, copy_quad->render_pass_id); | 437 EXPECT_EQ(copied_render_pass_id, copy_quad->render_pass_id); |
493 EXPECT_EQ(is_replica, copy_quad->is_replica); | |
494 EXPECT_EQ(mask_resource_id, copy_quad->mask_resource_id); | 438 EXPECT_EQ(mask_resource_id, copy_quad->mask_resource_id); |
495 EXPECT_RECT_EQ(contents_changed_since_last_frame, | |
496 copy_quad->contents_changed_since_last_frame); | |
497 EXPECT_EQ(mask_u_v_rect.ToString(), copy_quad->mask_uv_rect.ToString()); | 439 EXPECT_EQ(mask_u_v_rect.ToString(), copy_quad->mask_uv_rect.ToString()); |
498 EXPECT_EQ(filters, copy_quad->filters); | 440 EXPECT_EQ(filters, copy_quad->filters); |
499 EXPECT_EQ(background_filters, copy_quad->background_filters); | 441 EXPECT_EQ(background_filters, copy_quad->background_filters); |
500 | 442 |
501 CREATE_QUAD_7_ALL_RP(RenderPassDrawQuad, | 443 CREATE_QUAD_ALL_RP(RenderPassDrawQuad, |
502 render_pass_id, | 444 render_pass_id, |
503 is_replica, | 445 mask_resource_id, |
504 mask_resource_id, | 446 mask_u_v_rect, |
505 contents_changed_since_last_frame, | 447 filters, |
506 mask_u_v_rect, | 448 background_filters, |
507 filters, | 449 copied_render_pass_id); |
508 background_filters, | |
509 copied_render_pass_id); | |
510 EXPECT_EQ(DrawQuad::RENDER_PASS, copy_quad->material); | 450 EXPECT_EQ(DrawQuad::RENDER_PASS, copy_quad->material); |
511 EXPECT_EQ(copied_render_pass_id, copy_quad->render_pass_id); | 451 EXPECT_EQ(copied_render_pass_id, copy_quad->render_pass_id); |
512 EXPECT_EQ(is_replica, copy_quad->is_replica); | |
513 EXPECT_EQ(mask_resource_id, copy_quad->mask_resource_id); | 452 EXPECT_EQ(mask_resource_id, copy_quad->mask_resource_id); |
514 EXPECT_RECT_EQ(contents_changed_since_last_frame, | |
515 copy_quad->contents_changed_since_last_frame); | |
516 EXPECT_EQ(mask_u_v_rect.ToString(), copy_quad->mask_uv_rect.ToString()); | 453 EXPECT_EQ(mask_u_v_rect.ToString(), copy_quad->mask_uv_rect.ToString()); |
517 EXPECT_EQ(filters, copy_quad->filters); | 454 EXPECT_EQ(filters, copy_quad->filters); |
518 EXPECT_EQ(background_filters, copy_quad->background_filters); | 455 EXPECT_EQ(background_filters, copy_quad->background_filters); |
519 } | 456 } |
520 | 457 |
521 TEST(DrawQuadTest, CopySolidColorDrawQuad) { | 458 TEST(DrawQuadTest, CopySolidColorDrawQuad) { |
522 gfx::Rect visible_rect(40, 50, 30, 20); | 459 gfx::Rect visible_rect(40, 50, 30, 20); |
523 SkColor color = 0x49494949; | 460 SkColor color = 0x49494949; |
524 bool force_anti_aliasing_off = false; | 461 bool force_anti_aliasing_off = false; |
525 CREATE_SHARED_STATE(); | 462 CREATE_SHARED_STATE(); |
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
803 resource_id, | 740 resource_id, |
804 orientation); | 741 orientation); |
805 EXPECT_EQ(resource_id, quad_new->io_surface_resource_id); | 742 EXPECT_EQ(resource_id, quad_new->io_surface_resource_id); |
806 EXPECT_EQ(1, IterateAndCount(quad_new)); | 743 EXPECT_EQ(1, IterateAndCount(quad_new)); |
807 EXPECT_EQ(resource_id + 1, quad_new->io_surface_resource_id); | 744 EXPECT_EQ(resource_id + 1, quad_new->io_surface_resource_id); |
808 } | 745 } |
809 | 746 |
810 TEST_F(DrawQuadIteratorTest, RenderPassDrawQuad) { | 747 TEST_F(DrawQuadIteratorTest, RenderPassDrawQuad) { |
811 gfx::Rect visible_rect(40, 50, 30, 20); | 748 gfx::Rect visible_rect(40, 50, 30, 20); |
812 RenderPass::Id render_pass_id(22, 64); | 749 RenderPass::Id render_pass_id(22, 64); |
813 bool is_replica = true; | |
814 ResourceProvider::ResourceId mask_resource_id = 78; | 750 ResourceProvider::ResourceId mask_resource_id = 78; |
815 gfx::Rect contents_changed_since_last_frame(42, 11, 74, 24); | |
816 gfx::RectF mask_u_v_rect(-45.f, -21.f, 33.f, 19.f); | 751 gfx::RectF mask_u_v_rect(-45.f, -21.f, 33.f, 19.f); |
817 FilterOperations filters; | 752 FilterOperations filters; |
818 filters.Append(FilterOperation::CreateBlurFilter(1.f)); | 753 filters.Append(FilterOperation::CreateBlurFilter(1.f)); |
819 FilterOperations background_filters; | 754 FilterOperations background_filters; |
820 background_filters.Append( | 755 background_filters.Append( |
821 FilterOperation::CreateGrayscaleFilter(1.f)); | 756 FilterOperation::CreateGrayscaleFilter(1.f)); |
822 | 757 |
823 RenderPass::Id copied_render_pass_id(235, 11); | 758 RenderPass::Id copied_render_pass_id(235, 11); |
824 | 759 |
825 CREATE_SHARED_STATE(); | 760 CREATE_SHARED_STATE(); |
826 CREATE_QUAD_8_NEW_RP(RenderPassDrawQuad, | 761 CREATE_QUAD_NEW_RP(RenderPassDrawQuad, |
827 visible_rect, | 762 visible_rect, |
828 render_pass_id, | 763 render_pass_id, |
829 is_replica, | 764 mask_resource_id, |
830 mask_resource_id, | 765 mask_u_v_rect, |
831 contents_changed_since_last_frame, | 766 filters, |
832 mask_u_v_rect, | 767 background_filters, |
833 filters, | 768 copied_render_pass_id); |
834 background_filters, | |
835 copied_render_pass_id); | |
836 EXPECT_EQ(mask_resource_id, quad_new->mask_resource_id); | 769 EXPECT_EQ(mask_resource_id, quad_new->mask_resource_id); |
837 EXPECT_EQ(1, IterateAndCount(quad_new)); | 770 EXPECT_EQ(1, IterateAndCount(quad_new)); |
838 EXPECT_EQ(mask_resource_id + 1, quad_new->mask_resource_id); | 771 EXPECT_EQ(mask_resource_id + 1, quad_new->mask_resource_id); |
839 quad_new->mask_resource_id = 0; | 772 quad_new->mask_resource_id = 0; |
840 EXPECT_EQ(0, IterateAndCount(quad_new)); | 773 EXPECT_EQ(0, IterateAndCount(quad_new)); |
841 EXPECT_EQ(0u, quad_new->mask_resource_id); | 774 EXPECT_EQ(0u, quad_new->mask_resource_id); |
842 } | 775 } |
843 | 776 |
844 TEST_F(DrawQuadIteratorTest, SolidColorDrawQuad) { | 777 TEST_F(DrawQuadIteratorTest, SolidColorDrawQuad) { |
845 gfx::Rect visible_rect(40, 50, 30, 20); | 778 gfx::Rect visible_rect(40, 50, 30, 20); |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
972 visible_rect, | 905 visible_rect, |
973 tex_coord_rect, | 906 tex_coord_rect, |
974 texture_size, | 907 texture_size, |
975 texture_format, | 908 texture_format, |
976 content_rect, | 909 content_rect, |
977 contents_scale, | 910 contents_scale, |
978 picture_pile); | 911 picture_pile); |
979 EXPECT_EQ(0, IterateAndCount(quad_new)); | 912 EXPECT_EQ(0, IterateAndCount(quad_new)); |
980 } | 913 } |
981 | 914 |
| 915 TEST(DrawQuadTest, LargestQuadType) { |
| 916 size_t largest = 0; |
| 917 |
| 918 for (int i = 0; i <= DrawQuad::MATERIAL_LAST; ++i) { |
| 919 switch (static_cast<DrawQuad::Material>(i)) { |
| 920 case DrawQuad::CHECKERBOARD: |
| 921 largest = std::max(largest, sizeof(CheckerboardDrawQuad)); |
| 922 break; |
| 923 case DrawQuad::DEBUG_BORDER: |
| 924 largest = std::max(largest, sizeof(DebugBorderDrawQuad)); |
| 925 break; |
| 926 case DrawQuad::IO_SURFACE_CONTENT: |
| 927 largest = std::max(largest, sizeof(IOSurfaceDrawQuad)); |
| 928 break; |
| 929 case DrawQuad::PICTURE_CONTENT: |
| 930 largest = std::max(largest, sizeof(PictureDrawQuad)); |
| 931 break; |
| 932 case DrawQuad::TEXTURE_CONTENT: |
| 933 largest = std::max(largest, sizeof(TextureDrawQuad)); |
| 934 break; |
| 935 case DrawQuad::RENDER_PASS: |
| 936 largest = std::max(largest, sizeof(RenderPassDrawQuad)); |
| 937 break; |
| 938 case DrawQuad::SOLID_COLOR: |
| 939 largest = std::max(largest, sizeof(SolidColorDrawQuad)); |
| 940 break; |
| 941 case DrawQuad::SURFACE_CONTENT: |
| 942 largest = std::max(largest, sizeof(SurfaceDrawQuad)); |
| 943 break; |
| 944 case DrawQuad::TILED_CONTENT: |
| 945 largest = std::max(largest, sizeof(TileDrawQuad)); |
| 946 break; |
| 947 case DrawQuad::STREAM_VIDEO_CONTENT: |
| 948 largest = std::max(largest, sizeof(StreamVideoDrawQuad)); |
| 949 break; |
| 950 case DrawQuad::YUV_VIDEO_CONTENT: |
| 951 largest = std::max(largest, sizeof(YUVVideoDrawQuad)); |
| 952 break; |
| 953 case DrawQuad::INVALID: |
| 954 break; |
| 955 } |
| 956 } |
| 957 |
| 958 // Verify the largest DrawQuad type is RenderPassDrawQuad. If this ever |
| 959 // changes, then the ReserveSizeForRenderPassWrite() method needs to be |
| 960 // updated as well to use the new largest quad. |
| 961 EXPECT_EQ(sizeof(kLargestDrawQuad), largest); |
| 962 } |
| 963 |
982 } // namespace | 964 } // namespace |
983 } // namespace cc | 965 } // namespace cc |
OLD | NEW |