Chromium Code Reviews| OLD | NEW |
|---|---|
| 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/error_state_mock.h" | 5 #include "gpu/command_buffer/service/error_state_mock.h" |
| 6 #include "gpu/command_buffer/service/framebuffer_manager.h" | 6 #include "gpu/command_buffer/service/framebuffer_manager.h" |
| 7 #include "gpu/command_buffer/service/feature_info.h" | 7 #include "gpu/command_buffer/service/feature_info.h" |
| 8 #include "gpu/command_buffer/service/gpu_service_test.h" | 8 #include "gpu/command_buffer/service/gpu_service_test.h" |
| 9 #include "gpu/command_buffer/service/renderbuffer_manager.h" | 9 #include "gpu/command_buffer/service/renderbuffer_manager.h" |
| 10 #include "gpu/command_buffer/service/test_helper.h" | 10 #include "gpu/command_buffer/service/test_helper.h" |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 27 const GLint kMaxSamples = 4; | 27 const GLint kMaxSamples = 4; |
| 28 const uint32 kMaxDrawBuffers = 16; | 28 const uint32 kMaxDrawBuffers = 16; |
| 29 const uint32 kMaxColorAttachments = 16; | 29 const uint32 kMaxColorAttachments = 16; |
| 30 const bool kUseDefaultTextures = false; | 30 const bool kUseDefaultTextures = false; |
| 31 | 31 |
| 32 } // namespace | 32 } // namespace |
| 33 | 33 |
| 34 class FramebufferManagerTest : public GpuServiceTest { | 34 class FramebufferManagerTest : public GpuServiceTest { |
| 35 public: | 35 public: |
| 36 FramebufferManagerTest() | 36 FramebufferManagerTest() |
| 37 : manager_(1, 1, ContextGroup::CONTEXT_TYPE_UNDEFINED), | 37 : manager_(1, 1, ContextGroup::CONTEXT_TYPE_UNDEFINED, NULL), |
| 38 feature_info_(new FeatureInfo()) { | 38 feature_info_(new FeatureInfo()) { |
| 39 texture_manager_.reset(new TextureManager(NULL, | 39 texture_manager_.reset(new TextureManager(NULL, |
| 40 feature_info_.get(), | 40 feature_info_.get(), |
| 41 kMaxTextureSize, | 41 kMaxTextureSize, |
| 42 kMaxCubemapSize, | 42 kMaxCubemapSize, |
| 43 kMaxRectangleTextureSize, | 43 kMaxRectangleTextureSize, |
| 44 kMax3DTextureSize, | 44 kMax3DTextureSize, |
| 45 kUseDefaultTextures)); | 45 kUseDefaultTextures)); |
| 46 renderbuffer_manager_.reset(new RenderbufferManager(NULL, | 46 renderbuffer_manager_.reset(new RenderbufferManager(NULL, |
| 47 kMaxRenderbufferSize, | 47 kMaxRenderbufferSize, |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 104 framebuffer1 = manager_.GetFramebuffer(kClient1Id); | 104 framebuffer1 = manager_.GetFramebuffer(kClient1Id); |
| 105 ASSERT_TRUE(framebuffer1 == NULL); | 105 ASSERT_TRUE(framebuffer1 == NULL); |
| 106 } | 106 } |
| 107 | 107 |
| 108 class FramebufferInfoTestBase : public GpuServiceTest { | 108 class FramebufferInfoTestBase : public GpuServiceTest { |
| 109 public: | 109 public: |
| 110 static const GLuint kClient1Id = 1; | 110 static const GLuint kClient1Id = 1; |
| 111 static const GLuint kService1Id = 11; | 111 static const GLuint kService1Id = 11; |
| 112 | 112 |
| 113 explicit FramebufferInfoTestBase(ContextGroup::ContextType context_type) | 113 explicit FramebufferInfoTestBase(ContextGroup::ContextType context_type) |
| 114 : manager_(kMaxDrawBuffers, kMaxColorAttachments, context_type), | 114 : manager_(kMaxDrawBuffers, kMaxColorAttachments, context_type, NULL), |
| 115 feature_info_(new FeatureInfo()) { | 115 feature_info_(new FeatureInfo()) { |
| 116 manager_.SetFramebufferComboCompleteCacheForTesting( | |
| 117 new FramebufferCompletenessCache); | |
| 116 texture_manager_.reset(new TextureManager(NULL, | 118 texture_manager_.reset(new TextureManager(NULL, |
| 117 feature_info_.get(), | 119 feature_info_.get(), |
| 118 kMaxTextureSize, | 120 kMaxTextureSize, |
| 119 kMaxCubemapSize, | 121 kMaxCubemapSize, |
| 120 kMaxRectangleTextureSize, | 122 kMaxRectangleTextureSize, |
| 121 kMax3DTextureSize, | 123 kMax3DTextureSize, |
| 122 kUseDefaultTextures)); | 124 kUseDefaultTextures)); |
| 123 renderbuffer_manager_.reset(new RenderbufferManager(NULL, | 125 renderbuffer_manager_.reset(new RenderbufferManager(NULL, |
| 124 kMaxRenderbufferSize, | 126 kMaxRenderbufferSize, |
| 125 kMaxSamples, | 127 kMaxSamples, |
| (...skipping 702 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 828 texture_manager_->GetTexture(kTextureClient2Id)); | 830 texture_manager_->GetTexture(kTextureClient2Id)); |
| 829 ASSERT_TRUE(texture2.get() != NULL); | 831 ASSERT_TRUE(texture2.get() != NULL); |
| 830 texture_manager_->SetTarget(texture2.get(), GL_TEXTURE_2D); | 832 texture_manager_->SetTarget(texture2.get(), GL_TEXTURE_2D); |
| 831 | 833 |
| 832 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_FRAMEBUFFER)) | 834 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_FRAMEBUFFER)) |
| 833 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) | 835 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) |
| 834 .RetiresOnSaturation(); | 836 .RetiresOnSaturation(); |
| 835 framebuffer_->GetStatus(texture_manager_.get(), GL_FRAMEBUFFER); | 837 framebuffer_->GetStatus(texture_manager_.get(), GL_FRAMEBUFFER); |
| 836 | 838 |
| 837 // Check a second call for the same type does not call anything | 839 // Check a second call for the same type does not call anything |
| 838 if (!framebuffer_->AllowFramebufferComboCompleteMapForTesting()) { | |
| 839 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_FRAMEBUFFER)) | |
|
Ken Russell (switch to Gerrit)
2015/08/20 00:04:10
Why are these CheckFramebufferStatusEXT expectatio
no sievers
2015/08/20 00:11:29
Actually if you are setting the expectation than y
Tobias Sargeant
2015/08/20 11:05:13
Acknowledged.
Tobias Sargeant
2015/08/20 11:05:13
Acknowledged.
| |
| 840 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) | |
| 841 .RetiresOnSaturation(); | |
| 842 } | |
| 843 framebuffer_->GetStatus(texture_manager_.get(), GL_FRAMEBUFFER); | 840 framebuffer_->GetStatus(texture_manager_.get(), GL_FRAMEBUFFER); |
| 844 | 841 |
| 845 // Check changing the attachments calls CheckFramebufferStatus. | 842 // Check changing the attachments calls CheckFramebufferStatus. |
| 846 framebuffer_->AttachTexture( | 843 framebuffer_->AttachTexture( |
| 847 GL_COLOR_ATTACHMENT0, texture2.get(), kTarget1, kLevel1, kSamples1); | 844 GL_COLOR_ATTACHMENT0, texture2.get(), kTarget1, kLevel1, kSamples1); |
| 848 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_FRAMEBUFFER)) | 845 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_FRAMEBUFFER)) |
| 849 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)).RetiresOnSaturation(); | 846 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)).RetiresOnSaturation(); |
| 850 framebuffer_->GetStatus(texture_manager_.get(), GL_FRAMEBUFFER); | 847 framebuffer_->GetStatus(texture_manager_.get(), GL_FRAMEBUFFER); |
| 851 | 848 |
| 852 // Check a second call for the same type does not call anything. | 849 // Check a second call for the same type does not call anything. |
| 853 if (!framebuffer_->AllowFramebufferComboCompleteMapForTesting()) { | |
| 854 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_FRAMEBUFFER)) | |
| 855 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) | |
| 856 .RetiresOnSaturation(); | |
| 857 } | |
| 858 framebuffer_->GetStatus(texture_manager_.get(), GL_FRAMEBUFFER); | 850 framebuffer_->GetStatus(texture_manager_.get(), GL_FRAMEBUFFER); |
| 859 | 851 |
| 860 // Check a second call with a different target calls CheckFramebufferStatus. | 852 // Check a second call with a different target calls CheckFramebufferStatus. |
| 861 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_READ_FRAMEBUFFER)) | 853 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_READ_FRAMEBUFFER)) |
| 862 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) | 854 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) |
| 863 .RetiresOnSaturation(); | 855 .RetiresOnSaturation(); |
| 864 framebuffer_->GetStatus(texture_manager_.get(), GL_READ_FRAMEBUFFER); | 856 framebuffer_->GetStatus(texture_manager_.get(), GL_READ_FRAMEBUFFER); |
| 865 | 857 |
| 866 // Check a second call for the same type does not call anything. | 858 // Check a second call for the same type does not call anything. |
| 867 if (!framebuffer_->AllowFramebufferComboCompleteMapForTesting()) { | |
| 868 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_READ_FRAMEBUFFER)) | |
| 869 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) | |
| 870 .RetiresOnSaturation(); | |
| 871 } | |
| 872 framebuffer_->GetStatus(texture_manager_.get(), GL_READ_FRAMEBUFFER); | 859 framebuffer_->GetStatus(texture_manager_.get(), GL_READ_FRAMEBUFFER); |
| 873 | 860 |
| 874 // Check adding another attachment calls CheckFramebufferStatus. | 861 // Check adding another attachment calls CheckFramebufferStatus. |
| 875 framebuffer_->AttachRenderbuffer(GL_DEPTH_ATTACHMENT, renderbuffer1); | 862 framebuffer_->AttachRenderbuffer(GL_DEPTH_ATTACHMENT, renderbuffer1); |
| 876 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_READ_FRAMEBUFFER)) | 863 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_READ_FRAMEBUFFER)) |
| 877 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) | 864 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) |
| 878 .RetiresOnSaturation(); | 865 .RetiresOnSaturation(); |
| 879 framebuffer_->GetStatus(texture_manager_.get(), GL_READ_FRAMEBUFFER); | 866 framebuffer_->GetStatus(texture_manager_.get(), GL_READ_FRAMEBUFFER); |
| 880 | 867 |
| 881 // Check a second call for the same type does not call anything. | 868 // Check a second call for the same type does not call anything. |
| 882 if (!framebuffer_->AllowFramebufferComboCompleteMapForTesting()) { | |
| 883 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_READ_FRAMEBUFFER)) | |
| 884 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) | |
| 885 .RetiresOnSaturation(); | |
| 886 } | |
| 887 framebuffer_->GetStatus(texture_manager_.get(), GL_READ_FRAMEBUFFER); | 869 framebuffer_->GetStatus(texture_manager_.get(), GL_READ_FRAMEBUFFER); |
| 888 | 870 |
| 889 // Check changing the format calls CheckFramebuffferStatus. | 871 // Check changing the format calls CheckFramebuffferStatus. |
| 890 TestHelper::SetTexParameteriWithExpectations(gl_.get(), | 872 TestHelper::SetTexParameteriWithExpectations(gl_.get(), |
| 891 error_state_.get(), | 873 error_state_.get(), |
| 892 texture_manager_.get(), | 874 texture_manager_.get(), |
| 893 texture2.get(), | 875 texture2.get(), |
| 894 GL_TEXTURE_WRAP_S, | 876 GL_TEXTURE_WRAP_S, |
| 895 GL_CLAMP_TO_EDGE, | 877 GL_CLAMP_TO_EDGE, |
| 896 GL_NO_ERROR); | 878 GL_NO_ERROR); |
| 897 | 879 |
| 898 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_READ_FRAMEBUFFER)) | 880 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_READ_FRAMEBUFFER)) |
| 899 .WillOnce(Return(GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT)) | 881 .WillOnce(Return(GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT)) |
| 900 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) | 882 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) |
| 901 .RetiresOnSaturation(); | 883 .RetiresOnSaturation(); |
| 902 framebuffer_->GetStatus(texture_manager_.get(), GL_READ_FRAMEBUFFER); | 884 framebuffer_->GetStatus(texture_manager_.get(), GL_READ_FRAMEBUFFER); |
| 903 | 885 |
| 904 // Check since it did not return FRAMEBUFFER_COMPLETE that it calls | 886 // Check since it did not return FRAMEBUFFER_COMPLETE that it calls |
| 905 // CheckFramebufferStatus | 887 // CheckFramebufferStatus |
| 906 framebuffer_->GetStatus(texture_manager_.get(), GL_READ_FRAMEBUFFER); | 888 framebuffer_->GetStatus(texture_manager_.get(), GL_READ_FRAMEBUFFER); |
| 907 | 889 |
| 908 // Check putting it back does not call CheckFramebufferStatus. | 890 // Check putting it back does not call CheckFramebufferStatus. |
| 909 if (!framebuffer_->AllowFramebufferComboCompleteMapForTesting()) { | |
| 910 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_READ_FRAMEBUFFER)) | |
| 911 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) | |
| 912 .RetiresOnSaturation(); | |
| 913 } | |
| 914 TestHelper::SetTexParameteriWithExpectations(gl_.get(), | 891 TestHelper::SetTexParameteriWithExpectations(gl_.get(), |
| 915 error_state_.get(), | 892 error_state_.get(), |
| 916 texture_manager_.get(), | 893 texture_manager_.get(), |
| 917 texture2.get(), | 894 texture2.get(), |
| 918 GL_TEXTURE_WRAP_S, | 895 GL_TEXTURE_WRAP_S, |
| 919 GL_REPEAT, | 896 GL_REPEAT, |
| 920 GL_NO_ERROR); | 897 GL_NO_ERROR); |
| 921 framebuffer_->GetStatus(texture_manager_.get(), GL_READ_FRAMEBUFFER); | 898 framebuffer_->GetStatus(texture_manager_.get(), GL_READ_FRAMEBUFFER); |
| 922 | 899 |
| 923 // Check Unbinding does not call CheckFramebufferStatus | 900 // Check Unbinding does not call CheckFramebufferStatus |
| 924 framebuffer_->UnbindRenderbuffer(GL_RENDERBUFFER, renderbuffer1); | 901 framebuffer_->UnbindRenderbuffer(GL_RENDERBUFFER, renderbuffer1); |
| 925 if (!framebuffer_->AllowFramebufferComboCompleteMapForTesting()) { | |
| 926 EXPECT_CALL(*gl_, CheckFramebufferStatusEXT(GL_READ_FRAMEBUFFER)) | |
| 927 .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) | |
| 928 .RetiresOnSaturation(); | |
| 929 } | |
| 930 framebuffer_->GetStatus(texture_manager_.get(), GL_READ_FRAMEBUFFER); | 902 framebuffer_->GetStatus(texture_manager_.get(), GL_READ_FRAMEBUFFER); |
| 931 } | 903 } |
| 932 | 904 |
| 933 class FramebufferInfoES3Test : public FramebufferInfoTestBase { | 905 class FramebufferInfoES3Test : public FramebufferInfoTestBase { |
| 934 public: | 906 public: |
| 935 FramebufferInfoES3Test() | 907 FramebufferInfoES3Test() |
| 936 : FramebufferInfoTestBase(ContextGroup::CONTEXT_TYPE_WEBGL2) { | 908 : FramebufferInfoTestBase(ContextGroup::CONTEXT_TYPE_WEBGL2) { |
| 937 } | 909 } |
| 938 }; | 910 }; |
| 939 | 911 |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 998 renderbuffer_manager_->GetRenderbuffer(kRenderbufferClientId); | 970 renderbuffer_manager_->GetRenderbuffer(kRenderbufferClientId); |
| 999 ASSERT_TRUE(renderbuffer != NULL); | 971 ASSERT_TRUE(renderbuffer != NULL); |
| 1000 framebuffer_->AttachRenderbuffer(GL_COLOR_ATTACHMENT1, renderbuffer); | 972 framebuffer_->AttachRenderbuffer(GL_COLOR_ATTACHMENT1, renderbuffer); |
| 1001 EXPECT_TRUE(framebuffer_->GetReadBufferAttachment()); | 973 EXPECT_TRUE(framebuffer_->GetReadBufferAttachment()); |
| 1002 } | 974 } |
| 1003 | 975 |
| 1004 } // namespace gles2 | 976 } // namespace gles2 |
| 1005 } // namespace gpu | 977 } // namespace gpu |
| 1006 | 978 |
| 1007 | 979 |
| OLD | NEW |