Index: gpu/command_buffer/service/framebuffer_manager_unittest.cc |
diff --git a/gpu/command_buffer/service/framebuffer_manager_unittest.cc b/gpu/command_buffer/service/framebuffer_manager_unittest.cc |
index 5f42390f62d57bde7a0d1a5b8a7364d4e3ecead4..36b87f6c9d5a72f1a98cd77f629edb8b4a943d14 100644 |
--- a/gpu/command_buffer/service/framebuffer_manager_unittest.cc |
+++ b/gpu/command_buffer/service/framebuffer_manager_unittest.cc |
@@ -34,7 +34,7 @@ const bool kUseDefaultTextures = false; |
class FramebufferManagerTest : public GpuServiceTest { |
public: |
FramebufferManagerTest() |
- : manager_(1, 1), |
+ : manager_(1, 1, ContextGroup::CONTEXT_TYPE_UNDEFINED), |
feature_info_(new FeatureInfo()) { |
texture_manager_.reset(new TextureManager(NULL, |
feature_info_.get(), |
@@ -55,7 +55,6 @@ class FramebufferManagerTest : public GpuServiceTest { |
} |
protected: |
- |
FramebufferManager manager_; |
scoped_refptr<FeatureInfo> feature_info_; |
scoped_ptr<TextureManager> texture_manager_; |
@@ -106,13 +105,13 @@ TEST_F(FramebufferManagerTest, Destroy) { |
ASSERT_TRUE(framebuffer1 == NULL); |
} |
-class FramebufferInfoTest : public GpuServiceTest { |
+class FramebufferInfoTestBase : public GpuServiceTest { |
public: |
static const GLuint kClient1Id = 1; |
static const GLuint kService1Id = 11; |
- FramebufferInfoTest() |
- : manager_(kMaxDrawBuffers, kMaxColorAttachments), |
+ explicit FramebufferInfoTestBase(ContextGroup::ContextType context_type) |
+ : manager_(kMaxDrawBuffers, kMaxColorAttachments, context_type), |
feature_info_(new FeatureInfo()) { |
texture_manager_.reset(new TextureManager(NULL, |
feature_info_.get(), |
@@ -126,7 +125,7 @@ class FramebufferInfoTest : public GpuServiceTest { |
kMaxSamples, |
feature_info_.get())); |
} |
- ~FramebufferInfoTest() override { |
+ ~FramebufferInfoTestBase() override { |
manager_.Destroy(false); |
texture_manager_->Destroy(false); |
renderbuffer_manager_->Destroy(false); |
@@ -156,10 +155,17 @@ class FramebufferInfoTest : public GpuServiceTest { |
scoped_ptr<MockErrorState> error_state_; |
}; |
+class FramebufferInfoTest : public FramebufferInfoTestBase { |
+ public: |
+ FramebufferInfoTest() |
+ : FramebufferInfoTestBase(ContextGroup::CONTEXT_TYPE_UNDEFINED) { |
+ } |
+}; |
+ |
// GCC requires these declarations, but MSVC requires they not be present |
#ifndef COMPILER_MSVC |
-const GLuint FramebufferInfoTest::kClient1Id; |
-const GLuint FramebufferInfoTest::kService1Id; |
+const GLuint FramebufferInfoTestBase::kClient1Id; |
+const GLuint FramebufferInfoTestBase::kService1Id; |
#endif |
TEST_F(FramebufferInfoTest, Basic) { |
@@ -920,6 +926,55 @@ TEST_F(FramebufferInfoTest, GetStatus) { |
framebuffer_->GetStatus(texture_manager_.get(), GL_READ_FRAMEBUFFER); |
} |
+class FramebufferInfoES3Test : public FramebufferInfoTestBase { |
+ public: |
+ FramebufferInfoES3Test() |
+ : FramebufferInfoTestBase(ContextGroup::CONTEXT_TYPE_WEBGL2) { |
+ } |
+}; |
+ |
+TEST_F(FramebufferInfoES3Test, DifferentDimensions) { |
+ const GLuint kRenderbufferClient1Id = 33; |
+ const GLuint kRenderbufferService1Id = 333; |
+ const GLuint kRenderbufferClient2Id = 34; |
+ const GLuint kRenderbufferService2Id = 334; |
+ const GLsizei kWidth1 = 16; |
+ const GLsizei kHeight1 = 32; |
+ const GLenum kFormat1 = GL_RGBA4; |
+ const GLsizei kSamples1 = 0; |
+ const GLsizei kWidth2 = 32; // Different from kWidth1 |
+ const GLsizei kHeight2 = 32; |
+ const GLenum kFormat2 = GL_DEPTH_COMPONENT16; |
+ const GLsizei kSamples2 = 0; |
+ |
+ EXPECT_FALSE(framebuffer_->HasUnclearedAttachment(GL_COLOR_ATTACHMENT0)); |
+ EXPECT_FALSE(framebuffer_->HasUnclearedAttachment(GL_DEPTH_ATTACHMENT)); |
+ EXPECT_FALSE(framebuffer_->HasUnclearedAttachment(GL_STENCIL_ATTACHMENT)); |
+ EXPECT_FALSE( |
+ framebuffer_->HasUnclearedAttachment(GL_DEPTH_STENCIL_ATTACHMENT)); |
+ |
+ renderbuffer_manager_->CreateRenderbuffer( |
+ kRenderbufferClient1Id, kRenderbufferService1Id); |
+ Renderbuffer* renderbuffer1 = |
+ renderbuffer_manager_->GetRenderbuffer(kRenderbufferClient1Id); |
+ ASSERT_TRUE(renderbuffer1 != NULL); |
+ renderbuffer_manager_->SetInfo( |
+ renderbuffer1, kSamples1, kFormat1, kWidth1, kHeight1); |
+ framebuffer_->AttachRenderbuffer(GL_COLOR_ATTACHMENT0, renderbuffer1); |
+ |
+ renderbuffer_manager_->CreateRenderbuffer( |
+ kRenderbufferClient2Id, kRenderbufferService2Id); |
+ Renderbuffer* renderbuffer2 = |
+ renderbuffer_manager_->GetRenderbuffer(kRenderbufferClient2Id); |
+ ASSERT_TRUE(renderbuffer2 != NULL); |
+ renderbuffer_manager_->SetInfo( |
+ renderbuffer2, kSamples2, kFormat2, kWidth2, kHeight2); |
+ framebuffer_->AttachRenderbuffer(GL_DEPTH_ATTACHMENT, renderbuffer2); |
+ |
+ EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE), |
+ framebuffer_->IsPossiblyComplete()); |
+} |
+ |
} // namespace gles2 |
} // namespace gpu |