| 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 |