Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(720)

Side by Side Diff: gpu/command_buffer/service/texture_manager_unittest.cc

Issue 1505343003: Updating texture validation to account for sampler objects in ES3 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed most of piman@'s feedback. Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 "gpu/command_buffer/service/texture_manager.h" 5 #include "gpu/command_buffer/service/texture_manager.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 const GLint TextureManagerTest::kMaxExternalTextureSize; 126 const GLint TextureManagerTest::kMaxExternalTextureSize;
127 const GLint TextureManagerTest::kMax2dLevels; 127 const GLint TextureManagerTest::kMax2dLevels;
128 const GLint TextureManagerTest::kMaxCubeMapLevels; 128 const GLint TextureManagerTest::kMaxCubeMapLevels;
129 const GLint TextureManagerTest::kMaxExternalLevels; 129 const GLint TextureManagerTest::kMaxExternalLevels;
130 #endif 130 #endif
131 131
132 TEST_F(TextureManagerTest, Basic) { 132 TEST_F(TextureManagerTest, Basic) {
133 const GLuint kClient1Id = 1; 133 const GLuint kClient1Id = 1;
134 const GLuint kService1Id = 11; 134 const GLuint kService1Id = 11;
135 const GLuint kClient2Id = 2; 135 const GLuint kClient2Id = 2;
136 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
137 EXPECT_FALSE(manager_->HaveUnsafeTextures()); 136 EXPECT_FALSE(manager_->HaveUnsafeTextures());
138 EXPECT_FALSE(manager_->HaveUnclearedMips()); 137 EXPECT_FALSE(manager_->HaveUnclearedMips());
139 // Check we can create texture. 138 // Check we can create texture.
140 manager_->CreateTexture(kClient1Id, kService1Id); 139 manager_->CreateTexture(kClient1Id, kService1Id);
141 // Check texture got created. 140 // Check texture got created.
142 scoped_refptr<TextureRef> texture = manager_->GetTexture(kClient1Id); 141 scoped_refptr<TextureRef> texture = manager_->GetTexture(kClient1Id);
143 ASSERT_TRUE(texture.get() != NULL); 142 ASSERT_TRUE(texture.get() != NULL);
144 EXPECT_EQ(kService1Id, texture->service_id()); 143 EXPECT_EQ(kService1Id, texture->service_id());
145 EXPECT_EQ(kClient1Id, texture->client_id()); 144 EXPECT_EQ(kClient1Id, texture->client_id());
146 EXPECT_EQ(texture->texture(), manager_->GetTextureForServiceId( 145 EXPECT_EQ(texture->texture(), manager_->GetTextureForServiceId(
(...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after
564 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 563 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
565 EXPECT_EQ(0, texture->num_uncleared_mips()); 564 EXPECT_EQ(0, texture->num_uncleared_mips());
566 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); 565 EXPECT_TRUE(manager_->CanRender(texture_ref_.get()));
567 EXPECT_TRUE(texture->SafeToRenderFrom()); 566 EXPECT_TRUE(texture->SafeToRenderFrom());
568 EXPECT_FALSE(texture->IsImmutable()); 567 EXPECT_FALSE(texture->IsImmutable());
569 EXPECT_EQ(static_cast<GLenum>(GL_NEAREST_MIPMAP_LINEAR), 568 EXPECT_EQ(static_cast<GLenum>(GL_NEAREST_MIPMAP_LINEAR),
570 texture->min_filter()); 569 texture->min_filter());
571 EXPECT_EQ(static_cast<GLenum>(GL_LINEAR), texture->mag_filter()); 570 EXPECT_EQ(static_cast<GLenum>(GL_LINEAR), texture->mag_filter());
572 EXPECT_EQ(static_cast<GLenum>(GL_REPEAT), texture->wrap_s()); 571 EXPECT_EQ(static_cast<GLenum>(GL_REPEAT), texture->wrap_s());
573 EXPECT_EQ(static_cast<GLenum>(GL_REPEAT), texture->wrap_t()); 572 EXPECT_EQ(static_cast<GLenum>(GL_REPEAT), texture->wrap_t());
574 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
575 EXPECT_FALSE(manager_->HaveUnsafeTextures()); 573 EXPECT_FALSE(manager_->HaveUnsafeTextures());
576 EXPECT_EQ(0u, texture->estimated_size()); 574 EXPECT_EQ(0u, texture->estimated_size());
577 } 575 }
578 576
579 TEST_F(TextureTest, SetTargetTexture2D) { 577 TEST_F(TextureTest, SetTargetTexture2D) {
580 Texture* texture = texture_ref_->texture(); 578 Texture* texture = texture_ref_->texture();
581 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); 579 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D);
582 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 580 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
583 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); 581 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture));
584 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); 582 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get()));
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
639 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); 637 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D);
640 Texture* texture = texture_ref_->texture(); 638 Texture* texture = texture_ref_->texture();
641 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); 639 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
642 // Check Setting level 0 to POT 640 // Check Setting level 0 to POT
643 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 641 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1,
644 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4)); 642 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4));
645 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 643 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
646 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 644 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
647 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); 645 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
648 EXPECT_TRUE(texture->SafeToRenderFrom()); 646 EXPECT_TRUE(texture->SafeToRenderFrom());
649 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
650 // Set filters to something that will work with a single mip. 647 // Set filters to something that will work with a single mip.
651 SetParameter( 648 SetParameter(
652 texture_ref_.get(), GL_TEXTURE_MIN_FILTER, GL_LINEAR, GL_NO_ERROR); 649 texture_ref_.get(), GL_TEXTURE_MIN_FILTER, GL_LINEAR, GL_NO_ERROR);
653 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); 650 EXPECT_TRUE(manager_->CanRender(texture_ref_.get()));
654 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
655 // Set them back. 651 // Set them back.
656 SetParameter(texture_ref_.get(), 652 SetParameter(texture_ref_.get(),
657 GL_TEXTURE_MIN_FILTER, 653 GL_TEXTURE_MIN_FILTER,
658 GL_LINEAR_MIPMAP_LINEAR, 654 GL_LINEAR_MIPMAP_LINEAR,
659 GL_NO_ERROR); 655 GL_NO_ERROR);
660 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
661 656
662 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); 657 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get()));
663 // Make mips. 658 // Make mips.
664 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get())); 659 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get()));
665 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 660 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
666 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); 661 EXPECT_TRUE(manager_->CanRender(texture_ref_.get()));
667 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
668 // Change a mip. 662 // Change a mip.
669 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 1, GL_RGBA, 4, 4, 1, 663 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 1, GL_RGBA, 4, 4, 1,
670 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4)); 664 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4));
671 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 665 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
672 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 666 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
673 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); 667 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get()));
674 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); 668 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
675 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
676 // Set a level past the number of mips that would get generated. 669 // Set a level past the number of mips that would get generated.
677 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 3, GL_RGBA, 4, 4, 1, 670 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 3, GL_RGBA, 4, 4, 1,
678 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4)); 671 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4));
679 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); 672 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get()));
680 // Make mips. 673 // Make mips.
681 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get())); 674 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get()));
682 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); 675 EXPECT_TRUE(manager_->CanRender(texture_ref_.get()));
683 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 676 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
684 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
685 } 677 }
686 678
687 TEST_F(TextureTest, BaseLevel) { 679 TEST_F(TextureTest, BaseLevel) {
688 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); 680 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D);
689 Texture* texture = texture_ref_->texture(); 681 Texture* texture = texture_ref_->texture();
690 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); 682 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
691 // Check Setting level 1 to POT 683 // Check Setting level 1 to POT
692 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 1, GL_RGBA, 4, 4, 1, 684 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 1, GL_RGBA, 4, 4, 1,
693 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4)); 685 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4));
694 SetParameter( 686 SetParameter(
695 texture_ref_.get(), GL_TEXTURE_MIN_FILTER, GL_LINEAR, GL_NO_ERROR); 687 texture_ref_.get(), GL_TEXTURE_MIN_FILTER, GL_LINEAR, GL_NO_ERROR);
696 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); 688 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
697 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
698 SetParameter( 689 SetParameter(
699 texture_ref_.get(), GL_TEXTURE_BASE_LEVEL, 1, GL_NO_ERROR); 690 texture_ref_.get(), GL_TEXTURE_BASE_LEVEL, 1, GL_NO_ERROR);
700 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); 691 EXPECT_TRUE(manager_->CanRender(texture_ref_.get()));
701 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
702 } 692 }
703 693
704 TEST_F(TextureTest, BaseLevelMaxLevel) { 694 TEST_F(TextureTest, BaseLevelMaxLevel) {
705 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); 695 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D);
706 Texture* texture = texture_ref_->texture(); 696 Texture* texture = texture_ref_->texture();
707 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); 697 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
708 // Set up level 2, 3, 4. 698 // Set up level 2, 3, 4.
709 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 2, GL_RGBA, 8, 8, 1, 699 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 2, GL_RGBA, 8, 8, 1,
710 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(8, 8)); 700 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(8, 8));
711 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 3, GL_RGBA, 4, 4, 1, 701 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 3, GL_RGBA, 4, 4, 1,
712 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4)); 702 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4));
713 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 4, GL_RGBA, 2, 2, 1, 703 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 4, GL_RGBA, 2, 2, 1,
714 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(2, 2)); 704 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(2, 2));
715 SetParameter( 705 SetParameter(
716 texture_ref_.get(), GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR, 706 texture_ref_.get(), GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR,
717 GL_NO_ERROR); 707 GL_NO_ERROR);
718 SetParameter( 708 SetParameter(
719 texture_ref_.get(), GL_TEXTURE_MAG_FILTER, GL_LINEAR, GL_NO_ERROR); 709 texture_ref_.get(), GL_TEXTURE_MAG_FILTER, GL_LINEAR, GL_NO_ERROR);
720 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); 710 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
721 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
722 SetParameter( 711 SetParameter(
723 texture_ref_.get(), GL_TEXTURE_BASE_LEVEL, 2, GL_NO_ERROR); 712 texture_ref_.get(), GL_TEXTURE_BASE_LEVEL, 2, GL_NO_ERROR);
724 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); 713 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
725 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
726 SetParameter( 714 SetParameter(
727 texture_ref_.get(), GL_TEXTURE_MAX_LEVEL, 4, GL_NO_ERROR); 715 texture_ref_.get(), GL_TEXTURE_MAX_LEVEL, 4, GL_NO_ERROR);
728 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); 716 EXPECT_TRUE(manager_->CanRender(texture_ref_.get()));
729 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
730 SetParameter( 717 SetParameter(
731 texture_ref_.get(), GL_TEXTURE_BASE_LEVEL, 0, GL_NO_ERROR); 718 texture_ref_.get(), GL_TEXTURE_BASE_LEVEL, 0, GL_NO_ERROR);
732 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); 719 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
733 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
734 } 720 }
735 721
736 TEST_F(TextureMemoryTrackerTest, MarkMipmapsGenerated) { 722 TEST_F(TextureMemoryTrackerTest, MarkMipmapsGenerated) {
737 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); 723 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D);
738 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 64); 724 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 64);
739 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 725 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1,
740 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4)); 726 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4));
741 EXPECT_MEMORY_ALLOCATION_CHANGE(64, 0); 727 EXPECT_MEMORY_ALLOCATION_CHANGE(64, 0);
742 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 84); 728 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 84);
743 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get())); 729 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get()));
744 EXPECT_MEMORY_ALLOCATION_CHANGE(84, 0); 730 EXPECT_MEMORY_ALLOCATION_CHANGE(84, 0);
745 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0); 731 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0);
746 } 732 }
747 733
748 TEST_F(TextureTest, UnusedMips) { 734 TEST_F(TextureTest, UnusedMips) {
749 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); 735 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D);
750 Texture* texture = texture_ref_->texture(); 736 Texture* texture = texture_ref_->texture();
751 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); 737 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
752 // Set level zero to large size. 738 // Set level zero to large size.
753 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 739 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1,
754 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4)); 740 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4));
755 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get())); 741 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get()));
756 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 742 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
757 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 743 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
758 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); 744 EXPECT_TRUE(manager_->CanRender(texture_ref_.get()));
759 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
760 // Set level zero to large smaller (levels unused mips) 745 // Set level zero to large smaller (levels unused mips)
761 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 1, 746 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 1,
762 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(2, 2)); 747 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(2, 2));
763 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get())); 748 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get()));
764 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 749 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
765 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 750 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
766 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); 751 EXPECT_TRUE(manager_->CanRender(texture_ref_.get()));
767 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
768 // Set an unused level to some size 752 // Set an unused level to some size
769 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 4, GL_RGBA, 16, 16, 753 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 4, GL_RGBA, 16, 16,
770 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(16, 16)); 754 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(16, 16));
771 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 755 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
772 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 756 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
773 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); 757 EXPECT_TRUE(manager_->CanRender(texture_ref_.get()));
774 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
775 } 758 }
776 759
777 TEST_F(TextureTest, NPOT2D) { 760 TEST_F(TextureTest, NPOT2D) {
778 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); 761 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D);
779 Texture* texture = texture_ref_->texture(); 762 Texture* texture = texture_ref_->texture();
780 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); 763 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
781 // Check Setting level 0 to NPOT 764 // Check Setting level 0 to NPOT
782 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 4, 5, 1, 765 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 4, 5, 1,
783 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 5)); 766 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 5));
784 EXPECT_TRUE(TextureTestHelper::IsNPOT(texture)); 767 EXPECT_TRUE(TextureTestHelper::IsNPOT(texture));
785 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 768 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
786 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); 769 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get()));
787 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); 770 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
788 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
789 SetParameter( 771 SetParameter(
790 texture_ref_.get(), GL_TEXTURE_MIN_FILTER, GL_LINEAR, GL_NO_ERROR); 772 texture_ref_.get(), GL_TEXTURE_MIN_FILTER, GL_LINEAR, GL_NO_ERROR);
791 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); 773 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
792 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
793 SetParameter( 774 SetParameter(
794 texture_ref_.get(), GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE, GL_NO_ERROR); 775 texture_ref_.get(), GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE, GL_NO_ERROR);
795 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); 776 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
796 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
797 SetParameter( 777 SetParameter(
798 texture_ref_.get(), GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE, GL_NO_ERROR); 778 texture_ref_.get(), GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE, GL_NO_ERROR);
799 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); 779 EXPECT_TRUE(manager_->CanRender(texture_ref_.get()));
800 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
801 // Change it to POT. 780 // Change it to POT.
802 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 781 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1,
803 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4)); 782 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 4));
804 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 783 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
805 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 784 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
806 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); 785 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get()));
807 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
808 } 786 }
809 787
810 TEST_F(TextureTest, NPOT2DNPOTOK) { 788 TEST_F(TextureTest, NPOT2DNPOTOK) {
811 TestHelper::SetupFeatureInfoInitExpectations( 789 TestHelper::SetupFeatureInfoInitExpectations(
812 gl_.get(), "GL_OES_texture_npot"); 790 gl_.get(), "GL_OES_texture_npot");
813 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); 791 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo());
814 feature_info->InitializeForTesting(); 792 feature_info->InitializeForTesting();
815 TextureManager manager(NULL, 793 TextureManager manager(NULL,
816 feature_info.get(), 794 feature_info.get(),
817 kMaxTextureSize, 795 kMaxTextureSize,
818 kMaxCubeMapTextureSize, 796 kMaxCubeMapTextureSize,
819 kMaxRectangleTextureSize, 797 kMaxRectangleTextureSize,
820 kMax3DTextureSize, 798 kMax3DTextureSize,
821 kUseDefaultTextures); 799 kUseDefaultTextures);
822 manager.CreateTexture(kClient1Id, kService1Id); 800 manager.CreateTexture(kClient1Id, kService1Id);
823 TextureRef* texture_ref = manager.GetTexture(kClient1Id); 801 TextureRef* texture_ref = manager.GetTexture(kClient1Id);
824 ASSERT_TRUE(texture_ref != NULL); 802 ASSERT_TRUE(texture_ref != NULL);
825 Texture* texture = texture_ref->texture(); 803 Texture* texture = texture_ref->texture();
826 804
827 manager.SetTarget(texture_ref, GL_TEXTURE_2D); 805 manager.SetTarget(texture_ref, GL_TEXTURE_2D);
828 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); 806 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
829 // Check Setting level 0 to NPOT 807 // Check Setting level 0 to NPOT
830 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 4, 5, 1, 0, 808 manager.SetLevelInfo(texture_ref, GL_TEXTURE_2D, 0, GL_RGBA, 4, 5, 1, 0,
831 GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 5)); 809 GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 5));
832 EXPECT_TRUE(TextureTestHelper::IsNPOT(texture)); 810 EXPECT_TRUE(TextureTestHelper::IsNPOT(texture));
833 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 811 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
834 EXPECT_TRUE(manager.CanGenerateMipmaps(texture_ref)); 812 EXPECT_TRUE(manager.CanGenerateMipmaps(texture_ref));
835 EXPECT_FALSE(manager.CanRender(texture_ref)); 813 EXPECT_FALSE(manager.CanRender(texture_ref));
836 EXPECT_TRUE(manager.HaveUnrenderableTextures());
837 EXPECT_TRUE(manager.MarkMipmapsGenerated(texture_ref)); 814 EXPECT_TRUE(manager.MarkMipmapsGenerated(texture_ref));
838 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 815 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
839 EXPECT_TRUE(manager.CanRender(texture_ref)); 816 EXPECT_TRUE(manager.CanRender(texture_ref));
840 EXPECT_FALSE(manager.HaveUnrenderableTextures());
841 manager.Destroy(false); 817 manager.Destroy(false);
842 } 818 }
843 819
844 TEST_F(TextureTest, POTCubeMap) { 820 TEST_F(TextureTest, POTCubeMap) {
845 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_CUBE_MAP); 821 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_CUBE_MAP);
846 Texture* texture = texture_ref_->texture(); 822 Texture* texture = texture_ref_->texture();
847 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_CUBE_MAP), texture->target()); 823 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_CUBE_MAP), texture->target());
848 // Check Setting level 0 each face to POT 824 // Check Setting level 0 each face to POT
849 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, 825 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0,
850 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 826 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE,
851 gfx::Rect(4, 4)); 827 gfx::Rect(4, 4));
852 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 828 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
853 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 829 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
854 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); 830 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture));
855 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); 831 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get()));
856 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); 832 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
857 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
858 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, 833 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0,
859 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 834 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE,
860 gfx::Rect(4, 4)); 835 gfx::Rect(4, 4));
861 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 836 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
862 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 837 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
863 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); 838 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture));
864 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); 839 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get()));
865 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); 840 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
866 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
867 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, 841 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0,
868 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 842 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE,
869 gfx::Rect(4, 4)); 843 gfx::Rect(4, 4));
870 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 844 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
871 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 845 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
872 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); 846 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture));
873 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); 847 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get()));
874 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); 848 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
875 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
876 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, 849 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0,
877 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 850 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE,
878 gfx::Rect(4, 4)); 851 gfx::Rect(4, 4));
879 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 852 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
880 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 853 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
881 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); 854 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture));
882 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); 855 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
883 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); 856 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get()));
884 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
885 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, 857 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0,
886 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 858 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE,
887 gfx::Rect(4, 4)); 859 gfx::Rect(4, 4));
888 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 860 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
889 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 861 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
890 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); 862 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture));
891 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); 863 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get()));
892 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); 864 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
893 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
894 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, 865 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0,
895 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 866 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE,
896 gfx::Rect(4, 4)); 867 gfx::Rect(4, 4));
897 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 868 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
898 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 869 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
899 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); 870 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture));
900 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); 871 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get()));
901 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); 872 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
902 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
903 873
904 // Make mips. 874 // Make mips.
905 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get())); 875 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get()));
906 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 876 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
907 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); 877 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture));
908 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); 878 EXPECT_TRUE(manager_->CanRender(texture_ref_.get()));
909 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
910 879
911 // Change a mip. 880 // Change a mip.
912 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 1, 881 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 1,
913 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 882 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE,
914 gfx::Rect(4, 4)); 883 gfx::Rect(4, 4));
915 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 884 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
916 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 885 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
917 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); 886 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture));
918 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); 887 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get()));
919 // Set a level past the number of mips that would get generated. 888 // Set a level past the number of mips that would get generated.
(...skipping 22 matching lines...) Expand all
942 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_CUBE_MAP), texture->target()); 911 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_CUBE_MAP), texture->target());
943 // Check Setting level 0 each face to POT 912 // Check Setting level 0 each face to POT
944 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, 913 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0,
945 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 914 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE,
946 gfx::Rect(4, 4)); 915 gfx::Rect(4, 4));
947 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 916 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
948 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 917 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
949 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); 918 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture));
950 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); 919 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get()));
951 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); 920 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
952 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
953 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, 921 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0,
954 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 922 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE,
955 gfx::Rect(4, 4)); 923 gfx::Rect(4, 4));
956 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 924 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
957 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 925 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
958 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); 926 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture));
959 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); 927 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get()));
960 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); 928 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
961 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
962 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, 929 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0,
963 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 930 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE,
964 gfx::Rect(4, 4)); 931 gfx::Rect(4, 4));
965 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 932 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
966 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 933 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
967 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); 934 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture));
968 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); 935 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get()));
969 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); 936 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
970 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
971 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, 937 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0,
972 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 938 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE,
973 gfx::Rect(4, 4)); 939 gfx::Rect(4, 4));
974 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 940 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
975 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 941 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
976 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); 942 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture));
977 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); 943 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
978 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); 944 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get()));
979 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
980 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, 945 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0,
981 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 946 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE,
982 gfx::Rect(4, 4)); 947 gfx::Rect(4, 4));
983 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 948 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
984 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 949 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
985 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); 950 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture));
986 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get())); 951 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get()));
987 EXPECT_FALSE(manager_->CanRender(texture_ref_.get())); 952 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
988 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
989 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, 953 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0,
990 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 954 GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE,
991 gfx::Rect(4, 4)); 955 gfx::Rect(4, 4));
992 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 956 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
993 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 957 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
994 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); 958 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture));
995 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get())); 959 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get()));
996 EXPECT_TRUE(manager_->CanRender(texture_ref_.get())); 960 EXPECT_TRUE(manager_->CanRender(texture_ref_.get()));
997 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
998 } 961 }
999 962
1000 TEST_F(TextureTest, GetLevelSize) { 963 TEST_F(TextureTest, GetLevelSize) {
1001 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_3D); 964 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_3D);
1002 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_3D, 1, GL_RGBA, 4, 5, 6, 965 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_3D, 1, GL_RGBA, 4, 5, 6,
1003 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 5)); 966 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(4, 5));
1004 GLsizei width = -1; 967 GLsizei width = -1;
1005 GLsizei height = -1; 968 GLsizei height = -1;
1006 GLsizei depth = -1; 969 GLsizei depth = -1;
1007 Texture* texture = texture_ref_->texture(); 970 Texture* texture = texture_ref_->texture();
(...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after
1402 EXPECT_EQ(0, texture->num_uncleared_mips()); 1365 EXPECT_EQ(0, texture->num_uncleared_mips());
1403 } 1366 }
1404 1367
1405 TEST_F(TextureTest, UseDeletedTexture) { 1368 TEST_F(TextureTest, UseDeletedTexture) {
1406 static const GLuint kClient2Id = 2; 1369 static const GLuint kClient2Id = 2;
1407 static const GLuint kService2Id = 12; 1370 static const GLuint kService2Id = 12;
1408 // Make the default texture renderable 1371 // Make the default texture renderable
1409 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); 1372 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D);
1410 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 1373 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1,
1411 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect()); 1374 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect());
1412 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
1413 // Make a new texture 1375 // Make a new texture
1414 manager_->CreateTexture(kClient2Id, kService2Id); 1376 manager_->CreateTexture(kClient2Id, kService2Id);
1415 scoped_refptr<TextureRef> texture_ref( 1377 scoped_refptr<TextureRef> texture_ref(
1416 manager_->GetTexture(kClient2Id)); 1378 manager_->GetTexture(kClient2Id));
1417 manager_->SetTarget(texture_ref.get(), GL_TEXTURE_2D); 1379 manager_->SetTarget(texture_ref.get(), GL_TEXTURE_2D);
1418 EXPECT_FALSE(manager_->CanRender(texture_ref.get())); 1380 EXPECT_FALSE(manager_->CanRender(texture_ref.get()));
1419 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
1420 // Remove it. 1381 // Remove it.
1421 manager_->RemoveTexture(kClient2Id); 1382 manager_->RemoveTexture(kClient2Id);
1422 EXPECT_FALSE(manager_->CanRender(texture_ref.get())); 1383 EXPECT_FALSE(manager_->CanRender(texture_ref.get()));
1423 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
1424 // Check that we can still manipulate it and it effects the manager. 1384 // Check that we can still manipulate it and it effects the manager.
1425 manager_->SetLevelInfo(texture_ref.get(), GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 1385 manager_->SetLevelInfo(texture_ref.get(), GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1,
1426 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect()); 1386 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect());
1427 EXPECT_TRUE(manager_->CanRender(texture_ref.get())); 1387 EXPECT_TRUE(manager_->CanRender(texture_ref.get()));
1428 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
1429 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService2Id))) 1388 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService2Id)))
1430 .Times(1) 1389 .Times(1)
1431 .RetiresOnSaturation(); 1390 .RetiresOnSaturation();
1432 texture_ref = NULL; 1391 texture_ref = NULL;
1433 } 1392 }
1434 1393
1435 TEST_F(TextureTest, GetLevelImage) { 1394 TEST_F(TextureTest, GetLevelImage) {
1436 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D); 1395 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D);
1437 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 1, 1396 manager_->SetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 1,
1438 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(2, 2)); 1397 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect(2, 2));
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after
1931 1890
1932 EXPECT_CALL(*gl_, DeleteTextures(1, _)) 1891 EXPECT_CALL(*gl_, DeleteTextures(1, _))
1933 .Times(1) 1892 .Times(1)
1934 .RetiresOnSaturation(); 1893 .RetiresOnSaturation();
1935 ref2 = NULL; 1894 ref2 = NULL;
1936 texture_manager2_->RemoveTexture(20); 1895 texture_manager2_->RemoveTexture(20);
1937 testing::Mock::VerifyAndClearExpectations(gl_.get()); 1896 testing::Mock::VerifyAndClearExpectations(gl_.get());
1938 } 1897 }
1939 1898
1940 TEST_F(SharedTextureTest, TextureSafetyAccounting) { 1899 TEST_F(SharedTextureTest, TextureSafetyAccounting) {
1941 EXPECT_FALSE(texture_manager1_->HaveUnrenderableTextures());
1942 EXPECT_FALSE(texture_manager1_->HaveUnsafeTextures()); 1900 EXPECT_FALSE(texture_manager1_->HaveUnsafeTextures());
1943 EXPECT_FALSE(texture_manager1_->HaveUnclearedMips()); 1901 EXPECT_FALSE(texture_manager1_->HaveUnclearedMips());
1944 EXPECT_FALSE(texture_manager2_->HaveUnrenderableTextures());
1945 EXPECT_FALSE(texture_manager2_->HaveUnsafeTextures()); 1902 EXPECT_FALSE(texture_manager2_->HaveUnsafeTextures());
1946 EXPECT_FALSE(texture_manager2_->HaveUnclearedMips()); 1903 EXPECT_FALSE(texture_manager2_->HaveUnclearedMips());
1947 1904
1948 // Newly created texture is renderable. 1905 // Newly created texture is renderable.
1949 scoped_refptr<TextureRef> ref1 = texture_manager1_->CreateTexture(10, 10); 1906 scoped_refptr<TextureRef> ref1 = texture_manager1_->CreateTexture(10, 10);
1950 EXPECT_FALSE(texture_manager1_->HaveUnrenderableTextures());
1951 EXPECT_FALSE(texture_manager1_->HaveUnsafeTextures()); 1907 EXPECT_FALSE(texture_manager1_->HaveUnsafeTextures());
1952 EXPECT_FALSE(texture_manager1_->HaveUnclearedMips()); 1908 EXPECT_FALSE(texture_manager1_->HaveUnclearedMips());
1953 1909
1954 // Associate new texture ref to other texture manager, should account for it 1910 // Associate new texture ref to other texture manager, should account for it
1955 // too. 1911 // too.
1956 scoped_refptr<TextureRef> ref2 = 1912 scoped_refptr<TextureRef> ref2 =
1957 texture_manager2_->Consume(20, ref1->texture()); 1913 texture_manager2_->Consume(20, ref1->texture());
1958 EXPECT_FALSE(texture_manager2_->HaveUnrenderableTextures());
1959 EXPECT_FALSE(texture_manager2_->HaveUnsafeTextures()); 1914 EXPECT_FALSE(texture_manager2_->HaveUnsafeTextures());
1960 EXPECT_FALSE(texture_manager2_->HaveUnclearedMips()); 1915 EXPECT_FALSE(texture_manager2_->HaveUnclearedMips());
1961 1916
1962 // Make texture renderable but uncleared on one texture manager, should affect 1917 // Make texture renderable but uncleared on one texture manager, should affect
1963 // other one. 1918 // other one.
1964 texture_manager1_->SetTarget(ref1.get(), GL_TEXTURE_2D); 1919 texture_manager1_->SetTarget(ref1.get(), GL_TEXTURE_2D);
1965 EXPECT_TRUE(texture_manager1_->HaveUnrenderableTextures());
1966 EXPECT_FALSE(texture_manager1_->HaveUnsafeTextures()); 1920 EXPECT_FALSE(texture_manager1_->HaveUnsafeTextures());
1967 EXPECT_FALSE(texture_manager1_->HaveUnclearedMips()); 1921 EXPECT_FALSE(texture_manager1_->HaveUnclearedMips());
1968 EXPECT_TRUE(texture_manager2_->HaveUnrenderableTextures());
1969 EXPECT_FALSE(texture_manager2_->HaveUnsafeTextures()); 1922 EXPECT_FALSE(texture_manager2_->HaveUnsafeTextures());
1970 EXPECT_FALSE(texture_manager2_->HaveUnclearedMips()); 1923 EXPECT_FALSE(texture_manager2_->HaveUnclearedMips());
1971 1924
1972 texture_manager1_->SetLevelInfo(ref1.get(), GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1925 texture_manager1_->SetLevelInfo(ref1.get(), GL_TEXTURE_2D, 0, GL_RGBA, 1, 1,
1973 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect()); 1926 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, gfx::Rect());
1974 EXPECT_FALSE(texture_manager1_->HaveUnrenderableTextures());
1975 EXPECT_TRUE(texture_manager1_->HaveUnsafeTextures()); 1927 EXPECT_TRUE(texture_manager1_->HaveUnsafeTextures());
1976 EXPECT_TRUE(texture_manager1_->HaveUnclearedMips()); 1928 EXPECT_TRUE(texture_manager1_->HaveUnclearedMips());
1977 EXPECT_FALSE(texture_manager2_->HaveUnrenderableTextures());
1978 EXPECT_TRUE(texture_manager2_->HaveUnsafeTextures()); 1929 EXPECT_TRUE(texture_manager2_->HaveUnsafeTextures());
1979 EXPECT_TRUE(texture_manager2_->HaveUnclearedMips()); 1930 EXPECT_TRUE(texture_manager2_->HaveUnclearedMips());
1980 1931
1981 // Make texture cleared on one texture manager, should affect other one. 1932 // Make texture cleared on one texture manager, should affect other one.
1982 texture_manager1_->SetLevelCleared(ref1.get(), GL_TEXTURE_2D, 0, true); 1933 texture_manager1_->SetLevelCleared(ref1.get(), GL_TEXTURE_2D, 0, true);
1983 EXPECT_FALSE(texture_manager1_->HaveUnsafeTextures()); 1934 EXPECT_FALSE(texture_manager1_->HaveUnsafeTextures());
1984 EXPECT_FALSE(texture_manager1_->HaveUnclearedMips()); 1935 EXPECT_FALSE(texture_manager1_->HaveUnclearedMips());
1985 EXPECT_FALSE(texture_manager2_->HaveUnsafeTextures()); 1936 EXPECT_FALSE(texture_manager2_->HaveUnsafeTextures());
1986 EXPECT_FALSE(texture_manager2_->HaveUnclearedMips()); 1937 EXPECT_FALSE(texture_manager2_->HaveUnclearedMips());
1987 1938
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after
2378 ExpectValid(GL_DEPTH_COMPONENT, GL_FLOAT, GL_DEPTH_COMPONENT32F); 2329 ExpectValid(GL_DEPTH_COMPONENT, GL_FLOAT, GL_DEPTH_COMPONENT32F);
2379 ExpectValid(GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH24_STENCIL8); 2330 ExpectValid(GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH24_STENCIL8);
2380 ExpectValid(GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV, 2331 ExpectValid(GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV,
2381 GL_DEPTH32F_STENCIL8); 2332 GL_DEPTH32F_STENCIL8);
2382 2333
2383 ExpectInvalid(GL_RGB_INTEGER, GL_INT, GL_RGBA8); 2334 ExpectInvalid(GL_RGB_INTEGER, GL_INT, GL_RGBA8);
2384 } 2335 }
2385 2336
2386 } // namespace gles2 2337 } // namespace gles2
2387 } // namespace gpu 2338 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698