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 "base/message_loop/message_loop.h" | 5 #include "base/message_loop/message_loop.h" |
6 #include "cc/layers/append_quads_data.h" | 6 #include "cc/layers/append_quads_data.h" |
7 #include "cc/output/gl_renderer.h" | 7 #include "cc/output/gl_renderer.h" |
8 #include "cc/quads/draw_quad.h" | 8 #include "cc/quads/draw_quad.h" |
9 #include "cc/quads/picture_draw_quad.h" | 9 #include "cc/quads/picture_draw_quad.h" |
10 #include "cc/quads/texture_draw_quad.h" | 10 #include "cc/quads/texture_draw_quad.h" |
(...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
391 pass_list.push_back(pass.Pass()); | 391 pass_list.push_back(pass.Pass()); |
392 | 392 |
393 EXPECT_TRUE(this->RunPixelTest( | 393 EXPECT_TRUE(this->RunPixelTest( |
394 &pass_list, | 394 &pass_list, |
395 base::FilePath(FILE_PATH_LITERAL("green_alpha.png")), | 395 base::FilePath(FILE_PATH_LITERAL("green_alpha.png")), |
396 FuzzyPixelOffByOneComparator(true))); | 396 FuzzyPixelOffByOneComparator(true))); |
397 } | 397 } |
398 | 398 |
399 class VideoGLRendererPixelTest : public GLRendererPixelTest { | 399 class VideoGLRendererPixelTest : public GLRendererPixelTest { |
400 protected: | 400 protected: |
401 scoped_ptr<YUVVideoDrawQuad> CreateTestYUVVideoDrawQuad( | 401 scoped_ptr<YUVVideoDrawQuad> CreateTestYUVVideoDrawQuad_Striped( |
402 SharedQuadState* shared_state, | 402 SharedQuadState* shared_state, |
403 media::VideoFrame::Format format, | 403 media::VideoFrame::Format format, |
404 bool is_transparent, | 404 bool is_transparent, |
405 const gfx::RectF& tex_coord_rect) { | 405 const gfx::RectF& tex_coord_rect) { |
406 const bool with_alpha = (format == media::VideoFrame::YV12A); | |
407 const gfx::Rect rect(this->device_viewport_size_); | 406 const gfx::Rect rect(this->device_viewport_size_); |
408 const gfx::Rect opaque_rect(0, 0, 0, 0); | |
409 | 407 |
410 scoped_refptr<media::VideoFrame> video_frame = | 408 scoped_refptr<media::VideoFrame> video_frame = |
411 media::VideoFrame::CreateFrame( | 409 media::VideoFrame::CreateFrame( |
412 format, rect.size(), rect, rect.size(), base::TimeDelta()); | 410 format, rect.size(), rect, rect.size(), base::TimeDelta()); |
413 | 411 |
414 // YUV values representing a striped pattern, for validating texture | 412 // YUV values representing a striped pattern, for validating texture |
415 // coordinates for sampling. | 413 // coordinates for sampling. |
416 uint8_t y_value = 0; | 414 uint8_t y_value = 0; |
417 uint8_t u_value = 0; | 415 uint8_t u_value = 0; |
418 uint8_t v_value = 0; | 416 uint8_t v_value = 0; |
419 for (int i = 0; i < video_frame->rows(media::VideoFrame::kYPlane); ++i) { | 417 for (int i = 0; i < video_frame->rows(media::VideoFrame::kYPlane); ++i) { |
420 uint8_t* y_row = video_frame->data(media::VideoFrame::kYPlane) + | 418 uint8_t* y_row = video_frame->data(media::VideoFrame::kYPlane) + |
421 video_frame->stride(media::VideoFrame::kYPlane) * i; | 419 video_frame->stride(media::VideoFrame::kYPlane) * i; |
422 for (int j = 0; j < video_frame->row_bytes(media::VideoFrame::kYPlane); | 420 for (int j = 0; j < video_frame->row_bytes(media::VideoFrame::kYPlane); |
423 ++j) { | 421 ++j) { |
424 y_row[j] = (y_value += 1); | 422 y_row[j] = (y_value += 1); |
425 } | 423 } |
426 } | 424 } |
427 for (int i = 0; i < video_frame->rows(media::VideoFrame::kUPlane); ++i) { | 425 for (int i = 0; i < video_frame->rows(media::VideoFrame::kUPlane); ++i) { |
428 uint8_t* u_row = video_frame->data(media::VideoFrame::kUPlane) + | 426 uint8_t* u_row = video_frame->data(media::VideoFrame::kUPlane) + |
429 video_frame->stride(media::VideoFrame::kUPlane) * i; | 427 video_frame->stride(media::VideoFrame::kUPlane) * i; |
430 uint8_t* v_row = video_frame->data(media::VideoFrame::kVPlane) + | 428 uint8_t* v_row = video_frame->data(media::VideoFrame::kVPlane) + |
431 video_frame->stride(media::VideoFrame::kVPlane) * i; | 429 video_frame->stride(media::VideoFrame::kVPlane) * i; |
432 for (int j = 0; j < video_frame->row_bytes(media::VideoFrame::kUPlane); | 430 for (int j = 0; j < video_frame->row_bytes(media::VideoFrame::kUPlane); |
433 ++j) { | 431 ++j) { |
434 u_row[j] = (u_value += 3); | 432 u_row[j] = (u_value += 3); |
435 v_row[j] = (v_value += 5); | 433 v_row[j] = (v_value += 5); |
436 } | 434 } |
437 } | 435 } |
| 436 return CreateTestYUVVideoDrawQuad_FromVideoFrame( |
| 437 shared_state, video_frame, is_transparent, tex_coord_rect); |
| 438 } |
| 439 |
| 440 scoped_ptr<YUVVideoDrawQuad> CreateTestYUVVideoDrawQuad_Solid( |
| 441 SharedQuadState* shared_state, |
| 442 media::VideoFrame::Format format, |
| 443 bool is_transparent, |
| 444 const gfx::RectF& tex_coord_rect, |
| 445 uint8 y, |
| 446 uint8 u, |
| 447 uint8 v) { |
| 448 const gfx::Rect rect(this->device_viewport_size_); |
| 449 |
| 450 scoped_refptr<media::VideoFrame> video_frame = |
| 451 media::VideoFrame::CreateFrame( |
| 452 format, rect.size(), rect, rect.size(), base::TimeDelta()); |
| 453 |
| 454 // YUV values of a solid, constant, color. Useful for testing that color |
| 455 // space/color range are being handled properly. |
| 456 memset(video_frame->data(media::VideoFrame::kYPlane), |
| 457 y, |
| 458 video_frame->stride(media::VideoFrame::kYPlane) * |
| 459 video_frame->rows(media::VideoFrame::kYPlane)); |
| 460 memset(video_frame->data(media::VideoFrame::kUPlane), |
| 461 u, |
| 462 video_frame->stride(media::VideoFrame::kUPlane) * |
| 463 video_frame->rows(media::VideoFrame::kUPlane)); |
| 464 memset(video_frame->data(media::VideoFrame::kVPlane), |
| 465 v, |
| 466 video_frame->stride(media::VideoFrame::kVPlane) * |
| 467 video_frame->rows(media::VideoFrame::kVPlane)); |
| 468 |
| 469 return CreateTestYUVVideoDrawQuad_FromVideoFrame( |
| 470 shared_state, video_frame, is_transparent, tex_coord_rect); |
| 471 } |
| 472 |
| 473 scoped_ptr<YUVVideoDrawQuad> CreateTestYUVVideoDrawQuad_FromVideoFrame( |
| 474 SharedQuadState* shared_state, |
| 475 scoped_refptr<media::VideoFrame> video_frame, |
| 476 bool is_transparent, |
| 477 const gfx::RectF& tex_coord_rect) { |
| 478 const bool with_alpha = (video_frame->format() == media::VideoFrame::YV12A); |
| 479 const YUVVideoDrawQuad::ColorSpace color_space = |
| 480 (video_frame->format() == media::VideoFrame::YV12J |
| 481 ? YUVVideoDrawQuad::REC_601_JPEG |
| 482 : YUVVideoDrawQuad::REC_601); |
| 483 const gfx::Rect rect(this->device_viewport_size_); |
| 484 const gfx::Rect opaque_rect(0, 0, 0, 0); |
| 485 |
438 if (with_alpha) | 486 if (with_alpha) |
439 memset(video_frame->data(media::VideoFrame::kAPlane), | 487 memset(video_frame->data(media::VideoFrame::kAPlane), |
440 is_transparent ? 0 : 128, | 488 is_transparent ? 0 : 128, |
441 video_frame->stride(media::VideoFrame::kAPlane) * | 489 video_frame->stride(media::VideoFrame::kAPlane) * |
442 video_frame->rows(media::VideoFrame::kAPlane)); | 490 video_frame->rows(media::VideoFrame::kAPlane)); |
443 | 491 |
444 VideoFrameExternalResources resources = | 492 VideoFrameExternalResources resources = |
445 video_resource_updater_->CreateExternalResourcesFromVideoFrame( | 493 video_resource_updater_->CreateExternalResourcesFromVideoFrame( |
446 video_frame); | 494 video_frame); |
447 | 495 |
448 EXPECT_EQ(VideoFrameExternalResources::YUV_RESOURCE, resources.type); | 496 EXPECT_EQ(VideoFrameExternalResources::YUV_RESOURCE, resources.type); |
449 EXPECT_EQ(media::VideoFrame::NumPlanes(format), resources.mailboxes.size()); | 497 EXPECT_EQ(media::VideoFrame::NumPlanes(video_frame->format()), |
450 EXPECT_EQ(media::VideoFrame::NumPlanes(format), | 498 resources.mailboxes.size()); |
| 499 EXPECT_EQ(media::VideoFrame::NumPlanes(video_frame->format()), |
451 resources.release_callbacks.size()); | 500 resources.release_callbacks.size()); |
452 | 501 |
453 ResourceProvider::ResourceId y_resource = | 502 ResourceProvider::ResourceId y_resource = |
454 resource_provider_->CreateResourceFromTextureMailbox( | 503 resource_provider_->CreateResourceFromTextureMailbox( |
455 resources.mailboxes[media::VideoFrame::kYPlane], | 504 resources.mailboxes[media::VideoFrame::kYPlane], |
456 SingleReleaseCallback::Create( | 505 SingleReleaseCallback::Create( |
457 resources.release_callbacks[media::VideoFrame::kYPlane])); | 506 resources.release_callbacks[media::VideoFrame::kYPlane])); |
458 ResourceProvider::ResourceId u_resource = | 507 ResourceProvider::ResourceId u_resource = |
459 resource_provider_->CreateResourceFromTextureMailbox( | 508 resource_provider_->CreateResourceFromTextureMailbox( |
460 resources.mailboxes[media::VideoFrame::kUPlane], | 509 resources.mailboxes[media::VideoFrame::kUPlane], |
(...skipping 14 matching lines...) Expand all Loading... |
475 | 524 |
476 scoped_ptr<YUVVideoDrawQuad> yuv_quad = YUVVideoDrawQuad::Create(); | 525 scoped_ptr<YUVVideoDrawQuad> yuv_quad = YUVVideoDrawQuad::Create(); |
477 yuv_quad->SetNew(shared_state, | 526 yuv_quad->SetNew(shared_state, |
478 rect, | 527 rect, |
479 opaque_rect, | 528 opaque_rect, |
480 rect, | 529 rect, |
481 tex_coord_rect, | 530 tex_coord_rect, |
482 y_resource, | 531 y_resource, |
483 u_resource, | 532 u_resource, |
484 v_resource, | 533 v_resource, |
485 a_resource); | 534 a_resource, |
| 535 color_space); |
486 return yuv_quad.Pass(); | 536 return yuv_quad.Pass(); |
487 } | 537 } |
488 | 538 |
489 virtual void SetUp() OVERRIDE { | 539 virtual void SetUp() OVERRIDE { |
490 GLRendererPixelTest::SetUp(); | 540 GLRendererPixelTest::SetUp(); |
491 video_resource_updater_.reset(new VideoResourceUpdater( | 541 video_resource_updater_.reset(new VideoResourceUpdater( |
492 output_surface_->context_provider().get(), resource_provider_.get())); | 542 output_surface_->context_provider().get(), resource_provider_.get())); |
493 } | 543 } |
494 | 544 |
495 private: | 545 private: |
496 scoped_ptr<VideoResourceUpdater> video_resource_updater_; | 546 scoped_ptr<VideoResourceUpdater> video_resource_updater_; |
497 }; | 547 }; |
498 | 548 |
499 TEST_F(VideoGLRendererPixelTest, SimpleYUVRect) { | 549 TEST_F(VideoGLRendererPixelTest, SimpleYUVRect) { |
500 gfx::Rect rect(this->device_viewport_size_); | 550 gfx::Rect rect(this->device_viewport_size_); |
501 | 551 |
502 RenderPass::Id id(1, 1); | 552 RenderPass::Id id(1, 1); |
503 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); | 553 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); |
504 | 554 |
505 scoped_ptr<SharedQuadState> shared_state = | 555 scoped_ptr<SharedQuadState> shared_state = |
506 CreateTestSharedQuadState(gfx::Transform(), rect); | 556 CreateTestSharedQuadState(gfx::Transform(), rect); |
507 | 557 |
508 scoped_ptr<YUVVideoDrawQuad> yuv_quad = | 558 scoped_ptr<YUVVideoDrawQuad> yuv_quad = |
509 CreateTestYUVVideoDrawQuad(shared_state.get(), | 559 CreateTestYUVVideoDrawQuad_Striped(shared_state.get(), |
510 media::VideoFrame::YV12, | 560 media::VideoFrame::YV12, |
511 false, | 561 false, |
512 gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f)); | 562 gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f)); |
513 | 563 |
514 pass->quad_list.push_back(yuv_quad.PassAs<DrawQuad>()); | 564 pass->quad_list.push_back(yuv_quad.PassAs<DrawQuad>()); |
515 | 565 |
516 RenderPassList pass_list; | 566 RenderPassList pass_list; |
517 pass_list.push_back(pass.Pass()); | 567 pass_list.push_back(pass.Pass()); |
518 | 568 |
519 EXPECT_TRUE( | 569 EXPECT_TRUE( |
520 this->RunPixelTest(&pass_list, | 570 this->RunPixelTest(&pass_list, |
521 base::FilePath(FILE_PATH_LITERAL("yuv_stripes.png")), | 571 base::FilePath(FILE_PATH_LITERAL("yuv_stripes.png")), |
522 FuzzyPixelOffByOneComparator(true))); | 572 FuzzyPixelOffByOneComparator(true))); |
523 } | 573 } |
524 | 574 |
525 TEST_F(VideoGLRendererPixelTest, OffsetYUVRect) { | 575 TEST_F(VideoGLRendererPixelTest, OffsetYUVRect) { |
526 gfx::Rect rect(this->device_viewport_size_); | 576 gfx::Rect rect(this->device_viewport_size_); |
527 | 577 |
528 RenderPass::Id id(1, 1); | 578 RenderPass::Id id(1, 1); |
529 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); | 579 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); |
530 | 580 |
531 scoped_ptr<SharedQuadState> shared_state = | 581 scoped_ptr<SharedQuadState> shared_state = |
532 CreateTestSharedQuadState(gfx::Transform(), rect); | 582 CreateTestSharedQuadState(gfx::Transform(), rect); |
533 | 583 |
534 // Intentionally sets frame format to I420 for testing coverage. | 584 // Intentionally sets frame format to I420 for testing coverage. |
535 scoped_ptr<YUVVideoDrawQuad> yuv_quad = | 585 scoped_ptr<YUVVideoDrawQuad> yuv_quad = CreateTestYUVVideoDrawQuad_Striped( |
536 CreateTestYUVVideoDrawQuad(shared_state.get(), | 586 shared_state.get(), |
537 media::VideoFrame::I420, | 587 media::VideoFrame::I420, |
538 false, | 588 false, |
539 gfx::RectF(0.125f, 0.25f, 0.75f, 0.5f)); | 589 gfx::RectF(0.125f, 0.25f, 0.75f, 0.5f)); |
540 | 590 |
541 pass->quad_list.push_back(yuv_quad.PassAs<DrawQuad>()); | 591 pass->quad_list.push_back(yuv_quad.PassAs<DrawQuad>()); |
542 | 592 |
543 RenderPassList pass_list; | 593 RenderPassList pass_list; |
544 pass_list.push_back(pass.Pass()); | 594 pass_list.push_back(pass.Pass()); |
545 | 595 |
546 EXPECT_TRUE(this->RunPixelTest( | 596 EXPECT_TRUE(this->RunPixelTest( |
547 &pass_list, | 597 &pass_list, |
548 base::FilePath(FILE_PATH_LITERAL("yuv_stripes_offset.png")), | 598 base::FilePath(FILE_PATH_LITERAL("yuv_stripes_offset.png")), |
549 FuzzyPixelOffByOneComparator(true))); | 599 FuzzyPixelOffByOneComparator(true))); |
550 } | 600 } |
551 | 601 |
| 602 TEST_F(VideoGLRendererPixelTest, SimpleYUVRectBlack) { |
| 603 gfx::Rect rect(this->device_viewport_size_); |
| 604 |
| 605 RenderPass::Id id(1, 1); |
| 606 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); |
| 607 |
| 608 scoped_ptr<SharedQuadState> shared_state = |
| 609 CreateTestSharedQuadState(gfx::Transform(), rect); |
| 610 |
| 611 // In MPEG color range YUV values of (15,128,128) should produce black. |
| 612 scoped_ptr<YUVVideoDrawQuad> yuv_quad = |
| 613 CreateTestYUVVideoDrawQuad_Solid(shared_state.get(), |
| 614 media::VideoFrame::YV12, |
| 615 false, |
| 616 gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), |
| 617 15, |
| 618 128, |
| 619 128); |
| 620 |
| 621 pass->quad_list.push_back(yuv_quad.PassAs<DrawQuad>()); |
| 622 |
| 623 RenderPassList pass_list; |
| 624 pass_list.push_back(pass.Pass()); |
| 625 |
| 626 // If we didn't get black out of the YUV values above, then we probably have a |
| 627 // color range issue. |
| 628 EXPECT_TRUE(this->RunPixelTest(&pass_list, |
| 629 base::FilePath(FILE_PATH_LITERAL("black.png")), |
| 630 FuzzyPixelOffByOneComparator(true))); |
| 631 } |
| 632 |
| 633 TEST_F(VideoGLRendererPixelTest, SimpleYUVJRect) { |
| 634 gfx::Rect rect(this->device_viewport_size_); |
| 635 |
| 636 RenderPass::Id id(1, 1); |
| 637 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); |
| 638 |
| 639 scoped_ptr<SharedQuadState> shared_state = |
| 640 CreateTestSharedQuadState(gfx::Transform(), rect); |
| 641 |
| 642 // YUV of (149,43,21) should be green (0,255,0) in RGB. |
| 643 scoped_ptr<YUVVideoDrawQuad> yuv_quad = |
| 644 CreateTestYUVVideoDrawQuad_Solid(shared_state.get(), |
| 645 media::VideoFrame::YV12J, |
| 646 false, |
| 647 gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), |
| 648 149, |
| 649 43, |
| 650 21); |
| 651 |
| 652 pass->quad_list.push_back(yuv_quad.PassAs<DrawQuad>()); |
| 653 |
| 654 RenderPassList pass_list; |
| 655 pass_list.push_back(pass.Pass()); |
| 656 |
| 657 EXPECT_TRUE(this->RunPixelTest(&pass_list, |
| 658 base::FilePath(FILE_PATH_LITERAL("green.png")), |
| 659 FuzzyPixelOffByOneComparator(true))); |
| 660 } |
| 661 |
| 662 TEST_F(VideoGLRendererPixelTest, SimpleYUVJRectGrey) { |
| 663 gfx::Rect rect(this->device_viewport_size_); |
| 664 |
| 665 RenderPass::Id id(1, 1); |
| 666 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); |
| 667 |
| 668 scoped_ptr<SharedQuadState> shared_state = |
| 669 CreateTestSharedQuadState(gfx::Transform(), rect); |
| 670 |
| 671 // Dark grey in JPEG color range (in MPEG, this is black). |
| 672 scoped_ptr<YUVVideoDrawQuad> yuv_quad = |
| 673 CreateTestYUVVideoDrawQuad_Solid(shared_state.get(), |
| 674 media::VideoFrame::YV12J, |
| 675 false, |
| 676 gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), |
| 677 15, |
| 678 128, |
| 679 128); |
| 680 |
| 681 pass->quad_list.push_back(yuv_quad.PassAs<DrawQuad>()); |
| 682 |
| 683 RenderPassList pass_list; |
| 684 pass_list.push_back(pass.Pass()); |
| 685 |
| 686 EXPECT_TRUE( |
| 687 this->RunPixelTest(&pass_list, |
| 688 base::FilePath(FILE_PATH_LITERAL("dark_grey.png")), |
| 689 FuzzyPixelOffByOneComparator(true))); |
| 690 } |
| 691 |
552 TEST_F(VideoGLRendererPixelTest, SimpleYUVARect) { | 692 TEST_F(VideoGLRendererPixelTest, SimpleYUVARect) { |
553 gfx::Rect rect(this->device_viewport_size_); | 693 gfx::Rect rect(this->device_viewport_size_); |
554 | 694 |
555 RenderPass::Id id(1, 1); | 695 RenderPass::Id id(1, 1); |
556 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); | 696 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); |
557 | 697 |
558 scoped_ptr<SharedQuadState> shared_state = | 698 scoped_ptr<SharedQuadState> shared_state = |
559 CreateTestSharedQuadState(gfx::Transform(), rect); | 699 CreateTestSharedQuadState(gfx::Transform(), rect); |
560 | 700 |
561 scoped_ptr<YUVVideoDrawQuad> yuv_quad = | 701 scoped_ptr<YUVVideoDrawQuad> yuv_quad = |
562 CreateTestYUVVideoDrawQuad(shared_state.get(), | 702 CreateTestYUVVideoDrawQuad_Striped(shared_state.get(), |
563 media::VideoFrame::YV12A, | 703 media::VideoFrame::YV12A, |
564 false, | 704 false, |
565 gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f)); | 705 gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f)); |
566 | 706 |
567 pass->quad_list.push_back(yuv_quad.PassAs<DrawQuad>()); | 707 pass->quad_list.push_back(yuv_quad.PassAs<DrawQuad>()); |
568 | 708 |
569 scoped_ptr<SolidColorDrawQuad> color_quad = SolidColorDrawQuad::Create(); | 709 scoped_ptr<SolidColorDrawQuad> color_quad = SolidColorDrawQuad::Create(); |
570 color_quad->SetNew(shared_state.get(), rect, rect, SK_ColorWHITE, false); | 710 color_quad->SetNew(shared_state.get(), rect, rect, SK_ColorWHITE, false); |
571 | 711 |
572 pass->quad_list.push_back(color_quad.PassAs<DrawQuad>()); | 712 pass->quad_list.push_back(color_quad.PassAs<DrawQuad>()); |
573 | 713 |
574 RenderPassList pass_list; | 714 RenderPassList pass_list; |
575 pass_list.push_back(pass.Pass()); | 715 pass_list.push_back(pass.Pass()); |
576 | 716 |
577 EXPECT_TRUE(this->RunPixelTest( | 717 EXPECT_TRUE(this->RunPixelTest( |
578 &pass_list, | 718 &pass_list, |
579 base::FilePath(FILE_PATH_LITERAL("yuv_stripes_alpha.png")), | 719 base::FilePath(FILE_PATH_LITERAL("yuv_stripes_alpha.png")), |
580 FuzzyPixelOffByOneComparator(true))); | 720 FuzzyPixelOffByOneComparator(true))); |
581 } | 721 } |
582 | 722 |
583 TEST_F(VideoGLRendererPixelTest, FullyTransparentYUVARect) { | 723 TEST_F(VideoGLRendererPixelTest, FullyTransparentYUVARect) { |
584 gfx::Rect rect(this->device_viewport_size_); | 724 gfx::Rect rect(this->device_viewport_size_); |
585 | 725 |
586 RenderPass::Id id(1, 1); | 726 RenderPass::Id id(1, 1); |
587 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); | 727 scoped_ptr<RenderPass> pass = CreateTestRootRenderPass(id, rect); |
588 | 728 |
589 scoped_ptr<SharedQuadState> shared_state = | 729 scoped_ptr<SharedQuadState> shared_state = |
590 CreateTestSharedQuadState(gfx::Transform(), rect); | 730 CreateTestSharedQuadState(gfx::Transform(), rect); |
591 | 731 |
592 scoped_ptr<YUVVideoDrawQuad> yuv_quad = | 732 scoped_ptr<YUVVideoDrawQuad> yuv_quad = |
593 CreateTestYUVVideoDrawQuad(shared_state.get(), | 733 CreateTestYUVVideoDrawQuad_Striped(shared_state.get(), |
594 media::VideoFrame::YV12A, | 734 media::VideoFrame::YV12A, |
595 true, | 735 true, |
596 gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f)); | 736 gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f)); |
597 | 737 |
598 pass->quad_list.push_back(yuv_quad.PassAs<DrawQuad>()); | 738 pass->quad_list.push_back(yuv_quad.PassAs<DrawQuad>()); |
599 | 739 |
600 scoped_ptr<SolidColorDrawQuad> color_quad = SolidColorDrawQuad::Create(); | 740 scoped_ptr<SolidColorDrawQuad> color_quad = SolidColorDrawQuad::Create(); |
601 color_quad->SetNew(shared_state.get(), rect, rect, SK_ColorBLACK, false); | 741 color_quad->SetNew(shared_state.get(), rect, rect, SK_ColorBLACK, false); |
602 | 742 |
603 pass->quad_list.push_back(color_quad.PassAs<DrawQuad>()); | 743 pass->quad_list.push_back(color_quad.PassAs<DrawQuad>()); |
604 | 744 |
605 RenderPassList pass_list; | 745 RenderPassList pass_list; |
606 pass_list.push_back(pass.Pass()); | 746 pass_list.push_back(pass.Pass()); |
(...skipping 1492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2099 EXPECT_TRUE(this->RunPixelTest( | 2239 EXPECT_TRUE(this->RunPixelTest( |
2100 &pass_list, | 2240 &pass_list, |
2101 base::FilePath(FILE_PATH_LITERAL("wrap_mode_repeat.png")), | 2241 base::FilePath(FILE_PATH_LITERAL("wrap_mode_repeat.png")), |
2102 FuzzyPixelOffByOneComparator(true))); | 2242 FuzzyPixelOffByOneComparator(true))); |
2103 } | 2243 } |
2104 | 2244 |
2105 #endif // !defined(OS_ANDROID) | 2245 #endif // !defined(OS_ANDROID) |
2106 | 2246 |
2107 } // namespace | 2247 } // namespace |
2108 } // namespace cc | 2248 } // namespace cc |
OLD | NEW |