| 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 a9b4388eda6af1d07f8d336360a100433be79fc9..8a2612c5fc5af9c6ffd298e934db0915c132de59 100644
|
| --- a/gpu/command_buffer/service/framebuffer_manager_unittest.cc
|
| +++ b/gpu/command_buffer/service/framebuffer_manager_unittest.cc
|
| @@ -162,7 +162,7 @@ TEST_F(FramebufferInfoTest, Basic) {
|
| EXPECT_FALSE(framebuffer_->HasDepthAttachment());
|
| EXPECT_FALSE(framebuffer_->HasStencilAttachment());
|
| EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT),
|
| - framebuffer_->IsPossiblyComplete());
|
| + framebuffer_->IsPossiblyComplete(false));
|
| EXPECT_TRUE(framebuffer_->IsCleared());
|
| EXPECT_EQ(static_cast<GLenum>(0), framebuffer_->GetColorAttachmentFormat());
|
| EXPECT_FALSE(manager_.IsComplete(framebuffer_));
|
| @@ -216,14 +216,14 @@ TEST_F(FramebufferInfoTest, AttachRenderbuffer) {
|
| EXPECT_FALSE(framebuffer_->HasDepthAttachment());
|
| EXPECT_FALSE(framebuffer_->HasStencilAttachment());
|
| EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT),
|
| - framebuffer_->IsPossiblyComplete());
|
| + framebuffer_->IsPossiblyComplete(false));
|
| EXPECT_TRUE(framebuffer_->IsCleared());
|
|
|
| // Try a format that's not good for COLOR_ATTACHMENT0.
|
| renderbuffer_manager_.SetInfo(
|
| renderbuffer1, kSamples1, kBadFormat1, kWidth1, kHeight1);
|
| EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT),
|
| - framebuffer_->IsPossiblyComplete());
|
| + framebuffer_->IsPossiblyComplete(false));
|
|
|
| // Try a good format.
|
| renderbuffer_manager_.SetInfo(
|
| @@ -233,7 +233,7 @@ TEST_F(FramebufferInfoTest, AttachRenderbuffer) {
|
| EXPECT_FALSE(framebuffer_->HasDepthAttachment());
|
| EXPECT_FALSE(framebuffer_->HasStencilAttachment());
|
| EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE),
|
| - framebuffer_->IsPossiblyComplete());
|
| + framebuffer_->IsPossiblyComplete(false));
|
| EXPECT_FALSE(framebuffer_->IsCleared());
|
|
|
| // check adding another
|
| @@ -253,7 +253,7 @@ TEST_F(FramebufferInfoTest, AttachRenderbuffer) {
|
| // of attachments it could either get INCOMPLETE_ATTACHMENT because it's 0,0
|
| // or INCOMPLETE_DIMENSIONS because it's not the same size as the other
|
| // attachment.
|
| - GLenum status = framebuffer_->IsPossiblyComplete();
|
| + GLenum status = framebuffer_->IsPossiblyComplete(false);
|
| EXPECT_TRUE(
|
| status == GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT ||
|
| status == GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT);
|
| @@ -262,7 +262,7 @@ TEST_F(FramebufferInfoTest, AttachRenderbuffer) {
|
| renderbuffer_manager_.SetInfo(
|
| renderbuffer2, kSamples2, kFormat2, kWidth2, kHeight2);
|
| EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE),
|
| - framebuffer_->IsPossiblyComplete());
|
| + framebuffer_->IsPossiblyComplete(false));
|
| EXPECT_FALSE(framebuffer_->IsCleared());
|
| EXPECT_TRUE(framebuffer_->HasUnclearedAttachment(GL_DEPTH_ATTACHMENT));
|
|
|
| @@ -272,7 +272,7 @@ TEST_F(FramebufferInfoTest, AttachRenderbuffer) {
|
| EXPECT_FALSE(framebuffer_->HasUnclearedAttachment(GL_COLOR_ATTACHMENT0));
|
| EXPECT_FALSE(framebuffer_->HasUnclearedAttachment(GL_DEPTH_ATTACHMENT));
|
| EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE),
|
| - framebuffer_->IsPossiblyComplete());
|
| + framebuffer_->IsPossiblyComplete(false));
|
| EXPECT_TRUE(framebuffer_->IsCleared());
|
|
|
| // Check adding one that is already cleared.
|
| @@ -292,7 +292,7 @@ TEST_F(FramebufferInfoTest, AttachRenderbuffer) {
|
| EXPECT_TRUE(framebuffer_->HasDepthAttachment());
|
| EXPECT_TRUE(framebuffer_->HasStencilAttachment());
|
| EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE),
|
| - framebuffer_->IsPossiblyComplete());
|
| + framebuffer_->IsPossiblyComplete(false));
|
| EXPECT_TRUE(framebuffer_->IsCleared());
|
|
|
| // Check marking the renderbuffer as unclared.
|
| @@ -303,7 +303,7 @@ TEST_F(FramebufferInfoTest, AttachRenderbuffer) {
|
| EXPECT_TRUE(framebuffer_->HasDepthAttachment());
|
| EXPECT_TRUE(framebuffer_->HasStencilAttachment());
|
| EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE),
|
| - framebuffer_->IsPossiblyComplete());
|
| + framebuffer_->IsPossiblyComplete(false));
|
| EXPECT_FALSE(framebuffer_->IsCleared());
|
|
|
| const Framebuffer::Attachment* attachment =
|
| @@ -344,7 +344,7 @@ TEST_F(FramebufferInfoTest, AttachRenderbuffer) {
|
| EXPECT_EQ(kFormat4, attachment->internal_format());
|
| EXPECT_FALSE(attachment->cleared());
|
| EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE),
|
| - framebuffer_->IsPossiblyComplete());
|
| + framebuffer_->IsPossiblyComplete(false));
|
|
|
| // Check changing an attachment.
|
| renderbuffer_manager_.SetInfo(
|
| @@ -359,7 +359,7 @@ TEST_F(FramebufferInfoTest, AttachRenderbuffer) {
|
| EXPECT_FALSE(attachment->cleared());
|
| EXPECT_FALSE(framebuffer_->IsCleared());
|
| EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT),
|
| - framebuffer_->IsPossiblyComplete());
|
| + framebuffer_->IsPossiblyComplete(false));
|
|
|
| // Check removing it.
|
| framebuffer_->AttachRenderbuffer(GL_STENCIL_ATTACHMENT, NULL);
|
| @@ -371,18 +371,18 @@ TEST_F(FramebufferInfoTest, AttachRenderbuffer) {
|
|
|
| EXPECT_TRUE(framebuffer_->IsCleared());
|
| EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE),
|
| - framebuffer_->IsPossiblyComplete());
|
| + framebuffer_->IsPossiblyComplete(false));
|
|
|
| // Remove depth, Set color to 0 size.
|
| framebuffer_->AttachRenderbuffer(GL_DEPTH_ATTACHMENT, NULL);
|
| renderbuffer_manager_.SetInfo(renderbuffer1, kSamples1, kFormat1, 0, 0);
|
| EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT),
|
| - framebuffer_->IsPossiblyComplete());
|
| + framebuffer_->IsPossiblyComplete(false));
|
|
|
| // Remove color.
|
| framebuffer_->AttachRenderbuffer(GL_COLOR_ATTACHMENT0, NULL);
|
| EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT),
|
| - framebuffer_->IsPossiblyComplete());
|
| + framebuffer_->IsPossiblyComplete(false));
|
| }
|
|
|
| TEST_F(FramebufferInfoTest, AttachTexture) {
|
| @@ -417,7 +417,7 @@ TEST_F(FramebufferInfoTest, AttachTexture) {
|
| EXPECT_FALSE(
|
| framebuffer_->HasUnclearedAttachment(GL_DEPTH_STENCIL_ATTACHMENT));
|
| EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT),
|
| - framebuffer_->IsPossiblyComplete());
|
| + framebuffer_->IsPossiblyComplete(false));
|
|
|
| texture_manager_.CreateTexture(kTextureClient1Id, kTextureService1Id);
|
| scoped_refptr<TextureRef> texture1(
|
| @@ -429,7 +429,7 @@ TEST_F(FramebufferInfoTest, AttachTexture) {
|
| GL_COLOR_ATTACHMENT0, texture1.get(), kTarget1, kLevel1, kSamples1);
|
| EXPECT_FALSE(framebuffer_->HasUnclearedAttachment(GL_COLOR_ATTACHMENT0));
|
| EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT),
|
| - framebuffer_->IsPossiblyComplete());
|
| + framebuffer_->IsPossiblyComplete(false));
|
| EXPECT_TRUE(framebuffer_->IsCleared());
|
| EXPECT_EQ(static_cast<GLenum>(0), framebuffer_->GetColorAttachmentFormat());
|
|
|
| @@ -447,7 +447,7 @@ TEST_F(FramebufferInfoTest, AttachTexture) {
|
| kType,
|
| true);
|
| EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT),
|
| - framebuffer_->IsPossiblyComplete());
|
| + framebuffer_->IsPossiblyComplete(false));
|
|
|
| // Try a good format.
|
| texture_manager_.SetLevelInfo(texture1.get(),
|
| @@ -462,7 +462,7 @@ TEST_F(FramebufferInfoTest, AttachTexture) {
|
| kType,
|
| false);
|
| EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE),
|
| - framebuffer_->IsPossiblyComplete());
|
| + framebuffer_->IsPossiblyComplete(false));
|
| EXPECT_FALSE(framebuffer_->IsCleared());
|
| texture_manager_.SetLevelInfo(texture1.get(),
|
| GL_TEXTURE_2D,
|
| @@ -476,7 +476,7 @@ TEST_F(FramebufferInfoTest, AttachTexture) {
|
| kType,
|
| true);
|
| EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE),
|
| - framebuffer_->IsPossiblyComplete());
|
| + framebuffer_->IsPossiblyComplete(false));
|
| EXPECT_TRUE(framebuffer_->IsCleared());
|
| EXPECT_EQ(static_cast<GLenum>(kFormat1),
|
| framebuffer_->GetColorAttachmentFormat());
|
| @@ -513,7 +513,7 @@ TEST_F(FramebufferInfoTest, AttachTexture) {
|
| EXPECT_EQ(static_cast<GLenum>(kFormat2),
|
| framebuffer_->GetColorAttachmentFormat());
|
| EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE),
|
| - framebuffer_->IsPossiblyComplete());
|
| + framebuffer_->IsPossiblyComplete(false));
|
| EXPECT_TRUE(framebuffer_->IsCleared());
|
|
|
| attachment = framebuffer_->GetAttachment(GL_COLOR_ATTACHMENT0);
|
| @@ -546,7 +546,7 @@ TEST_F(FramebufferInfoTest, AttachTexture) {
|
| EXPECT_EQ(static_cast<GLenum>(kFormat3),
|
| framebuffer_->GetColorAttachmentFormat());
|
| EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE),
|
| - framebuffer_->IsPossiblyComplete());
|
| + framebuffer_->IsPossiblyComplete(false));
|
| EXPECT_FALSE(framebuffer_->IsCleared());
|
|
|
| // Set to size 0
|
| @@ -562,7 +562,7 @@ TEST_F(FramebufferInfoTest, AttachTexture) {
|
| kType,
|
| false);
|
| EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT),
|
| - framebuffer_->IsPossiblyComplete());
|
| + framebuffer_->IsPossiblyComplete(false));
|
|
|
| // Check removing it.
|
| framebuffer_->AttachTexture(GL_COLOR_ATTACHMENT0, NULL, 0, 0, 0);
|
| @@ -570,10 +570,79 @@ TEST_F(FramebufferInfoTest, AttachTexture) {
|
| EXPECT_EQ(static_cast<GLenum>(0), framebuffer_->GetColorAttachmentFormat());
|
|
|
| EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT),
|
| - framebuffer_->IsPossiblyComplete());
|
| + framebuffer_->IsPossiblyComplete(false));
|
| EXPECT_TRUE(framebuffer_->IsCleared());
|
| }
|
|
|
| +TEST_F(FramebufferInfoTest, AttachFloatTexture) {
|
| + const GLuint kTextureClientId = 33;
|
| + const GLuint kTextureServiceId = 333;
|
| + const GLint kDepth = 1;
|
| + const GLint kBorder = 0;
|
| + const GLenum kType = GL_FLOAT;
|
| + const GLsizei kWidth = 16;
|
| + const GLsizei kHeight = 32;
|
| + const GLint kLevel = 0;
|
| + const GLenum kFormat = GL_RGBA;
|
| + const GLenum kInternalFormat = GL_RGBA32F;
|
| + const GLenum kBadInternalFormat = GL_RGBA;
|
| + const GLenum kTarget = GL_TEXTURE_2D;
|
| + const GLsizei kSamples = 0;
|
| + EXPECT_FALSE(framebuffer_->HasUnclearedAttachment(GL_COLOR_ATTACHMENT0));
|
| + EXPECT_FALSE(framebuffer_->HasUnclearedAttachment(GL_DEPTH_ATTACHMENT));
|
| + EXPECT_FALSE(framebuffer_->HasUnclearedAttachment(GL_STENCIL_ATTACHMENT));
|
| +
|
| + texture_manager_.CreateTexture(kTextureClientId, kTextureServiceId);
|
| + scoped_refptr<TextureRef> texture(
|
| + texture_manager_.GetTexture(kTextureClientId));
|
| + ASSERT_TRUE(texture.get() != NULL);
|
| +
|
| + // check adding one attachment
|
| + framebuffer_->AttachTexture(
|
| + GL_COLOR_ATTACHMENT0, texture.get(), kTarget, kLevel, kSamples);
|
| + EXPECT_EQ(static_cast<GLenum>(0), framebuffer_->GetColorAttachmentFormat());
|
| +
|
| + // Try unsized internalformat
|
| + texture_manager_.SetTarget(texture.get(), GL_TEXTURE_2D);
|
| + texture_manager_.SetLevelInfo(texture.get(),
|
| + GL_TEXTURE_2D,
|
| + kLevel,
|
| + kBadInternalFormat,
|
| + kWidth,
|
| + kHeight,
|
| + kDepth,
|
| + kBorder,
|
| + kFormat,
|
| + kType,
|
| + true);
|
| + // Texture with an unsized internalformat is not allowed as an attachment
|
| + // regardless of whether float color attachments are allowed in general.
|
| + EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT),
|
| + framebuffer_->IsPossiblyComplete(false));
|
| + EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT),
|
| + framebuffer_->IsPossiblyComplete(true));
|
| +
|
| + // Try a good format.
|
| + texture_manager_.SetLevelInfo(texture.get(),
|
| + GL_TEXTURE_2D,
|
| + kLevel,
|
| + kInternalFormat,
|
| + kWidth,
|
| + kHeight,
|
| + kDepth,
|
| + kBorder,
|
| + kFormat,
|
| + kType,
|
| + false);
|
| + // Texture with a sized float internalformat is allowed as an attachment
|
| + // only if float color attachments allowed flag is true.
|
| + EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT),
|
| + framebuffer_->IsPossiblyComplete(false));
|
| + EXPECT_EQ(static_cast<GLenum>(GL_FRAMEBUFFER_COMPLETE),
|
| + framebuffer_->IsPossiblyComplete(true));
|
| +
|
| +}
|
| +
|
| TEST_F(FramebufferInfoTest, UnbindRenderbuffer) {
|
| const GLuint kRenderbufferClient1Id = 33;
|
| const GLuint kRenderbufferService1Id = 333;
|
|
|