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

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

Issue 16293004: Update gpu/ to use scoped_refptr<T>::get() rather than implicit "operator T*" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 7 years, 6 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 | Annotate | Revision Log
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 "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "gpu/command_buffer/service/error_state_mock.h" 8 #include "gpu/command_buffer/service/error_state_mock.h"
9 #include "gpu/command_buffer/service/feature_info.h" 9 #include "gpu/command_buffer/service/feature_info.h"
10 #include "gpu/command_buffer/service/framebuffer_manager.h" 10 #include "gpu/command_buffer/service/framebuffer_manager.h"
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 const GLuint kClient1Id = 1; 103 const GLuint kClient1Id = 1;
104 const GLuint kService1Id = 11; 104 const GLuint kService1Id = 11;
105 const GLuint kClient2Id = 2; 105 const GLuint kClient2Id = 2;
106 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); 106 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
107 EXPECT_FALSE(manager_->HaveUnsafeTextures()); 107 EXPECT_FALSE(manager_->HaveUnsafeTextures());
108 EXPECT_FALSE(manager_->HaveUnclearedMips()); 108 EXPECT_FALSE(manager_->HaveUnclearedMips());
109 // Check we can create texture. 109 // Check we can create texture.
110 manager_->CreateTexture(kClient1Id, kService1Id); 110 manager_->CreateTexture(kClient1Id, kService1Id);
111 // Check texture got created. 111 // Check texture got created.
112 scoped_refptr<TextureRef> texture = manager_->GetTexture(kClient1Id); 112 scoped_refptr<TextureRef> texture = manager_->GetTexture(kClient1Id);
113 ASSERT_TRUE(texture != NULL); 113 ASSERT_TRUE(texture.get() != NULL);
114 EXPECT_EQ(kService1Id, texture->service_id()); 114 EXPECT_EQ(kService1Id, texture->service_id());
115 EXPECT_EQ(kClient1Id, texture->client_id()); 115 EXPECT_EQ(kClient1Id, texture->client_id());
116 EXPECT_EQ(texture->texture(), manager_->GetTextureForServiceId( 116 EXPECT_EQ(texture->texture(), manager_->GetTextureForServiceId(
117 texture->service_id())); 117 texture->service_id()));
118 // Check we get nothing for a non-existent texture. 118 // Check we get nothing for a non-existent texture.
119 EXPECT_TRUE(manager_->GetTexture(kClient2Id) == NULL); 119 EXPECT_TRUE(manager_->GetTexture(kClient2Id) == NULL);
120 // Check trying to a remove non-existent textures does not crash. 120 // Check trying to a remove non-existent textures does not crash.
121 manager_->RemoveTexture(kClient2Id); 121 manager_->RemoveTexture(kClient2Id);
122 // Check that it gets deleted when the last reference is released. 122 // Check that it gets deleted when the last reference is released.
123 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id))) 123 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService1Id)))
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 class TextureMemoryTrackerTest : public TextureTestBase { 437 class TextureMemoryTrackerTest : public TextureTestBase {
438 protected: 438 protected:
439 virtual void SetUp() { 439 virtual void SetUp() {
440 mock_memory_tracker_ = new StrictMock<MockMemoryTracker>(); 440 mock_memory_tracker_ = new StrictMock<MockMemoryTracker>();
441 SetUpBase(mock_memory_tracker_.get(), std::string()); 441 SetUpBase(mock_memory_tracker_.get(), std::string());
442 } 442 }
443 443
444 scoped_refptr<MockMemoryTracker> mock_memory_tracker_; 444 scoped_refptr<MockMemoryTracker> mock_memory_tracker_;
445 }; 445 };
446 446
447 #define EXPECT_MEMORY_ALLOCATION_CHANGE(old_size, new_size, pool) \ 447 #define EXPECT_MEMORY_ALLOCATION_CHANGE(old_size, new_size, pool) \
448 EXPECT_CALL(*mock_memory_tracker_, \ 448 EXPECT_CALL(*mock_memory_tracker_.get(), \
449 TrackMemoryAllocatedChange(old_size, new_size, pool)) \ 449 TrackMemoryAllocatedChange(old_size, new_size, pool)) \
450 .Times(1) \ 450 .Times(1).RetiresOnSaturation()
451 .RetiresOnSaturation() \
452 451
453 TEST_F(TextureTest, Basic) { 452 TEST_F(TextureTest, Basic) {
454 Texture* texture = texture_ref_->texture(); 453 Texture* texture = texture_ref_->texture();
455 EXPECT_EQ(0u, texture->target()); 454 EXPECT_EQ(0u, texture->target());
456 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 455 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
457 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); 456 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture));
458 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_)); 457 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get()));
459 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 458 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
460 EXPECT_EQ(0, texture->num_uncleared_mips()); 459 EXPECT_EQ(0, texture->num_uncleared_mips());
461 EXPECT_TRUE(manager_->CanRender(texture_ref_)); 460 EXPECT_TRUE(manager_->CanRender(texture_ref_.get()));
462 EXPECT_TRUE(texture->SafeToRenderFrom()); 461 EXPECT_TRUE(texture->SafeToRenderFrom());
463 EXPECT_FALSE(texture->IsImmutable()); 462 EXPECT_FALSE(texture->IsImmutable());
464 EXPECT_EQ(static_cast<GLenum>(GL_NEAREST_MIPMAP_LINEAR), 463 EXPECT_EQ(static_cast<GLenum>(GL_NEAREST_MIPMAP_LINEAR),
465 texture->min_filter()); 464 texture->min_filter());
466 EXPECT_EQ(static_cast<GLenum>(GL_LINEAR), texture->mag_filter()); 465 EXPECT_EQ(static_cast<GLenum>(GL_LINEAR), texture->mag_filter());
467 EXPECT_EQ(static_cast<GLenum>(GL_REPEAT), texture->wrap_s()); 466 EXPECT_EQ(static_cast<GLenum>(GL_REPEAT), texture->wrap_s());
468 EXPECT_EQ(static_cast<GLenum>(GL_REPEAT), texture->wrap_t()); 467 EXPECT_EQ(static_cast<GLenum>(GL_REPEAT), texture->wrap_t());
469 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); 468 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
470 EXPECT_FALSE(manager_->HaveUnsafeTextures()); 469 EXPECT_FALSE(manager_->HaveUnsafeTextures());
471 EXPECT_EQ(0u, texture->estimated_size()); 470 EXPECT_EQ(0u, texture->estimated_size());
472 } 471 }
473 472
474 TEST_F(TextureTest, SetTargetTexture2D) { 473 TEST_F(TextureTest, SetTargetTexture2D) {
475 Texture* texture = texture_ref_->texture(); 474 Texture* texture = texture_ref_->texture();
476 manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); 475 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D);
477 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 476 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
478 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); 477 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture));
479 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_)); 478 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get()));
480 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 479 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
481 EXPECT_FALSE(manager_->CanRender(texture_ref_)); 480 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
482 EXPECT_TRUE(texture->SafeToRenderFrom()); 481 EXPECT_TRUE(texture->SafeToRenderFrom());
483 EXPECT_FALSE(texture->IsImmutable()); 482 EXPECT_FALSE(texture->IsImmutable());
484 } 483 }
485 484
486 TEST_F(TextureTest, SetTargetTextureExternalOES) { 485 TEST_F(TextureTest, SetTargetTextureExternalOES) {
487 Texture* texture = texture_ref_->texture(); 486 Texture* texture = texture_ref_->texture();
488 manager_->SetTarget(texture_ref_, GL_TEXTURE_EXTERNAL_OES); 487 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_EXTERNAL_OES);
489 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 488 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
490 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); 489 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture));
491 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_)); 490 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get()));
492 EXPECT_TRUE(TextureTestHelper::IsNPOT(texture)); 491 EXPECT_TRUE(TextureTestHelper::IsNPOT(texture));
493 EXPECT_FALSE(manager_->CanRender(texture_ref_)); 492 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
494 EXPECT_TRUE(texture->SafeToRenderFrom()); 493 EXPECT_TRUE(texture->SafeToRenderFrom());
495 EXPECT_TRUE(texture->IsImmutable()); 494 EXPECT_TRUE(texture->IsImmutable());
496 manager_->SetStreamTexture(texture_ref_, true); 495 manager_->SetStreamTexture(texture_ref_.get(), true);
497 EXPECT_TRUE(manager_->CanRender(texture_ref_)); 496 EXPECT_TRUE(manager_->CanRender(texture_ref_.get()));
498 } 497 }
499 498
500 TEST_F(TextureTest, ZeroSizeCanNotRender) { 499 TEST_F(TextureTest, ZeroSizeCanNotRender) {
501 manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); 500 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D);
502 EXPECT_FALSE(manager_->CanRender(texture_ref_)); 501 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
503 manager_->SetLevelInfo(texture_ref_, 502 manager_->SetLevelInfo(texture_ref_.get(),
504 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 503 GL_TEXTURE_2D,
505 EXPECT_TRUE(manager_->CanRender(texture_ref_)); 504 0,
506 manager_->SetLevelInfo(texture_ref_, 505 GL_RGBA,
507 GL_TEXTURE_2D, 0, GL_RGBA, 0, 0, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 506 1,
508 EXPECT_FALSE(manager_->CanRender(texture_ref_)); 507 1,
508 1,
509 0,
510 GL_RGBA,
511 GL_UNSIGNED_BYTE,
512 true);
513 EXPECT_TRUE(manager_->CanRender(texture_ref_.get()));
514 manager_->SetLevelInfo(texture_ref_.get(),
515 GL_TEXTURE_2D,
516 0,
517 GL_RGBA,
518 0,
519 0,
520 1,
521 0,
522 GL_RGBA,
523 GL_UNSIGNED_BYTE,
524 true);
525 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
509 } 526 }
510 527
511 TEST_F(TextureTest, EstimatedSize) { 528 TEST_F(TextureTest, EstimatedSize) {
512 manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); 529 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D);
513 manager_->SetLevelInfo(texture_ref_, 530 manager_->SetLevelInfo(texture_ref_.get(),
514 GL_TEXTURE_2D, 0, GL_RGBA, 8, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 531 GL_TEXTURE_2D,
532 0,
533 GL_RGBA,
534 8,
535 4,
536 1,
537 0,
538 GL_RGBA,
539 GL_UNSIGNED_BYTE,
540 true);
515 EXPECT_EQ(8u * 4u * 4u, texture_ref_->texture()->estimated_size()); 541 EXPECT_EQ(8u * 4u * 4u, texture_ref_->texture()->estimated_size());
516 manager_->SetLevelInfo(texture_ref_, 542 manager_->SetLevelInfo(texture_ref_.get(),
517 GL_TEXTURE_2D, 2, GL_RGBA, 8, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 543 GL_TEXTURE_2D,
544 2,
545 GL_RGBA,
546 8,
547 4,
548 1,
549 0,
550 GL_RGBA,
551 GL_UNSIGNED_BYTE,
552 true);
518 EXPECT_EQ(8u * 4u * 4u * 2u, texture_ref_->texture()->estimated_size()); 553 EXPECT_EQ(8u * 4u * 4u * 2u, texture_ref_->texture()->estimated_size());
519 } 554 }
520 555
521 TEST_F(TextureMemoryTrackerTest, EstimatedSize) { 556 TEST_F(TextureMemoryTrackerTest, EstimatedSize) {
522 manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); 557 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D);
523 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 128, MemoryTracker::kUnmanaged); 558 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 128, MemoryTracker::kUnmanaged);
524 manager_->SetLevelInfo(texture_ref_, 559 manager_->SetLevelInfo(texture_ref_.get(),
525 GL_TEXTURE_2D, 0, GL_RGBA, 8, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 560 GL_TEXTURE_2D,
561 0,
562 GL_RGBA,
563 8,
564 4,
565 1,
566 0,
567 GL_RGBA,
568 GL_UNSIGNED_BYTE,
569 true);
526 EXPECT_MEMORY_ALLOCATION_CHANGE(128, 0, MemoryTracker::kUnmanaged); 570 EXPECT_MEMORY_ALLOCATION_CHANGE(128, 0, MemoryTracker::kUnmanaged);
527 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 256, MemoryTracker::kUnmanaged); 571 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 256, MemoryTracker::kUnmanaged);
528 manager_->SetLevelInfo(texture_ref_, 572 manager_->SetLevelInfo(texture_ref_.get(),
529 GL_TEXTURE_2D, 2, GL_RGBA, 8, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 573 GL_TEXTURE_2D,
574 2,
575 GL_RGBA,
576 8,
577 4,
578 1,
579 0,
580 GL_RGBA,
581 GL_UNSIGNED_BYTE,
582 true);
530 // Add expectation for texture deletion. 583 // Add expectation for texture deletion.
531 EXPECT_MEMORY_ALLOCATION_CHANGE(256, 0, MemoryTracker::kUnmanaged); 584 EXPECT_MEMORY_ALLOCATION_CHANGE(256, 0, MemoryTracker::kUnmanaged);
532 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0, MemoryTracker::kUnmanaged); 585 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0, MemoryTracker::kUnmanaged);
533 } 586 }
534 587
535 TEST_F(TextureMemoryTrackerTest, SetParameterPool) { 588 TEST_F(TextureMemoryTrackerTest, SetParameterPool) {
536 manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); 589 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D);
537 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 128, MemoryTracker::kUnmanaged); 590 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 128, MemoryTracker::kUnmanaged);
538 manager_->SetLevelInfo(texture_ref_, 591 manager_->SetLevelInfo(texture_ref_.get(),
539 GL_TEXTURE_2D, 0, GL_RGBA, 8, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 592 GL_TEXTURE_2D,
593 0,
594 GL_RGBA,
595 8,
596 4,
597 1,
598 0,
599 GL_RGBA,
600 GL_UNSIGNED_BYTE,
601 true);
540 EXPECT_MEMORY_ALLOCATION_CHANGE(128, 0, MemoryTracker::kUnmanaged); 602 EXPECT_MEMORY_ALLOCATION_CHANGE(128, 0, MemoryTracker::kUnmanaged);
541 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 128, MemoryTracker::kManaged); 603 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 128, MemoryTracker::kManaged);
542 SetParameter( 604 SetParameter(texture_ref_.get(),
543 texture_ref_, GL_TEXTURE_POOL_CHROMIUM, GL_TEXTURE_POOL_MANAGED_CHROMIUM, 605 GL_TEXTURE_POOL_CHROMIUM,
544 GL_NO_ERROR); 606 GL_TEXTURE_POOL_MANAGED_CHROMIUM,
607 GL_NO_ERROR);
545 // Add expectation for texture deletion. 608 // Add expectation for texture deletion.
546 EXPECT_MEMORY_ALLOCATION_CHANGE(128, 0, MemoryTracker::kManaged); 609 EXPECT_MEMORY_ALLOCATION_CHANGE(128, 0, MemoryTracker::kManaged);
547 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0, MemoryTracker::kUnmanaged); 610 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0, MemoryTracker::kUnmanaged);
548 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0, MemoryTracker::kManaged); 611 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0, MemoryTracker::kManaged);
549 } 612 }
550 613
551 TEST_F(TextureTest, POT2D) { 614 TEST_F(TextureTest, POT2D) {
552 manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); 615 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D);
553 Texture* texture = texture_ref_->texture(); 616 Texture* texture = texture_ref_->texture();
554 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); 617 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
555 // Check Setting level 0 to POT 618 // Check Setting level 0 to POT
556 manager_->SetLevelInfo(texture_ref_, 619 manager_->SetLevelInfo(texture_ref_.get(),
557 GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 620 GL_TEXTURE_2D,
558 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 621 0,
559 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 622 GL_RGBA,
560 EXPECT_FALSE(manager_->CanRender(texture_ref_)); 623 4,
624 4,
625 1,
626 0,
627 GL_RGBA,
628 GL_UNSIGNED_BYTE,
629 true);
630 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
631 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
632 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
561 EXPECT_EQ(0, texture->num_uncleared_mips()); 633 EXPECT_EQ(0, texture->num_uncleared_mips());
562 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); 634 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
563 // Set filters to something that will work with a single mip. 635 // Set filters to something that will work with a single mip.
564 SetParameter(texture_ref_, GL_TEXTURE_MIN_FILTER, GL_LINEAR, GL_NO_ERROR); 636 SetParameter(
565 EXPECT_TRUE(manager_->CanRender(texture_ref_)); 637 texture_ref_.get(), GL_TEXTURE_MIN_FILTER, GL_LINEAR, GL_NO_ERROR);
638 EXPECT_TRUE(manager_->CanRender(texture_ref_.get()));
566 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); 639 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
567 // Set them back. 640 // Set them back.
568 SetParameter(texture_ref_, GL_TEXTURE_MIN_FILTER, 641 SetParameter(texture_ref_.get(),
569 GL_LINEAR_MIPMAP_LINEAR, GL_NO_ERROR); 642 GL_TEXTURE_MIN_FILTER,
570 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); 643 GL_LINEAR_MIPMAP_LINEAR,
571 644 GL_NO_ERROR);
572 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_)); 645 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
646
647 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get()));
573 // Make mips. 648 // Make mips.
574 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_)); 649 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get()));
575 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 650 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
576 EXPECT_TRUE(manager_->CanRender(texture_ref_)); 651 EXPECT_TRUE(manager_->CanRender(texture_ref_.get()));
577 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); 652 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
578 // Change a mip. 653 // Change a mip.
579 manager_->SetLevelInfo(texture_ref_, 654 manager_->SetLevelInfo(texture_ref_.get(),
580 GL_TEXTURE_2D, 1, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 655 GL_TEXTURE_2D,
581 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 656 1,
582 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 657 GL_RGBA,
583 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_)); 658 4,
584 EXPECT_FALSE(manager_->CanRender(texture_ref_)); 659 4,
660 1,
661 0,
662 GL_RGBA,
663 GL_UNSIGNED_BYTE,
664 true);
665 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
666 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
667 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get()));
668 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
585 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); 669 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
586 // Set a level past the number of mips that would get generated. 670 // Set a level past the number of mips that would get generated.
587 manager_->SetLevelInfo(texture_ref_, 671 manager_->SetLevelInfo(texture_ref_.get(),
588 GL_TEXTURE_2D, 3, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 672 GL_TEXTURE_2D,
589 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_)); 673 3,
674 GL_RGBA,
675 4,
676 4,
677 1,
678 0,
679 GL_RGBA,
680 GL_UNSIGNED_BYTE,
681 true);
682 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get()));
590 // Make mips. 683 // Make mips.
591 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_)); 684 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get()));
592 EXPECT_TRUE(manager_->CanRender(texture_ref_)); 685 EXPECT_TRUE(manager_->CanRender(texture_ref_.get()));
593 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 686 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
594 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); 687 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
595 } 688 }
596 689
597 TEST_F(TextureMemoryTrackerTest, MarkMipmapsGenerated) { 690 TEST_F(TextureMemoryTrackerTest, MarkMipmapsGenerated) {
598 manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); 691 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D);
599 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 64, MemoryTracker::kUnmanaged); 692 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 64, MemoryTracker::kUnmanaged);
600 manager_->SetLevelInfo(texture_ref_, 693 manager_->SetLevelInfo(texture_ref_.get(),
601 GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 694 GL_TEXTURE_2D,
695 0,
696 GL_RGBA,
697 4,
698 4,
699 1,
700 0,
701 GL_RGBA,
702 GL_UNSIGNED_BYTE,
703 true);
602 EXPECT_MEMORY_ALLOCATION_CHANGE(64, 0, MemoryTracker::kUnmanaged); 704 EXPECT_MEMORY_ALLOCATION_CHANGE(64, 0, MemoryTracker::kUnmanaged);
603 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 84, MemoryTracker::kUnmanaged); 705 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 84, MemoryTracker::kUnmanaged);
604 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_)); 706 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get()));
605 EXPECT_MEMORY_ALLOCATION_CHANGE(84, 0, MemoryTracker::kUnmanaged); 707 EXPECT_MEMORY_ALLOCATION_CHANGE(84, 0, MemoryTracker::kUnmanaged);
606 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0, MemoryTracker::kUnmanaged); 708 EXPECT_MEMORY_ALLOCATION_CHANGE(0, 0, MemoryTracker::kUnmanaged);
607 } 709 }
608 710
609 TEST_F(TextureTest, UnusedMips) { 711 TEST_F(TextureTest, UnusedMips) {
610 manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); 712 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D);
611 Texture* texture = texture_ref_->texture(); 713 Texture* texture = texture_ref_->texture();
612 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); 714 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
613 // Set level zero to large size. 715 // Set level zero to large size.
614 manager_->SetLevelInfo(texture_ref_, 716 manager_->SetLevelInfo(texture_ref_.get(),
615 GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 717 GL_TEXTURE_2D,
616 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_)); 718 0,
617 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 719 GL_RGBA,
618 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 720 4,
619 EXPECT_TRUE(manager_->CanRender(texture_ref_)); 721 4,
722 1,
723 0,
724 GL_RGBA,
725 GL_UNSIGNED_BYTE,
726 true);
727 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get()));
728 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
729 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
730 EXPECT_TRUE(manager_->CanRender(texture_ref_.get()));
620 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); 731 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
621 // Set level zero to large smaller (levels unused mips) 732 // Set level zero to large smaller (levels unused mips)
622 manager_->SetLevelInfo(texture_ref_, 733 manager_->SetLevelInfo(texture_ref_.get(),
623 GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 734 GL_TEXTURE_2D,
624 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_)); 735 0,
625 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 736 GL_RGBA,
626 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 737 2,
627 EXPECT_TRUE(manager_->CanRender(texture_ref_)); 738 2,
739 1,
740 0,
741 GL_RGBA,
742 GL_UNSIGNED_BYTE,
743 true);
744 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get()));
745 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
746 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
747 EXPECT_TRUE(manager_->CanRender(texture_ref_.get()));
628 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); 748 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
629 // Set an unused level to some size 749 // Set an unused level to some size
630 manager_->SetLevelInfo(texture_ref_, 750 manager_->SetLevelInfo(texture_ref_.get(),
631 GL_TEXTURE_2D, 4, GL_RGBA, 16, 16, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 751 GL_TEXTURE_2D,
632 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 752 4,
633 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 753 GL_RGBA,
634 EXPECT_TRUE(manager_->CanRender(texture_ref_)); 754 16,
755 16,
756 1,
757 0,
758 GL_RGBA,
759 GL_UNSIGNED_BYTE,
760 true);
761 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
762 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
763 EXPECT_TRUE(manager_->CanRender(texture_ref_.get()));
635 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); 764 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
636 } 765 }
637 766
638 TEST_F(TextureTest, NPOT2D) { 767 TEST_F(TextureTest, NPOT2D) {
639 manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); 768 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D);
640 Texture* texture = texture_ref_->texture(); 769 Texture* texture = texture_ref_->texture();
641 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); 770 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
642 // Check Setting level 0 to NPOT 771 // Check Setting level 0 to NPOT
643 manager_->SetLevelInfo(texture_ref_, 772 manager_->SetLevelInfo(texture_ref_.get(),
644 GL_TEXTURE_2D, 0, GL_RGBA, 4, 5, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 773 GL_TEXTURE_2D,
774 0,
775 GL_RGBA,
776 4,
777 5,
778 1,
779 0,
780 GL_RGBA,
781 GL_UNSIGNED_BYTE,
782 true);
645 EXPECT_TRUE(TextureTestHelper::IsNPOT(texture)); 783 EXPECT_TRUE(TextureTestHelper::IsNPOT(texture));
646 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 784 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
647 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_)); 785 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get()));
648 EXPECT_FALSE(manager_->CanRender(texture_ref_)); 786 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
649 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); 787 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
650 SetParameter(texture_ref_, GL_TEXTURE_MIN_FILTER, GL_LINEAR, GL_NO_ERROR); 788 SetParameter(
651 EXPECT_FALSE(manager_->CanRender(texture_ref_)); 789 texture_ref_.get(), GL_TEXTURE_MIN_FILTER, GL_LINEAR, GL_NO_ERROR);
652 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); 790 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
653 SetParameter(texture_ref_, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE, GL_NO_ERROR); 791 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
654 EXPECT_FALSE(manager_->CanRender(texture_ref_)); 792 SetParameter(
655 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); 793 texture_ref_.get(), GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE, GL_NO_ERROR);
656 SetParameter(texture_ref_, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE, GL_NO_ERROR); 794 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
657 EXPECT_TRUE(manager_->CanRender(texture_ref_)); 795 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
796 SetParameter(
797 texture_ref_.get(), GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE, GL_NO_ERROR);
798 EXPECT_TRUE(manager_->CanRender(texture_ref_.get()));
658 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); 799 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
659 // Change it to POT. 800 // Change it to POT.
660 manager_->SetLevelInfo(texture_ref_, 801 manager_->SetLevelInfo(texture_ref_.get(),
661 GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 802 GL_TEXTURE_2D,
662 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 803 0,
663 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 804 GL_RGBA,
664 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_)); 805 4,
665 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); 806 4,
666 } 807 1,
667 808 0,
809 GL_RGBA,
810 GL_UNSIGNED_BYTE,
811 true);
812 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
813 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
814 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get()));
815 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
816 }
817
668 TEST_F(TextureTest, NPOT2DNPOTOK) { 818 TEST_F(TextureTest, NPOT2DNPOTOK) {
669 TestHelper::SetupFeatureInfoInitExpectations( 819 TestHelper::SetupFeatureInfoInitExpectations(
670 gl_.get(), "GL_OES_texture_npot"); 820 gl_.get(), "GL_OES_texture_npot");
671 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo()); 821 scoped_refptr<FeatureInfo> feature_info(new FeatureInfo());
672 feature_info->Initialize(NULL); 822 feature_info->Initialize(NULL);
673 TextureManager manager( 823 TextureManager manager(
674 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize); 824 NULL, feature_info.get(), kMaxTextureSize, kMaxCubeMapTextureSize);
675 manager.CreateTexture(kClient1Id, kService1Id); 825 manager.CreateTexture(kClient1Id, kService1Id);
676 TextureRef* texture_ref = manager.GetTexture(kClient1Id); 826 TextureRef* texture_ref = manager.GetTexture(kClient1Id);
677 ASSERT_TRUE(texture_ref != NULL); 827 ASSERT_TRUE(texture_ref != NULL);
(...skipping 10 matching lines...) Expand all
688 EXPECT_FALSE(manager.CanRender(texture_ref)); 838 EXPECT_FALSE(manager.CanRender(texture_ref));
689 EXPECT_TRUE(manager.HaveUnrenderableTextures()); 839 EXPECT_TRUE(manager.HaveUnrenderableTextures());
690 EXPECT_TRUE(manager.MarkMipmapsGenerated(texture_ref)); 840 EXPECT_TRUE(manager.MarkMipmapsGenerated(texture_ref));
691 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 841 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
692 EXPECT_TRUE(manager.CanRender(texture_ref)); 842 EXPECT_TRUE(manager.CanRender(texture_ref));
693 EXPECT_FALSE(manager.HaveUnrenderableTextures()); 843 EXPECT_FALSE(manager.HaveUnrenderableTextures());
694 manager.Destroy(false); 844 manager.Destroy(false);
695 } 845 }
696 846
697 TEST_F(TextureTest, POTCubeMap) { 847 TEST_F(TextureTest, POTCubeMap) {
698 manager_->SetTarget(texture_ref_, GL_TEXTURE_CUBE_MAP); 848 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_CUBE_MAP);
699 Texture* texture = texture_ref_->texture(); 849 Texture* texture = texture_ref_->texture();
700 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_CUBE_MAP), texture->target()); 850 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_CUBE_MAP), texture->target());
701 // Check Setting level 0 each face to POT 851 // Check Setting level 0 each face to POT
702 manager_->SetLevelInfo(texture_ref_, 852 manager_->SetLevelInfo(texture_ref_.get(),
703 GL_TEXTURE_CUBE_MAP_POSITIVE_X, 853 GL_TEXTURE_CUBE_MAP_POSITIVE_X,
704 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 854 0,
855 GL_RGBA,
856 4,
857 4,
858 1,
859 0,
860 GL_RGBA,
861 GL_UNSIGNED_BYTE,
862 true);
705 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 863 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
706 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 864 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
707 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); 865 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture));
708 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_)); 866 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get()));
709 EXPECT_FALSE(manager_->CanRender(texture_ref_)); 867 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
710 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); 868 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
711 manager_->SetLevelInfo(texture_ref_, 869 manager_->SetLevelInfo(texture_ref_.get(),
712 GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 870 GL_TEXTURE_CUBE_MAP_NEGATIVE_X,
713 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 871 0,
872 GL_RGBA,
873 4,
874 4,
875 1,
876 0,
877 GL_RGBA,
878 GL_UNSIGNED_BYTE,
879 true);
714 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 880 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
715 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 881 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
716 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); 882 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture));
717 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_)); 883 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get()));
718 EXPECT_FALSE(manager_->CanRender(texture_ref_)); 884 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
719 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); 885 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
720 manager_->SetLevelInfo(texture_ref_, 886 manager_->SetLevelInfo(texture_ref_.get(),
721 GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 887 GL_TEXTURE_CUBE_MAP_POSITIVE_Y,
722 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 888 0,
889 GL_RGBA,
890 4,
891 4,
892 1,
893 0,
894 GL_RGBA,
895 GL_UNSIGNED_BYTE,
896 true);
723 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 897 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
724 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 898 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
725 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); 899 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture));
726 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_)); 900 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get()));
727 EXPECT_FALSE(manager_->CanRender(texture_ref_)); 901 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
728 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); 902 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
729 manager_->SetLevelInfo(texture_ref_, 903 manager_->SetLevelInfo(texture_ref_.get(),
730 GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 904 GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,
731 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 905 0,
906 GL_RGBA,
907 4,
908 4,
909 1,
910 0,
911 GL_RGBA,
912 GL_UNSIGNED_BYTE,
913 true);
732 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 914 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
733 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 915 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
734 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); 916 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture));
735 EXPECT_FALSE(manager_->CanRender(texture_ref_)); 917 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
736 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_)); 918 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get()));
737 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); 919 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
738 manager_->SetLevelInfo(texture_ref_, 920 manager_->SetLevelInfo(texture_ref_.get(),
739 GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 921 GL_TEXTURE_CUBE_MAP_POSITIVE_Z,
740 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 922 0,
923 GL_RGBA,
924 4,
925 4,
926 1,
927 0,
928 GL_RGBA,
929 GL_UNSIGNED_BYTE,
930 true);
741 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 931 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
742 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 932 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
743 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture)); 933 EXPECT_FALSE(TextureTestHelper::IsCubeComplete(texture));
744 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_)); 934 EXPECT_FALSE(manager_->CanGenerateMipmaps(texture_ref_.get()));
745 EXPECT_FALSE(manager_->CanRender(texture_ref_)); 935 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
746 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); 936 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
747 manager_->SetLevelInfo(texture_ref_, 937 manager_->SetLevelInfo(texture_ref_.get(),
748 GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 938 GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,
749 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 939 0,
940 GL_RGBA,
941 4,
942 4,
943 1,
944 0,
945 GL_RGBA,
946 GL_UNSIGNED_BYTE,
947 true);
750 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 948 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
751 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 949 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
752 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); 950 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture));
753 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_)); 951 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get()));
754 EXPECT_FALSE(manager_->CanRender(texture_ref_)); 952 EXPECT_FALSE(manager_->CanRender(texture_ref_.get()));
755 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); 953 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
756 954
757 // Make mips. 955 // Make mips.
758 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_)); 956 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get()));
759 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 957 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
760 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); 958 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture));
761 EXPECT_TRUE(manager_->CanRender(texture_ref_)); 959 EXPECT_TRUE(manager_->CanRender(texture_ref_.get()));
762 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); 960 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
763 961
764 // Change a mip. 962 // Change a mip.
765 manager_->SetLevelInfo(texture_ref_, 963 manager_->SetLevelInfo(texture_ref_.get(),
766 GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 964 GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,
767 1, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 965 1,
966 GL_RGBA,
967 4,
968 4,
969 1,
970 0,
971 GL_RGBA,
972 GL_UNSIGNED_BYTE,
973 true);
768 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture)); 974 EXPECT_FALSE(TextureTestHelper::IsNPOT(texture));
769 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture)); 975 EXPECT_FALSE(TextureTestHelper::IsTextureComplete(texture));
770 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); 976 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture));
771 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_)); 977 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get()));
772 // Set a level past the number of mips that would get generated. 978 // Set a level past the number of mips that would get generated.
773 manager_->SetLevelInfo(texture_ref_, 979 manager_->SetLevelInfo(texture_ref_.get(),
774 GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 980 GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,
775 3, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 981 3,
776 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_)); 982 GL_RGBA,
983 4,
984 4,
985 1,
986 0,
987 GL_RGBA,
988 GL_UNSIGNED_BYTE,
989 true);
990 EXPECT_TRUE(manager_->CanGenerateMipmaps(texture_ref_.get()));
777 // Make mips. 991 // Make mips.
778 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_)); 992 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get()));
779 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 993 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
780 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture)); 994 EXPECT_TRUE(TextureTestHelper::IsCubeComplete(texture));
781 } 995 }
782 996
783 TEST_F(TextureTest, GetLevelSize) { 997 TEST_F(TextureTest, GetLevelSize) {
784 manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); 998 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D);
785 manager_->SetLevelInfo(texture_ref_, 999 manager_->SetLevelInfo(texture_ref_.get(),
786 GL_TEXTURE_2D, 1, GL_RGBA, 4, 5, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 1000 GL_TEXTURE_2D,
1001 1,
1002 GL_RGBA,
1003 4,
1004 5,
1005 1,
1006 0,
1007 GL_RGBA,
1008 GL_UNSIGNED_BYTE,
1009 true);
787 GLsizei width = -1; 1010 GLsizei width = -1;
788 GLsizei height = -1; 1011 GLsizei height = -1;
789 Texture* texture = texture_ref_->texture(); 1012 Texture* texture = texture_ref_->texture();
790 EXPECT_FALSE(texture->GetLevelSize(GL_TEXTURE_2D, -1, &width, &height)); 1013 EXPECT_FALSE(texture->GetLevelSize(GL_TEXTURE_2D, -1, &width, &height));
791 EXPECT_FALSE(texture->GetLevelSize(GL_TEXTURE_2D, 1000, &width, &height)); 1014 EXPECT_FALSE(texture->GetLevelSize(GL_TEXTURE_2D, 1000, &width, &height));
792 EXPECT_FALSE(texture->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height)); 1015 EXPECT_FALSE(texture->GetLevelSize(GL_TEXTURE_2D, 0, &width, &height));
793 EXPECT_TRUE(texture->GetLevelSize(GL_TEXTURE_2D, 1, &width, &height)); 1016 EXPECT_TRUE(texture->GetLevelSize(GL_TEXTURE_2D, 1, &width, &height));
794 EXPECT_EQ(4, width); 1017 EXPECT_EQ(4, width);
795 EXPECT_EQ(5, height); 1018 EXPECT_EQ(5, height);
796 manager_->RemoveTexture(kClient1Id); 1019 manager_->RemoveTexture(kClient1Id);
797 EXPECT_TRUE(texture->GetLevelSize(GL_TEXTURE_2D, 1, &width, &height)); 1020 EXPECT_TRUE(texture->GetLevelSize(GL_TEXTURE_2D, 1, &width, &height));
798 EXPECT_EQ(4, width); 1021 EXPECT_EQ(4, width);
799 EXPECT_EQ(5, height); 1022 EXPECT_EQ(5, height);
800 } 1023 }
801 1024
802 TEST_F(TextureTest, GetLevelType) { 1025 TEST_F(TextureTest, GetLevelType) {
803 manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); 1026 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D);
804 manager_->SetLevelInfo(texture_ref_, 1027 manager_->SetLevelInfo(texture_ref_.get(),
805 GL_TEXTURE_2D, 1, GL_RGBA, 4, 5, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 1028 GL_TEXTURE_2D,
1029 1,
1030 GL_RGBA,
1031 4,
1032 5,
1033 1,
1034 0,
1035 GL_RGBA,
1036 GL_UNSIGNED_BYTE,
1037 true);
806 GLenum type = -1; 1038 GLenum type = -1;
807 GLenum format = -1; 1039 GLenum format = -1;
808 Texture* texture = texture_ref_->texture(); 1040 Texture* texture = texture_ref_->texture();
809 EXPECT_FALSE(texture->GetLevelType(GL_TEXTURE_2D, -1, &type, &format)); 1041 EXPECT_FALSE(texture->GetLevelType(GL_TEXTURE_2D, -1, &type, &format));
810 EXPECT_FALSE(texture->GetLevelType(GL_TEXTURE_2D, 1000, &type, &format)); 1042 EXPECT_FALSE(texture->GetLevelType(GL_TEXTURE_2D, 1000, &type, &format));
811 EXPECT_FALSE(texture->GetLevelType(GL_TEXTURE_2D, 0, &type, &format)); 1043 EXPECT_FALSE(texture->GetLevelType(GL_TEXTURE_2D, 0, &type, &format));
812 EXPECT_TRUE(texture->GetLevelType(GL_TEXTURE_2D, 1, &type, &format)); 1044 EXPECT_TRUE(texture->GetLevelType(GL_TEXTURE_2D, 1, &type, &format));
813 EXPECT_EQ(static_cast<GLenum>(GL_UNSIGNED_BYTE), type); 1045 EXPECT_EQ(static_cast<GLenum>(GL_UNSIGNED_BYTE), type);
814 EXPECT_EQ(static_cast<GLenum>(GL_RGBA), format); 1046 EXPECT_EQ(static_cast<GLenum>(GL_RGBA), format);
815 manager_->RemoveTexture(kClient1Id); 1047 manager_->RemoveTexture(kClient1Id);
816 EXPECT_TRUE(texture->GetLevelType(GL_TEXTURE_2D, 1, &type, &format)); 1048 EXPECT_TRUE(texture->GetLevelType(GL_TEXTURE_2D, 1, &type, &format));
817 EXPECT_EQ(static_cast<GLenum>(GL_UNSIGNED_BYTE), type); 1049 EXPECT_EQ(static_cast<GLenum>(GL_UNSIGNED_BYTE), type);
818 EXPECT_EQ(static_cast<GLenum>(GL_RGBA), format); 1050 EXPECT_EQ(static_cast<GLenum>(GL_RGBA), format);
819 } 1051 }
820 1052
821 TEST_F(TextureTest, ValidForTexture) { 1053 TEST_F(TextureTest, ValidForTexture) {
822 manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); 1054 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D);
823 manager_->SetLevelInfo(texture_ref_, 1055 manager_->SetLevelInfo(texture_ref_.get(),
824 GL_TEXTURE_2D, 1, GL_RGBA, 4, 5, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 1056 GL_TEXTURE_2D,
1057 1,
1058 GL_RGBA,
1059 4,
1060 5,
1061 1,
1062 0,
1063 GL_RGBA,
1064 GL_UNSIGNED_BYTE,
1065 true);
825 // Check bad face. 1066 // Check bad face.
826 Texture* texture = texture_ref_->texture(); 1067 Texture* texture = texture_ref_->texture();
827 EXPECT_FALSE(texture->ValidForTexture( 1068 EXPECT_FALSE(texture->ValidForTexture(
828 GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 1069 GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,
829 1, 0, 0, 4, 5, GL_RGBA, GL_UNSIGNED_BYTE)); 1070 1, 0, 0, 4, 5, GL_RGBA, GL_UNSIGNED_BYTE));
830 // Check bad level. 1071 // Check bad level.
831 EXPECT_FALSE(texture->ValidForTexture( 1072 EXPECT_FALSE(texture->ValidForTexture(
832 GL_TEXTURE_2D, 0, 0, 0, 4, 5, GL_RGBA, GL_UNSIGNED_BYTE)); 1073 GL_TEXTURE_2D, 0, 0, 0, 4, 5, GL_RGBA, GL_UNSIGNED_BYTE));
833 // Check bad xoffset. 1074 // Check bad xoffset.
834 EXPECT_FALSE(texture->ValidForTexture( 1075 EXPECT_FALSE(texture->ValidForTexture(
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
993 } 1234 }
994 1235
995 TEST_F(TextureTest, SafeUnsafe) { 1236 TEST_F(TextureTest, SafeUnsafe) {
996 static const GLuint kClient2Id = 2; 1237 static const GLuint kClient2Id = 2;
997 static const GLuint kService2Id = 12; 1238 static const GLuint kService2Id = 12;
998 static const GLuint kClient3Id = 3; 1239 static const GLuint kClient3Id = 3;
999 static const GLuint kService3Id = 13; 1240 static const GLuint kService3Id = 13;
1000 EXPECT_FALSE(manager_->HaveUnclearedMips()); 1241 EXPECT_FALSE(manager_->HaveUnclearedMips());
1001 Texture* texture = texture_ref_->texture(); 1242 Texture* texture = texture_ref_->texture();
1002 EXPECT_EQ(0, texture->num_uncleared_mips()); 1243 EXPECT_EQ(0, texture->num_uncleared_mips());
1003 manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); 1244 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D);
1004 manager_->SetLevelInfo(texture_ref_, 1245 manager_->SetLevelInfo(texture_ref_.get(),
1005 GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); 1246 GL_TEXTURE_2D,
1247 0,
1248 GL_RGBA,
1249 4,
1250 4,
1251 1,
1252 0,
1253 GL_RGBA,
1254 GL_UNSIGNED_BYTE,
1255 false);
1006 EXPECT_FALSE(texture->SafeToRenderFrom()); 1256 EXPECT_FALSE(texture->SafeToRenderFrom());
1007 EXPECT_TRUE(manager_->HaveUnsafeTextures()); 1257 EXPECT_TRUE(manager_->HaveUnsafeTextures());
1008 EXPECT_TRUE(manager_->HaveUnclearedMips()); 1258 EXPECT_TRUE(manager_->HaveUnclearedMips());
1009 EXPECT_EQ(1, texture->num_uncleared_mips()); 1259 EXPECT_EQ(1, texture->num_uncleared_mips());
1010 manager_->SetLevelCleared(texture_ref_, GL_TEXTURE_2D, 0, true); 1260 manager_->SetLevelCleared(texture_ref_.get(), GL_TEXTURE_2D, 0, true);
1011 EXPECT_TRUE(texture->SafeToRenderFrom()); 1261 EXPECT_TRUE(texture->SafeToRenderFrom());
1012 EXPECT_FALSE(manager_->HaveUnsafeTextures()); 1262 EXPECT_FALSE(manager_->HaveUnsafeTextures());
1013 EXPECT_FALSE(manager_->HaveUnclearedMips()); 1263 EXPECT_FALSE(manager_->HaveUnclearedMips());
1014 EXPECT_EQ(0, texture->num_uncleared_mips()); 1264 EXPECT_EQ(0, texture->num_uncleared_mips());
1015 manager_->SetLevelInfo(texture_ref_, 1265 manager_->SetLevelInfo(texture_ref_.get(),
1016 GL_TEXTURE_2D, 1, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); 1266 GL_TEXTURE_2D,
1267 1,
1268 GL_RGBA,
1269 8,
1270 8,
1271 1,
1272 0,
1273 GL_RGBA,
1274 GL_UNSIGNED_BYTE,
1275 false);
1017 EXPECT_FALSE(texture->SafeToRenderFrom()); 1276 EXPECT_FALSE(texture->SafeToRenderFrom());
1018 EXPECT_TRUE(manager_->HaveUnsafeTextures()); 1277 EXPECT_TRUE(manager_->HaveUnsafeTextures());
1019 EXPECT_TRUE(manager_->HaveUnclearedMips()); 1278 EXPECT_TRUE(manager_->HaveUnclearedMips());
1020 EXPECT_EQ(1, texture->num_uncleared_mips()); 1279 EXPECT_EQ(1, texture->num_uncleared_mips());
1021 manager_->SetLevelCleared(texture_ref_, GL_TEXTURE_2D, 1, true); 1280 manager_->SetLevelCleared(texture_ref_.get(), GL_TEXTURE_2D, 1, true);
1022 EXPECT_TRUE(texture->SafeToRenderFrom()); 1281 EXPECT_TRUE(texture->SafeToRenderFrom());
1023 EXPECT_FALSE(manager_->HaveUnsafeTextures()); 1282 EXPECT_FALSE(manager_->HaveUnsafeTextures());
1024 EXPECT_FALSE(manager_->HaveUnclearedMips()); 1283 EXPECT_FALSE(manager_->HaveUnclearedMips());
1025 EXPECT_EQ(0, texture->num_uncleared_mips()); 1284 EXPECT_EQ(0, texture->num_uncleared_mips());
1026 manager_->SetLevelInfo(texture_ref_, 1285 manager_->SetLevelInfo(texture_ref_.get(),
1027 GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); 1286 GL_TEXTURE_2D,
1028 manager_->SetLevelInfo(texture_ref_, 1287 0,
1029 GL_TEXTURE_2D, 1, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); 1288 GL_RGBA,
1289 4,
1290 4,
1291 1,
1292 0,
1293 GL_RGBA,
1294 GL_UNSIGNED_BYTE,
1295 false);
1296 manager_->SetLevelInfo(texture_ref_.get(),
1297 GL_TEXTURE_2D,
1298 1,
1299 GL_RGBA,
1300 8,
1301 8,
1302 1,
1303 0,
1304 GL_RGBA,
1305 GL_UNSIGNED_BYTE,
1306 false);
1030 EXPECT_FALSE(texture->SafeToRenderFrom()); 1307 EXPECT_FALSE(texture->SafeToRenderFrom());
1031 EXPECT_TRUE(manager_->HaveUnsafeTextures()); 1308 EXPECT_TRUE(manager_->HaveUnsafeTextures());
1032 EXPECT_TRUE(manager_->HaveUnclearedMips()); 1309 EXPECT_TRUE(manager_->HaveUnclearedMips());
1033 EXPECT_EQ(2, texture->num_uncleared_mips()); 1310 EXPECT_EQ(2, texture->num_uncleared_mips());
1034 manager_->SetLevelCleared(texture_ref_, GL_TEXTURE_2D, 0, true); 1311 manager_->SetLevelCleared(texture_ref_.get(), GL_TEXTURE_2D, 0, true);
1035 EXPECT_FALSE(texture->SafeToRenderFrom()); 1312 EXPECT_FALSE(texture->SafeToRenderFrom());
1036 EXPECT_TRUE(manager_->HaveUnsafeTextures()); 1313 EXPECT_TRUE(manager_->HaveUnsafeTextures());
1037 EXPECT_TRUE(manager_->HaveUnclearedMips()); 1314 EXPECT_TRUE(manager_->HaveUnclearedMips());
1038 EXPECT_EQ(1, texture->num_uncleared_mips()); 1315 EXPECT_EQ(1, texture->num_uncleared_mips());
1039 manager_->SetLevelCleared(texture_ref_, GL_TEXTURE_2D, 1, true); 1316 manager_->SetLevelCleared(texture_ref_.get(), GL_TEXTURE_2D, 1, true);
1040 EXPECT_TRUE(texture->SafeToRenderFrom()); 1317 EXPECT_TRUE(texture->SafeToRenderFrom());
1041 EXPECT_FALSE(manager_->HaveUnsafeTextures()); 1318 EXPECT_FALSE(manager_->HaveUnsafeTextures());
1042 EXPECT_FALSE(manager_->HaveUnclearedMips()); 1319 EXPECT_FALSE(manager_->HaveUnclearedMips());
1043 EXPECT_EQ(0, texture->num_uncleared_mips()); 1320 EXPECT_EQ(0, texture->num_uncleared_mips());
1044 manager_->SetLevelInfo(texture_ref_, 1321 manager_->SetLevelInfo(texture_ref_.get(),
1045 GL_TEXTURE_2D, 1, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); 1322 GL_TEXTURE_2D,
1323 1,
1324 GL_RGBA,
1325 8,
1326 8,
1327 1,
1328 0,
1329 GL_RGBA,
1330 GL_UNSIGNED_BYTE,
1331 false);
1046 EXPECT_FALSE(texture->SafeToRenderFrom()); 1332 EXPECT_FALSE(texture->SafeToRenderFrom());
1047 EXPECT_TRUE(manager_->HaveUnsafeTextures()); 1333 EXPECT_TRUE(manager_->HaveUnsafeTextures());
1048 EXPECT_TRUE(manager_->HaveUnclearedMips()); 1334 EXPECT_TRUE(manager_->HaveUnclearedMips());
1049 EXPECT_EQ(1, texture->num_uncleared_mips()); 1335 EXPECT_EQ(1, texture->num_uncleared_mips());
1050 manager_->MarkMipmapsGenerated(texture_ref_); 1336 manager_->MarkMipmapsGenerated(texture_ref_.get());
1051 EXPECT_TRUE(texture->SafeToRenderFrom()); 1337 EXPECT_TRUE(texture->SafeToRenderFrom());
1052 EXPECT_FALSE(manager_->HaveUnsafeTextures()); 1338 EXPECT_FALSE(manager_->HaveUnsafeTextures());
1053 EXPECT_FALSE(manager_->HaveUnclearedMips()); 1339 EXPECT_FALSE(manager_->HaveUnclearedMips());
1054 EXPECT_EQ(0, texture->num_uncleared_mips()); 1340 EXPECT_EQ(0, texture->num_uncleared_mips());
1055 1341
1056 manager_->CreateTexture(kClient2Id, kService2Id); 1342 manager_->CreateTexture(kClient2Id, kService2Id);
1057 scoped_refptr<TextureRef> texture_ref2( 1343 scoped_refptr<TextureRef> texture_ref2(
1058 manager_->GetTexture(kClient2Id)); 1344 manager_->GetTexture(kClient2Id));
1059 ASSERT_TRUE(texture_ref2.get() != NULL); 1345 ASSERT_TRUE(texture_ref2.get() != NULL);
1060 manager_->SetTarget(texture_ref2, GL_TEXTURE_2D); 1346 manager_->SetTarget(texture_ref2.get(), GL_TEXTURE_2D);
1061 EXPECT_FALSE(manager_->HaveUnsafeTextures()); 1347 EXPECT_FALSE(manager_->HaveUnsafeTextures());
1062 EXPECT_FALSE(manager_->HaveUnclearedMips()); 1348 EXPECT_FALSE(manager_->HaveUnclearedMips());
1063 Texture* texture2 = texture_ref2->texture(); 1349 Texture* texture2 = texture_ref2->texture();
1064 EXPECT_EQ(0, texture2->num_uncleared_mips()); 1350 EXPECT_EQ(0, texture2->num_uncleared_mips());
1065 manager_->SetLevelInfo(texture_ref2, 1351 manager_->SetLevelInfo(texture_ref2.get(),
1066 GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 1352 GL_TEXTURE_2D,
1353 0,
1354 GL_RGBA,
1355 8,
1356 8,
1357 1,
1358 0,
1359 GL_RGBA,
1360 GL_UNSIGNED_BYTE,
1361 true);
1067 EXPECT_FALSE(manager_->HaveUnsafeTextures()); 1362 EXPECT_FALSE(manager_->HaveUnsafeTextures());
1068 EXPECT_FALSE(manager_->HaveUnclearedMips()); 1363 EXPECT_FALSE(manager_->HaveUnclearedMips());
1069 EXPECT_EQ(0, texture2->num_uncleared_mips()); 1364 EXPECT_EQ(0, texture2->num_uncleared_mips());
1070 manager_->SetLevelInfo(texture_ref2, 1365 manager_->SetLevelInfo(texture_ref2.get(),
1071 GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); 1366 GL_TEXTURE_2D,
1367 0,
1368 GL_RGBA,
1369 8,
1370 8,
1371 1,
1372 0,
1373 GL_RGBA,
1374 GL_UNSIGNED_BYTE,
1375 false);
1072 EXPECT_TRUE(manager_->HaveUnsafeTextures()); 1376 EXPECT_TRUE(manager_->HaveUnsafeTextures());
1073 EXPECT_TRUE(manager_->HaveUnclearedMips()); 1377 EXPECT_TRUE(manager_->HaveUnclearedMips());
1074 EXPECT_EQ(1, texture2->num_uncleared_mips()); 1378 EXPECT_EQ(1, texture2->num_uncleared_mips());
1075 1379
1076 manager_->CreateTexture(kClient3Id, kService3Id); 1380 manager_->CreateTexture(kClient3Id, kService3Id);
1077 scoped_refptr<TextureRef> texture_ref3( 1381 scoped_refptr<TextureRef> texture_ref3(
1078 manager_->GetTexture(kClient3Id)); 1382 manager_->GetTexture(kClient3Id));
1079 ASSERT_TRUE(texture_ref3.get() != NULL); 1383 ASSERT_TRUE(texture_ref3.get() != NULL);
1080 manager_->SetTarget(texture_ref3, GL_TEXTURE_2D); 1384 manager_->SetTarget(texture_ref3.get(), GL_TEXTURE_2D);
1081 manager_->SetLevelInfo(texture_ref3, 1385 manager_->SetLevelInfo(texture_ref3.get(),
1082 GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); 1386 GL_TEXTURE_2D,
1387 0,
1388 GL_RGBA,
1389 8,
1390 8,
1391 1,
1392 0,
1393 GL_RGBA,
1394 GL_UNSIGNED_BYTE,
1395 false);
1083 EXPECT_TRUE(manager_->HaveUnsafeTextures()); 1396 EXPECT_TRUE(manager_->HaveUnsafeTextures());
1084 EXPECT_TRUE(manager_->HaveUnclearedMips()); 1397 EXPECT_TRUE(manager_->HaveUnclearedMips());
1085 Texture* texture3 = texture_ref3->texture(); 1398 Texture* texture3 = texture_ref3->texture();
1086 EXPECT_EQ(1, texture3->num_uncleared_mips()); 1399 EXPECT_EQ(1, texture3->num_uncleared_mips());
1087 manager_->SetLevelCleared(texture_ref2, GL_TEXTURE_2D, 0, true); 1400 manager_->SetLevelCleared(texture_ref2.get(), GL_TEXTURE_2D, 0, true);
1088 EXPECT_TRUE(manager_->HaveUnsafeTextures()); 1401 EXPECT_TRUE(manager_->HaveUnsafeTextures());
1089 EXPECT_TRUE(manager_->HaveUnclearedMips()); 1402 EXPECT_TRUE(manager_->HaveUnclearedMips());
1090 EXPECT_EQ(0, texture2->num_uncleared_mips()); 1403 EXPECT_EQ(0, texture2->num_uncleared_mips());
1091 manager_->SetLevelCleared(texture_ref3, GL_TEXTURE_2D, 0, true); 1404 manager_->SetLevelCleared(texture_ref3.get(), GL_TEXTURE_2D, 0, true);
1092 EXPECT_FALSE(manager_->HaveUnsafeTextures()); 1405 EXPECT_FALSE(manager_->HaveUnsafeTextures());
1093 EXPECT_FALSE(manager_->HaveUnclearedMips()); 1406 EXPECT_FALSE(manager_->HaveUnclearedMips());
1094 EXPECT_EQ(0, texture3->num_uncleared_mips()); 1407 EXPECT_EQ(0, texture3->num_uncleared_mips());
1095 1408
1096 manager_->SetLevelInfo(texture_ref2, 1409 manager_->SetLevelInfo(texture_ref2.get(),
1097 GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); 1410 GL_TEXTURE_2D,
1098 manager_->SetLevelInfo(texture_ref3, 1411 0,
1099 GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); 1412 GL_RGBA,
1413 8,
1414 8,
1415 1,
1416 0,
1417 GL_RGBA,
1418 GL_UNSIGNED_BYTE,
1419 false);
1420 manager_->SetLevelInfo(texture_ref3.get(),
1421 GL_TEXTURE_2D,
1422 0,
1423 GL_RGBA,
1424 8,
1425 8,
1426 1,
1427 0,
1428 GL_RGBA,
1429 GL_UNSIGNED_BYTE,
1430 false);
1100 EXPECT_TRUE(manager_->HaveUnsafeTextures()); 1431 EXPECT_TRUE(manager_->HaveUnsafeTextures());
1101 EXPECT_TRUE(manager_->HaveUnclearedMips()); 1432 EXPECT_TRUE(manager_->HaveUnclearedMips());
1102 EXPECT_EQ(1, texture2->num_uncleared_mips()); 1433 EXPECT_EQ(1, texture2->num_uncleared_mips());
1103 EXPECT_EQ(1, texture3->num_uncleared_mips()); 1434 EXPECT_EQ(1, texture3->num_uncleared_mips());
1104 manager_->RemoveTexture(kClient3Id); 1435 manager_->RemoveTexture(kClient3Id);
1105 EXPECT_TRUE(manager_->HaveUnsafeTextures()); 1436 EXPECT_TRUE(manager_->HaveUnsafeTextures());
1106 EXPECT_TRUE(manager_->HaveUnclearedMips()); 1437 EXPECT_TRUE(manager_->HaveUnclearedMips());
1107 manager_->RemoveTexture(kClient2Id); 1438 manager_->RemoveTexture(kClient2Id);
1108 EXPECT_TRUE(manager_->HaveUnsafeTextures()); 1439 EXPECT_TRUE(manager_->HaveUnsafeTextures());
1109 EXPECT_TRUE(manager_->HaveUnclearedMips()); 1440 EXPECT_TRUE(manager_->HaveUnclearedMips());
1110 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService2Id))) 1441 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService2Id)))
1111 .Times(1) 1442 .Times(1)
1112 .RetiresOnSaturation(); 1443 .RetiresOnSaturation();
1113 texture_ref2 = NULL; 1444 texture_ref2 = NULL;
1114 EXPECT_TRUE(manager_->HaveUnsafeTextures()); 1445 EXPECT_TRUE(manager_->HaveUnsafeTextures());
1115 EXPECT_TRUE(manager_->HaveUnclearedMips()); 1446 EXPECT_TRUE(manager_->HaveUnclearedMips());
1116 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService3Id))) 1447 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService3Id)))
1117 .Times(1) 1448 .Times(1)
1118 .RetiresOnSaturation(); 1449 .RetiresOnSaturation();
1119 texture_ref3 = NULL; 1450 texture_ref3 = NULL;
1120 EXPECT_FALSE(manager_->HaveUnsafeTextures()); 1451 EXPECT_FALSE(manager_->HaveUnsafeTextures());
1121 EXPECT_FALSE(manager_->HaveUnclearedMips()); 1452 EXPECT_FALSE(manager_->HaveUnclearedMips());
1122 } 1453 }
1123 1454
1124 TEST_F(TextureTest, ClearTexture) { 1455 TEST_F(TextureTest, ClearTexture) {
1125 EXPECT_CALL(*decoder_, ClearLevel(_, _, _, _, _, _, _, _, _)) 1456 EXPECT_CALL(*decoder_, ClearLevel(_, _, _, _, _, _, _, _, _))
1126 .WillRepeatedly(Return(true)); 1457 .WillRepeatedly(Return(true));
1127 manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); 1458 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D);
1128 manager_->SetLevelInfo(texture_ref_, 1459 manager_->SetLevelInfo(texture_ref_.get(),
1129 GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); 1460 GL_TEXTURE_2D,
1130 manager_->SetLevelInfo(texture_ref_, 1461 0,
1131 GL_TEXTURE_2D, 1, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); 1462 GL_RGBA,
1463 4,
1464 4,
1465 1,
1466 0,
1467 GL_RGBA,
1468 GL_UNSIGNED_BYTE,
1469 false);
1470 manager_->SetLevelInfo(texture_ref_.get(),
1471 GL_TEXTURE_2D,
1472 1,
1473 GL_RGBA,
1474 4,
1475 4,
1476 1,
1477 0,
1478 GL_RGBA,
1479 GL_UNSIGNED_BYTE,
1480 false);
1132 Texture* texture = texture_ref_->texture(); 1481 Texture* texture = texture_ref_->texture();
1133 EXPECT_FALSE(texture->SafeToRenderFrom()); 1482 EXPECT_FALSE(texture->SafeToRenderFrom());
1134 EXPECT_TRUE(manager_->HaveUnsafeTextures()); 1483 EXPECT_TRUE(manager_->HaveUnsafeTextures());
1135 EXPECT_TRUE(manager_->HaveUnclearedMips()); 1484 EXPECT_TRUE(manager_->HaveUnclearedMips());
1136 EXPECT_EQ(2, texture->num_uncleared_mips()); 1485 EXPECT_EQ(2, texture->num_uncleared_mips());
1137 manager_->ClearRenderableLevels(decoder_.get(), texture_ref_); 1486 manager_->ClearRenderableLevels(decoder_.get(), texture_ref_.get());
1138 EXPECT_TRUE(texture->SafeToRenderFrom()); 1487 EXPECT_TRUE(texture->SafeToRenderFrom());
1139 EXPECT_FALSE(manager_->HaveUnsafeTextures()); 1488 EXPECT_FALSE(manager_->HaveUnsafeTextures());
1140 EXPECT_FALSE(manager_->HaveUnclearedMips()); 1489 EXPECT_FALSE(manager_->HaveUnclearedMips());
1141 EXPECT_EQ(0, texture->num_uncleared_mips()); 1490 EXPECT_EQ(0, texture->num_uncleared_mips());
1142 manager_->SetLevelInfo(texture_ref_, 1491 manager_->SetLevelInfo(texture_ref_.get(),
1143 GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); 1492 GL_TEXTURE_2D,
1144 manager_->SetLevelInfo(texture_ref_, 1493 0,
1145 GL_TEXTURE_2D, 1, GL_RGBA, 4, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); 1494 GL_RGBA,
1495 4,
1496 4,
1497 1,
1498 0,
1499 GL_RGBA,
1500 GL_UNSIGNED_BYTE,
1501 false);
1502 manager_->SetLevelInfo(texture_ref_.get(),
1503 GL_TEXTURE_2D,
1504 1,
1505 GL_RGBA,
1506 4,
1507 4,
1508 1,
1509 0,
1510 GL_RGBA,
1511 GL_UNSIGNED_BYTE,
1512 false);
1146 EXPECT_FALSE(texture->SafeToRenderFrom()); 1513 EXPECT_FALSE(texture->SafeToRenderFrom());
1147 EXPECT_TRUE(manager_->HaveUnsafeTextures()); 1514 EXPECT_TRUE(manager_->HaveUnsafeTextures());
1148 EXPECT_TRUE(manager_->HaveUnclearedMips()); 1515 EXPECT_TRUE(manager_->HaveUnclearedMips());
1149 EXPECT_EQ(2, texture->num_uncleared_mips()); 1516 EXPECT_EQ(2, texture->num_uncleared_mips());
1150 manager_->ClearTextureLevel(decoder_.get(), texture_ref_, GL_TEXTURE_2D, 0); 1517 manager_->ClearTextureLevel(
1518 decoder_.get(), texture_ref_.get(), GL_TEXTURE_2D, 0);
1151 EXPECT_FALSE(texture->SafeToRenderFrom()); 1519 EXPECT_FALSE(texture->SafeToRenderFrom());
1152 EXPECT_TRUE(manager_->HaveUnsafeTextures()); 1520 EXPECT_TRUE(manager_->HaveUnsafeTextures());
1153 EXPECT_TRUE(manager_->HaveUnclearedMips()); 1521 EXPECT_TRUE(manager_->HaveUnclearedMips());
1154 EXPECT_EQ(1, texture->num_uncleared_mips()); 1522 EXPECT_EQ(1, texture->num_uncleared_mips());
1155 manager_->ClearTextureLevel(decoder_.get(), texture_ref_, GL_TEXTURE_2D, 1); 1523 manager_->ClearTextureLevel(
1524 decoder_.get(), texture_ref_.get(), GL_TEXTURE_2D, 1);
1156 EXPECT_TRUE(texture->SafeToRenderFrom()); 1525 EXPECT_TRUE(texture->SafeToRenderFrom());
1157 EXPECT_FALSE(manager_->HaveUnsafeTextures()); 1526 EXPECT_FALSE(manager_->HaveUnsafeTextures());
1158 EXPECT_FALSE(manager_->HaveUnclearedMips()); 1527 EXPECT_FALSE(manager_->HaveUnclearedMips());
1159 EXPECT_EQ(0, texture->num_uncleared_mips()); 1528 EXPECT_EQ(0, texture->num_uncleared_mips());
1160 } 1529 }
1161 1530
1162 TEST_F(TextureTest, UseDeletedTexture) { 1531 TEST_F(TextureTest, UseDeletedTexture) {
1163 static const GLuint kClient2Id = 2; 1532 static const GLuint kClient2Id = 2;
1164 static const GLuint kService2Id = 12; 1533 static const GLuint kService2Id = 12;
1165 // Make the default texture renderable 1534 // Make the default texture renderable
1166 manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); 1535 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D);
1167 manager_->SetLevelInfo(texture_ref_, 1536 manager_->SetLevelInfo(texture_ref_.get(),
1168 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); 1537 GL_TEXTURE_2D,
1538 0,
1539 GL_RGBA,
1540 1,
1541 1,
1542 1,
1543 0,
1544 GL_RGBA,
1545 GL_UNSIGNED_BYTE,
1546 false);
1169 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); 1547 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
1170 // Make a new texture 1548 // Make a new texture
1171 manager_->CreateTexture(kClient2Id, kService2Id); 1549 manager_->CreateTexture(kClient2Id, kService2Id);
1172 scoped_refptr<TextureRef> texture_ref( 1550 scoped_refptr<TextureRef> texture_ref(
1173 manager_->GetTexture(kClient2Id)); 1551 manager_->GetTexture(kClient2Id));
1174 manager_->SetTarget(texture_ref, GL_TEXTURE_2D); 1552 manager_->SetTarget(texture_ref.get(), GL_TEXTURE_2D);
1175 EXPECT_FALSE(manager_->CanRender(texture_ref)); 1553 EXPECT_FALSE(manager_->CanRender(texture_ref.get()));
1176 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); 1554 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
1177 // Remove it. 1555 // Remove it.
1178 manager_->RemoveTexture(kClient2Id); 1556 manager_->RemoveTexture(kClient2Id);
1179 EXPECT_FALSE(manager_->CanRender(texture_ref)); 1557 EXPECT_FALSE(manager_->CanRender(texture_ref.get()));
1180 EXPECT_TRUE(manager_->HaveUnrenderableTextures()); 1558 EXPECT_TRUE(manager_->HaveUnrenderableTextures());
1181 // Check that we can still manipulate it and it effects the manager. 1559 // Check that we can still manipulate it and it effects the manager.
1182 manager_->SetLevelInfo(texture_ref, 1560 manager_->SetLevelInfo(texture_ref.get(),
1183 GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); 1561 GL_TEXTURE_2D,
1184 EXPECT_TRUE(manager_->CanRender(texture_ref)); 1562 0,
1563 GL_RGBA,
1564 1,
1565 1,
1566 1,
1567 0,
1568 GL_RGBA,
1569 GL_UNSIGNED_BYTE,
1570 false);
1571 EXPECT_TRUE(manager_->CanRender(texture_ref.get()));
1185 EXPECT_FALSE(manager_->HaveUnrenderableTextures()); 1572 EXPECT_FALSE(manager_->HaveUnrenderableTextures());
1186 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService2Id))) 1573 EXPECT_CALL(*gl_, DeleteTextures(1, ::testing::Pointee(kService2Id)))
1187 .Times(1) 1574 .Times(1)
1188 .RetiresOnSaturation(); 1575 .RetiresOnSaturation();
1189 texture_ref = NULL; 1576 texture_ref = NULL;
1190 } 1577 }
1191 1578
1192 TEST_F(TextureTest, GetLevelImage) { 1579 TEST_F(TextureTest, GetLevelImage) {
1193 manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); 1580 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D);
1194 manager_->SetLevelInfo(texture_ref_, 1581 manager_->SetLevelInfo(texture_ref_.get(),
1195 GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 1582 GL_TEXTURE_2D,
1583 1,
1584 GL_RGBA,
1585 2,
1586 2,
1587 1,
1588 0,
1589 GL_RGBA,
1590 GL_UNSIGNED_BYTE,
1591 true);
1196 Texture* texture = texture_ref_->texture(); 1592 Texture* texture = texture_ref_->texture();
1197 EXPECT_TRUE(texture->GetLevelImage(GL_TEXTURE_2D, 1) == NULL); 1593 EXPECT_TRUE(texture->GetLevelImage(GL_TEXTURE_2D, 1) == NULL);
1198 // Set image. 1594 // Set image.
1199 manager_->SetLevelImage(texture_ref_, 1595 manager_->SetLevelImage(
1200 GL_TEXTURE_2D, 1, gfx::GLImage::CreateGLImage(0)); 1596 texture_ref_.get(), GL_TEXTURE_2D, 1, gfx::GLImage::CreateGLImage(0));
1201 EXPECT_FALSE(texture->GetLevelImage(GL_TEXTURE_2D, 1) == NULL); 1597 EXPECT_FALSE(texture->GetLevelImage(GL_TEXTURE_2D, 1) == NULL);
1202 // Remove it. 1598 // Remove it.
1203 manager_->SetLevelImage(texture_ref_, GL_TEXTURE_2D, 1, NULL); 1599 manager_->SetLevelImage(texture_ref_.get(), GL_TEXTURE_2D, 1, NULL);
1204 EXPECT_TRUE(texture->GetLevelImage(GL_TEXTURE_2D, 1) == NULL); 1600 EXPECT_TRUE(texture->GetLevelImage(GL_TEXTURE_2D, 1) == NULL);
1205 manager_->SetLevelImage(texture_ref_, 1601 manager_->SetLevelImage(
1206 GL_TEXTURE_2D, 1, gfx::GLImage::CreateGLImage(0)); 1602 texture_ref_.get(), GL_TEXTURE_2D, 1, gfx::GLImage::CreateGLImage(0));
1207 // Image should be reset when SetLevelInfo is called. 1603 // Image should be reset when SetLevelInfo is called.
1208 manager_->SetLevelInfo(texture_ref_, 1604 manager_->SetLevelInfo(texture_ref_.get(),
1209 GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 1605 GL_TEXTURE_2D,
1606 1,
1607 GL_RGBA,
1608 2,
1609 2,
1610 1,
1611 0,
1612 GL_RGBA,
1613 GL_UNSIGNED_BYTE,
1614 true);
1210 EXPECT_TRUE(texture->GetLevelImage(GL_TEXTURE_2D, 1) == NULL); 1615 EXPECT_TRUE(texture->GetLevelImage(GL_TEXTURE_2D, 1) == NULL);
1211 } 1616 }
1212 1617
1213 namespace { 1618 namespace {
1214 1619
1215 bool InSet(std::set<std::string>* string_set, const std::string& str) { 1620 bool InSet(std::set<std::string>* string_set, const std::string& str) {
1216 std::pair<std::set<std::string>::iterator, bool> result = 1621 std::pair<std::set<std::string>::iterator, bool> result =
1217 string_set->insert(str); 1622 string_set->insert(str);
1218 return !result.second; 1623 return !result.second;
1219 } 1624 }
1220 1625
1221 } // anonymous namespace 1626 } // anonymous namespace
1222 1627
1223 TEST_F(TextureTest, AddToSignature) { 1628 TEST_F(TextureTest, AddToSignature) {
1224 manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); 1629 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D);
1225 manager_->SetLevelInfo(texture_ref_, 1630 manager_->SetLevelInfo(texture_ref_.get(),
1226 GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 1631 GL_TEXTURE_2D,
1632 1,
1633 GL_RGBA,
1634 2,
1635 2,
1636 1,
1637 0,
1638 GL_RGBA,
1639 GL_UNSIGNED_BYTE,
1640 true);
1227 std::string signature1; 1641 std::string signature1;
1228 std::string signature2; 1642 std::string signature2;
1229 manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature1); 1643 manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature1);
1230 1644
1231 std::set<std::string> string_set; 1645 std::set<std::string> string_set;
1232 EXPECT_FALSE(InSet(&string_set, signature1)); 1646 EXPECT_FALSE(InSet(&string_set, signature1));
1233 1647
1234 // check changing 1 thing makes a different signature. 1648 // check changing 1 thing makes a different signature.
1235 manager_->SetLevelInfo(texture_ref_, 1649 manager_->SetLevelInfo(texture_ref_.get(),
1236 GL_TEXTURE_2D, 1, GL_RGBA, 4, 2, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 1650 GL_TEXTURE_2D,
1237 manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2); 1651 1,
1652 GL_RGBA,
1653 4,
1654 2,
1655 1,
1656 0,
1657 GL_RGBA,
1658 GL_UNSIGNED_BYTE,
1659 true);
1660 manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature2);
1238 EXPECT_FALSE(InSet(&string_set, signature2)); 1661 EXPECT_FALSE(InSet(&string_set, signature2));
1239 1662
1240 // check putting it back makes the same signature. 1663 // check putting it back makes the same signature.
1241 manager_->SetLevelInfo(texture_ref_, 1664 manager_->SetLevelInfo(texture_ref_.get(),
1242 GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, true); 1665 GL_TEXTURE_2D,
1243 signature2.clear(); 1666 1,
1244 manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2); 1667 GL_RGBA,
1668 2,
1669 2,
1670 1,
1671 0,
1672 GL_RGBA,
1673 GL_UNSIGNED_BYTE,
1674 true);
1675 signature2.clear();
1676 manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature2);
1245 EXPECT_EQ(signature1, signature2); 1677 EXPECT_EQ(signature1, signature2);
1246 1678
1247 // Check setting cleared status does not change signature. 1679 // Check setting cleared status does not change signature.
1248 manager_->SetLevelInfo(texture_ref_, 1680 manager_->SetLevelInfo(texture_ref_.get(),
1249 GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); 1681 GL_TEXTURE_2D,
1250 signature2.clear(); 1682 1,
1251 manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2); 1683 GL_RGBA,
1684 2,
1685 2,
1686 1,
1687 0,
1688 GL_RGBA,
1689 GL_UNSIGNED_BYTE,
1690 false);
1691 signature2.clear();
1692 manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature2);
1252 EXPECT_EQ(signature1, signature2); 1693 EXPECT_EQ(signature1, signature2);
1253 1694
1254 // Check changing other settings changes signature. 1695 // Check changing other settings changes signature.
1255 manager_->SetLevelInfo(texture_ref_, 1696 manager_->SetLevelInfo(texture_ref_.get(),
1256 GL_TEXTURE_2D, 1, GL_RGBA, 2, 4, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); 1697 GL_TEXTURE_2D,
1257 signature2.clear(); 1698 1,
1258 manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2); 1699 GL_RGBA,
1259 EXPECT_FALSE(InSet(&string_set, signature2)); 1700 2,
1260 1701 4,
1261 manager_->SetLevelInfo(texture_ref_, 1702 1,
1262 GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, false); 1703 0,
1263 signature2.clear(); 1704 GL_RGBA,
1264 manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2); 1705 GL_UNSIGNED_BYTE,
1265 EXPECT_FALSE(InSet(&string_set, signature2)); 1706 false);
1266 1707 signature2.clear();
1267 manager_->SetLevelInfo(texture_ref_, 1708 manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature2);
1268 GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, false); 1709 EXPECT_FALSE(InSet(&string_set, signature2));
1269 signature2.clear(); 1710
1270 manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2); 1711 manager_->SetLevelInfo(texture_ref_.get(),
1271 EXPECT_FALSE(InSet(&string_set, signature2)); 1712 GL_TEXTURE_2D,
1272 1713 1,
1273 manager_->SetLevelInfo(texture_ref_, 1714 GL_RGBA,
1274 GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, false); 1715 2,
1275 signature2.clear(); 1716 2,
1276 manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2); 1717 2,
1277 EXPECT_FALSE(InSet(&string_set, signature2)); 1718 0,
1278 1719 GL_RGBA,
1279 manager_->SetLevelInfo(texture_ref_, 1720 GL_UNSIGNED_BYTE,
1280 GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 1, 0, GL_RGBA, GL_FLOAT, 1721 false);
1281 false); 1722 signature2.clear();
1282 signature2.clear(); 1723 manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature2);
1283 manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2); 1724 EXPECT_FALSE(InSet(&string_set, signature2));
1725
1726 manager_->SetLevelInfo(texture_ref_.get(),
1727 GL_TEXTURE_2D,
1728 1,
1729 GL_RGBA,
1730 2,
1731 2,
1732 1,
1733 1,
1734 GL_RGBA,
1735 GL_UNSIGNED_BYTE,
1736 false);
1737 signature2.clear();
1738 manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature2);
1739 EXPECT_FALSE(InSet(&string_set, signature2));
1740
1741 manager_->SetLevelInfo(texture_ref_.get(),
1742 GL_TEXTURE_2D,
1743 1,
1744 GL_RGBA,
1745 2,
1746 2,
1747 1,
1748 0,
1749 GL_RGB,
1750 GL_UNSIGNED_BYTE,
1751 false);
1752 signature2.clear();
1753 manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature2);
1754 EXPECT_FALSE(InSet(&string_set, signature2));
1755
1756 manager_->SetLevelInfo(texture_ref_.get(),
1757 GL_TEXTURE_2D,
1758 1,
1759 GL_RGBA,
1760 2,
1761 2,
1762 1,
1763 0,
1764 GL_RGBA,
1765 GL_FLOAT,
1766 false);
1767 signature2.clear();
1768 manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature2);
1284 EXPECT_FALSE(InSet(&string_set, signature2)); 1769 EXPECT_FALSE(InSet(&string_set, signature2));
1285 1770
1286 // put it back 1771 // put it back
1287 manager_->SetLevelInfo(texture_ref_, 1772 manager_->SetLevelInfo(texture_ref_.get(),
1288 GL_TEXTURE_2D, 1, GL_RGBA, 2, 2, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 1773 GL_TEXTURE_2D,
1289 false); 1774 1,
1290 signature2.clear(); 1775 GL_RGBA,
1291 manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2); 1776 2,
1777 2,
1778 1,
1779 0,
1780 GL_RGBA,
1781 GL_UNSIGNED_BYTE,
1782 false);
1783 signature2.clear();
1784 manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature2);
1292 EXPECT_EQ(signature1, signature2); 1785 EXPECT_EQ(signature1, signature2);
1293 1786
1294 // check changing parameters changes signature. 1787 // check changing parameters changes signature.
1295 SetParameter(texture_ref_, GL_TEXTURE_MIN_FILTER, GL_NEAREST, GL_NO_ERROR); 1788 SetParameter(
1296 signature2.clear(); 1789 texture_ref_.get(), GL_TEXTURE_MIN_FILTER, GL_NEAREST, GL_NO_ERROR);
1297 manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2); 1790 signature2.clear();
1298 EXPECT_FALSE(InSet(&string_set, signature2)); 1791 manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature2);
1299 1792 EXPECT_FALSE(InSet(&string_set, signature2));
1300 SetParameter(texture_ref_, GL_TEXTURE_MIN_FILTER, 1793
1301 GL_NEAREST_MIPMAP_LINEAR, GL_NO_ERROR); 1794 SetParameter(texture_ref_.get(),
1302 SetParameter(texture_ref_, GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR); 1795 GL_TEXTURE_MIN_FILTER,
1303 signature2.clear(); 1796 GL_NEAREST_MIPMAP_LINEAR,
1304 manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2); 1797 GL_NO_ERROR);
1305 EXPECT_FALSE(InSet(&string_set, signature2)); 1798 SetParameter(
1306 1799 texture_ref_.get(), GL_TEXTURE_MAG_FILTER, GL_NEAREST, GL_NO_ERROR);
1307 SetParameter(texture_ref_, GL_TEXTURE_MAG_FILTER, GL_LINEAR, GL_NO_ERROR); 1800 signature2.clear();
1308 SetParameter(texture_ref_, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE, GL_NO_ERROR); 1801 manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature2);
1309 signature2.clear(); 1802 EXPECT_FALSE(InSet(&string_set, signature2));
1310 manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2); 1803
1311 EXPECT_FALSE(InSet(&string_set, signature2)); 1804 SetParameter(
1312 1805 texture_ref_.get(), GL_TEXTURE_MAG_FILTER, GL_LINEAR, GL_NO_ERROR);
1313 SetParameter(texture_ref_, GL_TEXTURE_WRAP_S, GL_REPEAT, GL_NO_ERROR); 1806 SetParameter(
1314 SetParameter(texture_ref_, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE, GL_NO_ERROR); 1807 texture_ref_.get(), GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE, GL_NO_ERROR);
1315 signature2.clear(); 1808 signature2.clear();
1316 manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2); 1809 manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature2);
1810 EXPECT_FALSE(InSet(&string_set, signature2));
1811
1812 SetParameter(texture_ref_.get(), GL_TEXTURE_WRAP_S, GL_REPEAT, GL_NO_ERROR);
1813 SetParameter(
1814 texture_ref_.get(), GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE, GL_NO_ERROR);
1815 signature2.clear();
1816 manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature2);
1317 EXPECT_FALSE(InSet(&string_set, signature2)); 1817 EXPECT_FALSE(InSet(&string_set, signature2));
1318 1818
1319 // Check putting it back genenerates the same signature 1819 // Check putting it back genenerates the same signature
1320 SetParameter(texture_ref_, GL_TEXTURE_WRAP_T, GL_REPEAT, GL_NO_ERROR); 1820 SetParameter(texture_ref_.get(), GL_TEXTURE_WRAP_T, GL_REPEAT, GL_NO_ERROR);
1321 signature2.clear(); 1821 signature2.clear();
1322 manager_->AddToSignature(texture_ref_, GL_TEXTURE_2D, 1, &signature2); 1822 manager_->AddToSignature(texture_ref_.get(), GL_TEXTURE_2D, 1, &signature2);
1323 EXPECT_EQ(signature1, signature2); 1823 EXPECT_EQ(signature1, signature2);
1324 1824
1325 // Check the set was acutally getting different signatures. 1825 // Check the set was acutally getting different signatures.
1326 EXPECT_EQ(11u, string_set.size()); 1826 EXPECT_EQ(11u, string_set.size());
1327 } 1827 }
1328 1828
1329 class ProduceConsumeTextureTest : public TextureTest { 1829 class ProduceConsumeTextureTest : public TextureTest {
1330 public: 1830 public:
1331 virtual void SetUp() { 1831 virtual void SetUp() {
1332 TextureTest::SetUpBase(NULL, "GL_OES_EGL_image_external"); 1832 TextureTest::SetUpBase(NULL, "GL_OES_EGL_image_external");
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
1443 1943
1444 private: 1944 private:
1445 static const GLuint kClient2Id; 1945 static const GLuint kClient2Id;
1446 static const GLuint kService2Id; 1946 static const GLuint kService2Id;
1447 }; 1947 };
1448 1948
1449 const GLuint ProduceConsumeTextureTest::kClient2Id = 2; 1949 const GLuint ProduceConsumeTextureTest::kClient2Id = 2;
1450 const GLuint ProduceConsumeTextureTest::kService2Id = 12; 1950 const GLuint ProduceConsumeTextureTest::kService2Id = 12;
1451 1951
1452 TEST_F(ProduceConsumeTextureTest, ProduceConsume2D) { 1952 TEST_F(ProduceConsumeTextureTest, ProduceConsume2D) {
1453 manager_->SetTarget(texture_ref_, GL_TEXTURE_2D); 1953 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_2D);
1454 Texture* texture = texture_ref_->texture(); 1954 Texture* texture = texture_ref_->texture();
1455 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target()); 1955 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_2D), texture->target());
1456 LevelInfo level0( 1956 LevelInfo level0(
1457 GL_TEXTURE_2D, GL_RGBA, 4, 4, 1, 0, GL_UNSIGNED_BYTE, true); 1957 GL_TEXTURE_2D, GL_RGBA, 4, 4, 1, 0, GL_UNSIGNED_BYTE, true);
1458 SetLevelInfo(texture_ref_, 0, level0); 1958 SetLevelInfo(texture_ref_.get(), 0, level0);
1459 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_)); 1959 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture_ref_.get()));
1460 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 1960 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
1461 LevelInfo level1 = GetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 1); 1961 LevelInfo level1 = GetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 1);
1462 LevelInfo level2 = GetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 2); 1962 LevelInfo level2 = GetLevelInfo(texture_ref_.get(), GL_TEXTURE_2D, 2);
1463 Texture* produced_texture = Produce(texture_ref_); 1963 Texture* produced_texture = Produce(texture_ref_.get());
1464 EXPECT_EQ(produced_texture, texture); 1964 EXPECT_EQ(produced_texture, texture);
1465 1965
1466 // Make this texture bigger with more levels, and make sure they get 1966 // Make this texture bigger with more levels, and make sure they get
1467 // clobbered correctly during Consume(). 1967 // clobbered correctly during Consume().
1468 manager_->SetTarget(texture2_, GL_TEXTURE_2D); 1968 manager_->SetTarget(texture2_.get(), GL_TEXTURE_2D);
1469 SetLevelInfo( 1969 SetLevelInfo(
1470 texture2_, 1970 texture2_.get(),
1471 0, 1971 0,
1472 LevelInfo(GL_TEXTURE_2D, GL_RGBA, 16, 16, 1, 0, GL_UNSIGNED_BYTE, false)); 1972 LevelInfo(GL_TEXTURE_2D, GL_RGBA, 16, 16, 1, 0, GL_UNSIGNED_BYTE, false));
1473 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture2_)); 1973 EXPECT_TRUE(manager_->MarkMipmapsGenerated(texture2_.get()));
1474 texture = texture2_->texture(); 1974 texture = texture2_->texture();
1475 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 1975 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
1476 EXPECT_EQ(1024U + 256U + 64U + 16U + 4U, texture->estimated_size()); 1976 EXPECT_EQ(1024U + 256U + 64U + 16U + 4U, texture->estimated_size());
1477 1977
1478 GLuint client_id = texture2_->client_id(); 1978 GLuint client_id = texture2_->client_id();
1479 manager_->RemoveTexture(client_id); 1979 manager_->RemoveTexture(client_id);
1480 Consume(client_id, produced_texture); 1980 Consume(client_id, produced_texture);
1481 scoped_refptr<TextureRef> restored_texture = manager_->GetTexture(client_id); 1981 scoped_refptr<TextureRef> restored_texture = manager_->GetTexture(client_id);
1482 EXPECT_EQ(produced_texture, restored_texture->texture()); 1982 EXPECT_EQ(produced_texture, restored_texture->texture());
1483 EXPECT_EQ(level0, GetLevelInfo(restored_texture.get(), GL_TEXTURE_2D, 0)); 1983 EXPECT_EQ(level0, GetLevelInfo(restored_texture.get(), GL_TEXTURE_2D, 0));
1484 EXPECT_EQ(level1, GetLevelInfo(restored_texture.get(), GL_TEXTURE_2D, 1)); 1984 EXPECT_EQ(level1, GetLevelInfo(restored_texture.get(), GL_TEXTURE_2D, 1));
1485 EXPECT_EQ(level2, GetLevelInfo(restored_texture.get(), GL_TEXTURE_2D, 2)); 1985 EXPECT_EQ(level2, GetLevelInfo(restored_texture.get(), GL_TEXTURE_2D, 2));
1486 texture = restored_texture->texture(); 1986 texture = restored_texture->texture();
1487 EXPECT_EQ(64U + 16U + 4U, texture->estimated_size()); 1987 EXPECT_EQ(64U + 16U + 4U, texture->estimated_size());
1488 GLint w, h; 1988 GLint w, h;
1489 EXPECT_FALSE(texture->GetLevelSize(GL_TEXTURE_2D, 3, &w, &h)); 1989 EXPECT_FALSE(texture->GetLevelSize(GL_TEXTURE_2D, 3, &w, &h));
1490 1990
1491 // However the old texture ref still exists if it was referenced somewhere. 1991 // However the old texture ref still exists if it was referenced somewhere.
1492 EXPECT_EQ(1024U + 256U + 64U + 16U + 4U, 1992 EXPECT_EQ(1024U + 256U + 64U + 16U + 4U,
1493 texture2_->texture()->estimated_size()); 1993 texture2_->texture()->estimated_size());
1494 } 1994 }
1495 1995
1496 TEST_F(ProduceConsumeTextureTest, ProduceConsumeClearRectangle) { 1996 TEST_F(ProduceConsumeTextureTest, ProduceConsumeClearRectangle) {
1497 manager_->SetTarget(texture_ref_, GL_TEXTURE_RECTANGLE_ARB); 1997 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_RECTANGLE_ARB);
1498 Texture* texture = texture_ref_->texture(); 1998 Texture* texture = texture_ref_->texture();
1499 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_RECTANGLE_ARB), texture->target()); 1999 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_RECTANGLE_ARB), texture->target());
1500 LevelInfo level0( 2000 LevelInfo level0(
1501 GL_TEXTURE_RECTANGLE_ARB, GL_RGBA, 1, 1, 1, 0, GL_UNSIGNED_BYTE, false); 2001 GL_TEXTURE_RECTANGLE_ARB, GL_RGBA, 1, 1, 1, 0, GL_UNSIGNED_BYTE, false);
1502 SetLevelInfo(texture_ref_, 0, level0); 2002 SetLevelInfo(texture_ref_.get(), 0, level0);
1503 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 2003 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
1504 Texture* produced_texture = Produce(texture_ref_); 2004 Texture* produced_texture = Produce(texture_ref_.get());
1505 EXPECT_EQ(produced_texture, texture); 2005 EXPECT_EQ(produced_texture, texture);
1506 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_RECTANGLE_ARB), 2006 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_RECTANGLE_ARB),
1507 produced_texture->target()); 2007 produced_texture->target());
1508 2008
1509 GLuint client_id = texture2_->client_id(); 2009 GLuint client_id = texture2_->client_id();
1510 manager_->RemoveTexture(client_id); 2010 manager_->RemoveTexture(client_id);
1511 Consume(client_id, produced_texture); 2011 Consume(client_id, produced_texture);
1512 scoped_refptr<TextureRef> restored_texture = manager_->GetTexture(client_id); 2012 scoped_refptr<TextureRef> restored_texture = manager_->GetTexture(client_id);
1513 EXPECT_EQ(produced_texture, restored_texture->texture()); 2013 EXPECT_EQ(produced_texture, restored_texture->texture());
1514 2014
1515 // See if we can clear the previously uncleared level now. 2015 // See if we can clear the previously uncleared level now.
1516 EXPECT_EQ(level0, 2016 EXPECT_EQ(level0,
1517 GetLevelInfo(restored_texture.get(), GL_TEXTURE_RECTANGLE_ARB, 0)); 2017 GetLevelInfo(restored_texture.get(), GL_TEXTURE_RECTANGLE_ARB, 0));
1518 EXPECT_CALL(*decoder_, ClearLevel(_, _, _, _, _, _, _, _, _)) 2018 EXPECT_CALL(*decoder_, ClearLevel(_, _, _, _, _, _, _, _, _))
1519 .WillRepeatedly(Return(true)); 2019 .WillRepeatedly(Return(true));
1520 EXPECT_TRUE(manager_->ClearTextureLevel( 2020 EXPECT_TRUE(manager_->ClearTextureLevel(
1521 decoder_.get(), restored_texture, GL_TEXTURE_RECTANGLE_ARB, 0)); 2021 decoder_.get(), restored_texture.get(), GL_TEXTURE_RECTANGLE_ARB, 0));
1522 } 2022 }
1523 2023
1524 TEST_F(ProduceConsumeTextureTest, ProduceConsumeStreamTexture) { 2024 TEST_F(ProduceConsumeTextureTest, ProduceConsumeStreamTexture) {
1525 manager_->SetTarget(texture_ref_, GL_TEXTURE_EXTERNAL_OES); 2025 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_EXTERNAL_OES);
1526 Texture* texture = texture_ref_->texture(); 2026 Texture* texture = texture_ref_->texture();
1527 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), texture->target()); 2027 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), texture->target());
1528 manager_->SetStreamTexture(texture_ref_, true); 2028 manager_->SetStreamTexture(texture_ref_.get(), true);
1529 GLuint service_id = texture->service_id(); 2029 GLuint service_id = texture->service_id();
1530 Texture* produced_texture = Produce(texture_ref_); 2030 Texture* produced_texture = Produce(texture_ref_.get());
1531 EXPECT_TRUE(texture->IsStreamTexture()); 2031 EXPECT_TRUE(texture->IsStreamTexture());
1532 2032
1533 GLuint client_id = texture2_->client_id(); 2033 GLuint client_id = texture2_->client_id();
1534 manager_->RemoveTexture(client_id); 2034 manager_->RemoveTexture(client_id);
1535 Consume(client_id, produced_texture); 2035 Consume(client_id, produced_texture);
1536 scoped_refptr<TextureRef> restored_texture = manager_->GetTexture(client_id); 2036 scoped_refptr<TextureRef> restored_texture = manager_->GetTexture(client_id);
1537 EXPECT_EQ(produced_texture, restored_texture->texture()); 2037 EXPECT_EQ(produced_texture, restored_texture->texture());
1538 EXPECT_TRUE(restored_texture->texture()->IsStreamTexture()); 2038 EXPECT_TRUE(restored_texture->texture()->IsStreamTexture());
1539 EXPECT_TRUE(restored_texture->texture()->IsImmutable()); 2039 EXPECT_TRUE(restored_texture->texture()->IsImmutable());
1540 EXPECT_EQ(service_id, restored_texture->service_id()); 2040 EXPECT_EQ(service_id, restored_texture->service_id());
1541 } 2041 }
1542 2042
1543 TEST_F(ProduceConsumeTextureTest, ProduceConsumeCube) { 2043 TEST_F(ProduceConsumeTextureTest, ProduceConsumeCube) {
1544 manager_->SetTarget(texture_ref_, GL_TEXTURE_CUBE_MAP); 2044 manager_->SetTarget(texture_ref_.get(), GL_TEXTURE_CUBE_MAP);
1545 Texture* texture = texture_ref_->texture(); 2045 Texture* texture = texture_ref_->texture();
1546 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_CUBE_MAP), texture->target()); 2046 EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_CUBE_MAP), texture->target());
1547 LevelInfo face0(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 2047 LevelInfo face0(GL_TEXTURE_CUBE_MAP_POSITIVE_X,
1548 GL_RGBA, 2048 GL_RGBA,
1549 1, 2049 1,
1550 1, 2050 1,
1551 1, 2051 1,
1552 0, 2052 0,
1553 GL_UNSIGNED_BYTE, 2053 GL_UNSIGNED_BYTE,
1554 true); 2054 true);
1555 LevelInfo face5(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 2055 LevelInfo face5(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,
1556 GL_RGBA, 2056 GL_RGBA,
1557 3, 2057 3,
1558 3, 2058 3,
1559 1, 2059 1,
1560 0, 2060 0,
1561 GL_UNSIGNED_BYTE, 2061 GL_UNSIGNED_BYTE,
1562 true); 2062 true);
1563 SetLevelInfo(texture_ref_, 0, face0); 2063 SetLevelInfo(texture_ref_.get(), 0, face0);
1564 SetLevelInfo(texture_ref_, 0, face5); 2064 SetLevelInfo(texture_ref_.get(), 0, face5);
1565 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture)); 2065 EXPECT_TRUE(TextureTestHelper::IsTextureComplete(texture));
1566 Texture* produced_texture = Produce(texture_ref_); 2066 Texture* produced_texture = Produce(texture_ref_.get());
1567 EXPECT_EQ(produced_texture, texture); 2067 EXPECT_EQ(produced_texture, texture);
1568 2068
1569 GLuint client_id = texture2_->client_id(); 2069 GLuint client_id = texture2_->client_id();
1570 manager_->RemoveTexture(client_id); 2070 manager_->RemoveTexture(client_id);
1571 Consume(client_id, produced_texture); 2071 Consume(client_id, produced_texture);
1572 scoped_refptr<TextureRef> restored_texture = manager_->GetTexture(client_id); 2072 scoped_refptr<TextureRef> restored_texture = manager_->GetTexture(client_id);
1573 EXPECT_EQ(produced_texture, restored_texture->texture()); 2073 EXPECT_EQ(produced_texture, restored_texture->texture());
1574 EXPECT_EQ(face0, 2074 EXPECT_EQ(
1575 GetLevelInfo(restored_texture, GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0)); 2075 face0,
1576 EXPECT_EQ(face5, 2076 GetLevelInfo(restored_texture.get(), GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0));
1577 GetLevelInfo(restored_texture, GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0)); 2077 EXPECT_EQ(
2078 face5,
2079 GetLevelInfo(restored_texture.get(), GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0));
1578 } 2080 }
1579 2081
1580 class CountingMemoryTracker : public MemoryTracker { 2082 class CountingMemoryTracker : public MemoryTracker {
1581 public: 2083 public:
1582 CountingMemoryTracker() { 2084 CountingMemoryTracker() {
1583 current_size_[0] = 0; 2085 current_size_[0] = 0;
1584 current_size_[1] = 0; 2086 current_size_[1] = 0;
1585 } 2087 }
1586 2088
1587 virtual void TrackMemoryAllocatedChange(size_t old_size, 2089 virtual void TrackMemoryAllocatedChange(size_t old_size,
(...skipping 26 matching lines...) Expand all
1614 } 2116 }
1615 2117
1616 virtual ~SharedTextureTest() { 2118 virtual ~SharedTextureTest() {
1617 } 2119 }
1618 2120
1619 virtual void SetUp() { 2121 virtual void SetUp() {
1620 gl_.reset(new ::gfx::MockGLInterface()); 2122 gl_.reset(new ::gfx::MockGLInterface());
1621 ::gfx::GLInterface::SetGLInterface(gl_.get()); 2123 ::gfx::GLInterface::SetGLInterface(gl_.get());
1622 2124
1623 memory_tracker1_ = new CountingMemoryTracker; 2125 memory_tracker1_ = new CountingMemoryTracker;
1624 texture_manager1_.reset(new TextureManager( 2126 texture_manager1_.reset(
1625 memory_tracker1_, feature_info_.get(), 2127 new TextureManager(memory_tracker1_.get(),
1626 TextureManagerTest::kMaxTextureSize, 2128 feature_info_.get(),
1627 TextureManagerTest::kMaxCubeMapTextureSize)); 2129 TextureManagerTest::kMaxTextureSize,
2130 TextureManagerTest::kMaxCubeMapTextureSize));
1628 memory_tracker2_ = new CountingMemoryTracker; 2131 memory_tracker2_ = new CountingMemoryTracker;
1629 texture_manager2_.reset(new TextureManager( 2132 texture_manager2_.reset(
1630 memory_tracker2_, feature_info_.get(), 2133 new TextureManager(memory_tracker2_.get(),
1631 TextureManagerTest::kMaxTextureSize, 2134 feature_info_.get(),
1632 TextureManagerTest::kMaxCubeMapTextureSize)); 2135 TextureManagerTest::kMaxTextureSize,
2136 TextureManagerTest::kMaxCubeMapTextureSize));
1633 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), ""); 2137 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), "");
1634 texture_manager1_->Initialize(); 2138 texture_manager1_->Initialize();
1635 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), ""); 2139 TestHelper::SetupTextureManagerInitExpectations(gl_.get(), "");
1636 texture_manager2_->Initialize(); 2140 texture_manager2_->Initialize();
1637 } 2141 }
1638 2142
1639 virtual void TearDown() { 2143 virtual void TearDown() {
1640 texture_manager2_->Destroy(false); 2144 texture_manager2_->Destroy(false);
1641 texture_manager2_.reset(); 2145 texture_manager2_.reset();
1642 texture_manager1_->Destroy(false); 2146 texture_manager1_->Destroy(false);
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
1689 // Associate new texture ref to other texture manager, should account for it 2193 // Associate new texture ref to other texture manager, should account for it
1690 // too. 2194 // too.
1691 scoped_refptr<TextureRef> ref2 = 2195 scoped_refptr<TextureRef> ref2 =
1692 texture_manager2_->Consume(20, ref1->texture()); 2196 texture_manager2_->Consume(20, ref1->texture());
1693 EXPECT_FALSE(texture_manager2_->HaveUnrenderableTextures()); 2197 EXPECT_FALSE(texture_manager2_->HaveUnrenderableTextures());
1694 EXPECT_FALSE(texture_manager2_->HaveUnsafeTextures()); 2198 EXPECT_FALSE(texture_manager2_->HaveUnsafeTextures());
1695 EXPECT_FALSE(texture_manager2_->HaveUnclearedMips()); 2199 EXPECT_FALSE(texture_manager2_->HaveUnclearedMips());
1696 2200
1697 // Make texture renderable but uncleared on one texture manager, should affect 2201 // Make texture renderable but uncleared on one texture manager, should affect
1698 // other one. 2202 // other one.
1699 texture_manager1_->SetTarget(ref1, GL_TEXTURE_2D); 2203 texture_manager1_->SetTarget(ref1.get(), GL_TEXTURE_2D);
1700 EXPECT_TRUE(texture_manager1_->HaveUnrenderableTextures()); 2204 EXPECT_TRUE(texture_manager1_->HaveUnrenderableTextures());
1701 EXPECT_FALSE(texture_manager1_->HaveUnsafeTextures()); 2205 EXPECT_FALSE(texture_manager1_->HaveUnsafeTextures());
1702 EXPECT_FALSE(texture_manager1_->HaveUnclearedMips()); 2206 EXPECT_FALSE(texture_manager1_->HaveUnclearedMips());
1703 EXPECT_TRUE(texture_manager2_->HaveUnrenderableTextures()); 2207 EXPECT_TRUE(texture_manager2_->HaveUnrenderableTextures());
1704 EXPECT_FALSE(texture_manager2_->HaveUnsafeTextures()); 2208 EXPECT_FALSE(texture_manager2_->HaveUnsafeTextures());
1705 EXPECT_FALSE(texture_manager2_->HaveUnclearedMips()); 2209 EXPECT_FALSE(texture_manager2_->HaveUnclearedMips());
1706 2210
1707 texture_manager1_->SetLevelInfo(ref1, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, 2211 texture_manager1_->SetLevelInfo(ref1.get(),
1708 GL_RGBA, GL_UNSIGNED_BYTE, false); 2212 GL_TEXTURE_2D,
2213 0,
2214 GL_RGBA,
2215 1,
2216 1,
2217 1,
2218 0,
2219 GL_RGBA,
2220 GL_UNSIGNED_BYTE,
2221 false);
1709 EXPECT_FALSE(texture_manager1_->HaveUnrenderableTextures()); 2222 EXPECT_FALSE(texture_manager1_->HaveUnrenderableTextures());
1710 EXPECT_TRUE(texture_manager1_->HaveUnsafeTextures()); 2223 EXPECT_TRUE(texture_manager1_->HaveUnsafeTextures());
1711 EXPECT_TRUE(texture_manager1_->HaveUnclearedMips()); 2224 EXPECT_TRUE(texture_manager1_->HaveUnclearedMips());
1712 EXPECT_FALSE(texture_manager2_->HaveUnrenderableTextures()); 2225 EXPECT_FALSE(texture_manager2_->HaveUnrenderableTextures());
1713 EXPECT_TRUE(texture_manager2_->HaveUnsafeTextures()); 2226 EXPECT_TRUE(texture_manager2_->HaveUnsafeTextures());
1714 EXPECT_TRUE(texture_manager2_->HaveUnclearedMips()); 2227 EXPECT_TRUE(texture_manager2_->HaveUnclearedMips());
1715 2228
1716 // Make texture cleared on one texture manager, should affect other one. 2229 // Make texture cleared on one texture manager, should affect other one.
1717 texture_manager1_->SetLevelCleared(ref1, GL_TEXTURE_2D, 0, true); 2230 texture_manager1_->SetLevelCleared(ref1.get(), GL_TEXTURE_2D, 0, true);
1718 EXPECT_FALSE(texture_manager1_->HaveUnsafeTextures()); 2231 EXPECT_FALSE(texture_manager1_->HaveUnsafeTextures());
1719 EXPECT_FALSE(texture_manager1_->HaveUnclearedMips()); 2232 EXPECT_FALSE(texture_manager1_->HaveUnclearedMips());
1720 EXPECT_FALSE(texture_manager2_->HaveUnsafeTextures()); 2233 EXPECT_FALSE(texture_manager2_->HaveUnsafeTextures());
1721 EXPECT_FALSE(texture_manager2_->HaveUnclearedMips()); 2234 EXPECT_FALSE(texture_manager2_->HaveUnclearedMips());
1722 2235
1723 EXPECT_CALL(*gl_, DeleteTextures(1, _)) 2236 EXPECT_CALL(*gl_, DeleteTextures(1, _))
1724 .Times(1) 2237 .Times(1)
1725 .RetiresOnSaturation(); 2238 .RetiresOnSaturation();
1726 texture_manager1_->RemoveTexture(10); 2239 texture_manager1_->RemoveTexture(10);
1727 texture_manager2_->RemoveTexture(20); 2240 texture_manager2_->RemoveTexture(20);
1728 } 2241 }
1729 2242
1730 TEST_F(SharedTextureTest, FBOCompletenessCheck) { 2243 TEST_F(SharedTextureTest, FBOCompletenessCheck) {
1731 const GLenum kCompleteValue = GL_FRAMEBUFFER_COMPLETE; 2244 const GLenum kCompleteValue = GL_FRAMEBUFFER_COMPLETE;
1732 FramebufferManager framebuffer_manager1(1, 1); 2245 FramebufferManager framebuffer_manager1(1, 1);
1733 texture_manager1_->set_framebuffer_manager(&framebuffer_manager1); 2246 texture_manager1_->set_framebuffer_manager(&framebuffer_manager1);
1734 FramebufferManager framebuffer_manager2(1, 1); 2247 FramebufferManager framebuffer_manager2(1, 1);
1735 texture_manager2_->set_framebuffer_manager(&framebuffer_manager2); 2248 texture_manager2_->set_framebuffer_manager(&framebuffer_manager2);
1736 2249
1737 scoped_refptr<TextureRef> ref1 = texture_manager1_->CreateTexture(10, 10); 2250 scoped_refptr<TextureRef> ref1 = texture_manager1_->CreateTexture(10, 10);
1738 framebuffer_manager1.CreateFramebuffer(10, 10); 2251 framebuffer_manager1.CreateFramebuffer(10, 10);
1739 scoped_refptr<Framebuffer> framebuffer1 = 2252 scoped_refptr<Framebuffer> framebuffer1 =
1740 framebuffer_manager1.GetFramebuffer(10); 2253 framebuffer_manager1.GetFramebuffer(10);
1741 framebuffer1->AttachTexture(GL_COLOR_ATTACHMENT0, ref1, GL_TEXTURE_2D, 0); 2254 framebuffer1->AttachTexture(
1742 EXPECT_FALSE(framebuffer_manager1.IsComplete(framebuffer1)); 2255 GL_COLOR_ATTACHMENT0, ref1.get(), GL_TEXTURE_2D, 0);
2256 EXPECT_FALSE(framebuffer_manager1.IsComplete(framebuffer1.get()));
1743 EXPECT_NE(kCompleteValue, framebuffer1->IsPossiblyComplete()); 2257 EXPECT_NE(kCompleteValue, framebuffer1->IsPossiblyComplete());
1744 2258
1745 // Make FBO complete in manager 1. 2259 // Make FBO complete in manager 1.
1746 texture_manager1_->SetTarget(ref1, GL_TEXTURE_2D); 2260 texture_manager1_->SetTarget(ref1.get(), GL_TEXTURE_2D);
1747 texture_manager1_->SetLevelInfo(ref1, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, 2261 texture_manager1_->SetLevelInfo(ref1.get(),
1748 GL_RGBA, GL_UNSIGNED_BYTE, true); 2262 GL_TEXTURE_2D,
2263 0,
2264 GL_RGBA,
2265 1,
2266 1,
2267 1,
2268 0,
2269 GL_RGBA,
2270 GL_UNSIGNED_BYTE,
2271 true);
1749 EXPECT_EQ(kCompleteValue, framebuffer1->IsPossiblyComplete()); 2272 EXPECT_EQ(kCompleteValue, framebuffer1->IsPossiblyComplete());
1750 framebuffer_manager1.MarkAsComplete(framebuffer1); 2273 framebuffer_manager1.MarkAsComplete(framebuffer1.get());
1751 EXPECT_TRUE(framebuffer_manager1.IsComplete(framebuffer1)); 2274 EXPECT_TRUE(framebuffer_manager1.IsComplete(framebuffer1.get()));
1752 2275
1753 // Share texture with manager 2. 2276 // Share texture with manager 2.
1754 scoped_refptr<TextureRef> ref2 = 2277 scoped_refptr<TextureRef> ref2 =
1755 texture_manager2_->Consume(20, ref1->texture()); 2278 texture_manager2_->Consume(20, ref1->texture());
1756 framebuffer_manager2.CreateFramebuffer(20, 20); 2279 framebuffer_manager2.CreateFramebuffer(20, 20);
1757 scoped_refptr<Framebuffer> framebuffer2 = 2280 scoped_refptr<Framebuffer> framebuffer2 =
1758 framebuffer_manager2.GetFramebuffer(20); 2281 framebuffer_manager2.GetFramebuffer(20);
1759 framebuffer2->AttachTexture(GL_COLOR_ATTACHMENT0, ref2, GL_TEXTURE_2D, 0); 2282 framebuffer2->AttachTexture(
1760 EXPECT_FALSE(framebuffer_manager2.IsComplete(framebuffer2)); 2283 GL_COLOR_ATTACHMENT0, ref2.get(), GL_TEXTURE_2D, 0);
2284 EXPECT_FALSE(framebuffer_manager2.IsComplete(framebuffer2.get()));
1761 EXPECT_EQ(kCompleteValue, framebuffer2->IsPossiblyComplete()); 2285 EXPECT_EQ(kCompleteValue, framebuffer2->IsPossiblyComplete());
1762 framebuffer_manager2.MarkAsComplete(framebuffer2); 2286 framebuffer_manager2.MarkAsComplete(framebuffer2.get());
1763 EXPECT_TRUE(framebuffer_manager2.IsComplete(framebuffer2)); 2287 EXPECT_TRUE(framebuffer_manager2.IsComplete(framebuffer2.get()));
1764 2288
1765 // Change level for texture, both FBOs should be marked incomplete 2289 // Change level for texture, both FBOs should be marked incomplete
1766 texture_manager1_->SetLevelInfo(ref1, GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 1, 0, 2290 texture_manager1_->SetLevelInfo(ref1.get(),
1767 GL_RGBA, GL_UNSIGNED_BYTE, true); 2291 GL_TEXTURE_2D,
1768 EXPECT_FALSE(framebuffer_manager1.IsComplete(framebuffer1)); 2292 0,
2293 GL_RGBA,
2294 1,
2295 1,
2296 1,
2297 0,
2298 GL_RGBA,
2299 GL_UNSIGNED_BYTE,
2300 true);
2301 EXPECT_FALSE(framebuffer_manager1.IsComplete(framebuffer1.get()));
1769 EXPECT_EQ(kCompleteValue, framebuffer1->IsPossiblyComplete()); 2302 EXPECT_EQ(kCompleteValue, framebuffer1->IsPossiblyComplete());
1770 framebuffer_manager1.MarkAsComplete(framebuffer1); 2303 framebuffer_manager1.MarkAsComplete(framebuffer1.get());
1771 EXPECT_TRUE(framebuffer_manager1.IsComplete(framebuffer1)); 2304 EXPECT_TRUE(framebuffer_manager1.IsComplete(framebuffer1.get()));
1772 EXPECT_FALSE(framebuffer_manager2.IsComplete(framebuffer2)); 2305 EXPECT_FALSE(framebuffer_manager2.IsComplete(framebuffer2.get()));
1773 EXPECT_EQ(kCompleteValue, framebuffer2->IsPossiblyComplete()); 2306 EXPECT_EQ(kCompleteValue, framebuffer2->IsPossiblyComplete());
1774 framebuffer_manager2.MarkAsComplete(framebuffer2); 2307 framebuffer_manager2.MarkAsComplete(framebuffer2.get());
1775 EXPECT_TRUE(framebuffer_manager2.IsComplete(framebuffer2)); 2308 EXPECT_TRUE(framebuffer_manager2.IsComplete(framebuffer2.get()));
1776 2309
1777 EXPECT_CALL(*gl_, DeleteFramebuffersEXT(1, _)) 2310 EXPECT_CALL(*gl_, DeleteFramebuffersEXT(1, _))
1778 .Times(2) 2311 .Times(2)
1779 .RetiresOnSaturation(); 2312 .RetiresOnSaturation();
1780 framebuffer_manager1.RemoveFramebuffer(10); 2313 framebuffer_manager1.RemoveFramebuffer(10);
1781 framebuffer_manager2.RemoveFramebuffer(20); 2314 framebuffer_manager2.RemoveFramebuffer(20);
1782 EXPECT_CALL(*gl_, DeleteTextures(1, _)) 2315 EXPECT_CALL(*gl_, DeleteTextures(1, _))
1783 .Times(1) 2316 .Times(1)
1784 .RetiresOnSaturation(); 2317 .RetiresOnSaturation();
1785 texture_manager1_->RemoveTexture(10); 2318 texture_manager1_->RemoveTexture(10);
1786 texture_manager2_->RemoveTexture(20); 2319 texture_manager2_->RemoveTexture(20);
1787 } 2320 }
1788 2321
1789 TEST_F(SharedTextureTest, Memory) { 2322 TEST_F(SharedTextureTest, Memory) {
1790 size_t initial_memory1 = memory_tracker1_->GetSize(MemoryTracker::kUnmanaged); 2323 size_t initial_memory1 = memory_tracker1_->GetSize(MemoryTracker::kUnmanaged);
1791 size_t initial_memory2 = memory_tracker2_->GetSize(MemoryTracker::kUnmanaged); 2324 size_t initial_memory2 = memory_tracker2_->GetSize(MemoryTracker::kUnmanaged);
1792 2325
1793 // Newly created texture is unrenderable. 2326 // Newly created texture is unrenderable.
1794 scoped_refptr<TextureRef> ref1 = texture_manager1_->CreateTexture(10, 10); 2327 scoped_refptr<TextureRef> ref1 = texture_manager1_->CreateTexture(10, 10);
1795 texture_manager1_->SetTarget(ref1, GL_TEXTURE_2D); 2328 texture_manager1_->SetTarget(ref1.get(), GL_TEXTURE_2D);
1796 texture_manager1_->SetLevelInfo(ref1, GL_TEXTURE_2D, 0, GL_RGBA, 10, 10, 1, 0, 2329 texture_manager1_->SetLevelInfo(ref1.get(),
1797 GL_RGBA, GL_UNSIGNED_BYTE, false); 2330 GL_TEXTURE_2D,
2331 0,
2332 GL_RGBA,
2333 10,
2334 10,
2335 1,
2336 0,
2337 GL_RGBA,
2338 GL_UNSIGNED_BYTE,
2339 false);
1798 2340
1799 EXPECT_LT(0u, ref1->texture()->estimated_size()); 2341 EXPECT_LT(0u, ref1->texture()->estimated_size());
1800 EXPECT_EQ(initial_memory1 + ref1->texture()->estimated_size(), 2342 EXPECT_EQ(initial_memory1 + ref1->texture()->estimated_size(),
1801 memory_tracker1_->GetSize(MemoryTracker::kUnmanaged)); 2343 memory_tracker1_->GetSize(MemoryTracker::kUnmanaged));
1802 2344
1803 // Associate new texture ref to other texture manager, it doesn't account for 2345 // Associate new texture ref to other texture manager, it doesn't account for
1804 // the texture memory, the first memory tracker still has it. 2346 // the texture memory, the first memory tracker still has it.
1805 scoped_refptr<TextureRef> ref2 = 2347 scoped_refptr<TextureRef> ref2 =
1806 texture_manager2_->Consume(20, ref1->texture()); 2348 texture_manager2_->Consume(20, ref1->texture());
1807 EXPECT_EQ(initial_memory1 + ref1->texture()->estimated_size(), 2349 EXPECT_EQ(initial_memory1 + ref1->texture()->estimated_size(),
(...skipping 13 matching lines...) Expand all
1821 .Times(1) 2363 .Times(1)
1822 .RetiresOnSaturation(); 2364 .RetiresOnSaturation();
1823 ref2 = NULL; 2365 ref2 = NULL;
1824 texture_manager2_->RemoveTexture(20); 2366 texture_manager2_->RemoveTexture(20);
1825 EXPECT_EQ(initial_memory2, 2367 EXPECT_EQ(initial_memory2,
1826 memory_tracker2_->GetSize(MemoryTracker::kUnmanaged)); 2368 memory_tracker2_->GetSize(MemoryTracker::kUnmanaged));
1827 } 2369 }
1828 2370
1829 } // namespace gles2 2371 } // namespace gles2
1830 } // namespace gpu 2372 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/texture_manager.cc ('k') | gpu/command_buffer/service/vertex_array_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698