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

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

Powered by Google App Engine
This is Rietveld 408576698