FramebufferTest: Fix InvalidateIncompleteDepthStencil The test FramebufferTest_ES3.InvalidateIncompleteDepthStencil is currently calling glFramebufferTextureLayer() with the parameter level = 2. However, the texture was created with only 2 levels, so the glFramebufferTextureLayer() call is returning GL_INVALID_VALUE when an OpenGL ES 3.2 context is being tested: OpenGL ES 3.2 Spec > ## 9.2. BINDING AND MANAGING FRAMEBUFFER OBJECTS > level specifies the mipmap level of the texture image to be attached > to the framebuffer, and must satisfy the following conditions: > • If texture refers to an immutable-format texture, level must be > greater than or equal to zero and smaller than the value of > TEXTURE_IMMUTABLE_LEVELS for texture. The test passes when the "built-in" ANGLE is tested with the GN arg `angle_test_enable_system_egl = false` (default), because a GLES 3.0 context can be forced. However, it fails when the device's drivers are tested with `angle_test_enable_system_egl = true`, where the device returns the highest supported GLES context version (3.2) because the validation being restricted to GLES 3.1+. Fix the test by updating the call to glFramebufferTextureLayer() to use level = 1, which still results in an incomplete framebuffer. Bug: b/514390133 Test: angle_end2end_tests \ --gtest_filter=FramebufferTest_ES3.InvalidateIncompleteDepthStencil* Change-Id: Idaa38e7ec975bb1cb4254a7363d8e950d1d94b10 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/7881712 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Tim Van Patten <timvp@google.com>
diff --git a/src/tests/gl_tests/FramebufferTest.cpp b/src/tests/gl_tests/FramebufferTest.cpp index cc92e28..c5daf5e 100644 --- a/src/tests/gl_tests/FramebufferTest.cpp +++ b/src/tests/gl_tests/FramebufferTest.cpp
@@ -620,9 +620,9 @@ GLFramebuffer framebuffer; glBindFramebuffer(GL_FRAMEBUFFER, framebuffer); - // Try to attach level 2 (out of range) to GL_DEPTH_STENCIL_ATTACHMENT. + // Try to attach level 1 (out of range) to GL_DEPTH_STENCIL_ATTACHMENT. // This makes the framebuffer incomplete. - glFramebufferTextureLayer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, texture, 2, 0); + glFramebufferTextureLayer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, texture, 1, 0); EXPECT_GL_NO_ERROR(); // Verify the framebuffer is incomplete.