Commit b293a260 by Qiankun Miao Committed by Commit Bot

Fbo attaching non-zero base level texture should be complete

This is ported from WebGL CTS which is used to verify a ES 3.0 bug in NVIDIA Linux, Windows OpenGL, and Mac OSX. BUG=chromium:678526 TEST=angle_end2end_tests Change-Id: Ifb6e1ba52d45144c544beab21f1ad4a98b1b0f65 Reviewed-on: https://chromium-review.googlesource.com/426007 Commit-Queue: Qiankun Miao <qiankun.miao@intel.com> Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
parent 5f319a4b
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
// //
#include "test_utils/ANGLETest.h" #include "test_utils/ANGLETest.h"
#include "test_utils/gl_raii.h"
using namespace angle; using namespace angle;
...@@ -353,6 +354,7 @@ class FramebufferTest_ES3 : public ANGLETest ...@@ -353,6 +354,7 @@ class FramebufferTest_ES3 : public ANGLETest
{ {
glDeleteFramebuffers(1, &mFramebuffer); glDeleteFramebuffers(1, &mFramebuffer);
glDeleteRenderbuffers(1, &mRenderbuffer); glDeleteRenderbuffers(1, &mRenderbuffer);
ANGLETest::TearDown(); ANGLETest::TearDown();
} }
...@@ -389,4 +391,29 @@ TEST_P(FramebufferTest_ES3, DepthOnlyAsDepthStencil) ...@@ -389,4 +391,29 @@ TEST_P(FramebufferTest_ES3, DepthOnlyAsDepthStencil)
EXPECT_GLENUM_NE(GL_FRAMEBUFFER_COMPLETE, glCheckFramebufferStatus(GL_FRAMEBUFFER)); EXPECT_GLENUM_NE(GL_FRAMEBUFFER_COMPLETE, glCheckFramebufferStatus(GL_FRAMEBUFFER));
} }
TEST_P(FramebufferTest_ES3, CompleteWithNonZeroBaseLevel)
{
// This fails on Windows OpenGL, NVIDIA Linux, and Mac OSX.
if ((IsWindows() && IsOpenGL()) || (IsNVIDIA() && IsLinux()) || IsOSX())
{
std::cout << "Test skipped due to driver bug on Windows OpenGL, NVIDIA Linux, and Mac OSX."
<< std::endl;
return;
}
GLint level = 1;
GLTexture tex;
glBindTexture(GL_TEXTURE_2D, tex.get());
glTexImage2D(GL_TEXTURE_2D, level, GL_RGBA, 8, 8, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, level);
glBindFramebuffer(GL_FRAMEBUFFER, mFramebuffer);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, tex.get(), level);
// Verify the framebuffer is complete.
ASSERT_GLENUM_EQ(GL_FRAMEBUFFER_COMPLETE, glCheckFramebufferStatus(GL_FRAMEBUFFER));
}
ANGLE_INSTANTIATE_TEST(FramebufferTest_ES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES()); ANGLE_INSTANTIATE_TEST(FramebufferTest_ES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES());
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment