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

Unified Diff: gpu/command_buffer/service/framebuffer_manager_unittest.cc

Issue 1231273002: Fix framebuffer completeness ES3 behavior. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add unittest Created 5 years, 5 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 side-by-side diff with in-line comments
Download patch
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
« no previous file with comments | « gpu/command_buffer/service/framebuffer_manager.cc ('k') | gpu/command_buffer/service/texture_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698