GL: fix clear-on-init of depth/stencil textures.

Disable the scissor test during clear.

Change-Id: Ia6945304c257867ed5cb6a6ae0c2c49998a33ca7
Bug: dawn:1340
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/85143
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Stephen White <senorblanco@chromium.org>
diff --git a/src/dawn/native/opengl/TextureGL.cpp b/src/dawn/native/opengl/TextureGL.cpp
index 3687848..1189007 100644
--- a/src/dawn/native/opengl/TextureGL.cpp
+++ b/src/dawn/native/opengl/TextureGL.cpp
@@ -258,6 +258,7 @@
                 GLuint framebuffer = 0;
                 gl.GenFramebuffers(1, &framebuffer);
                 gl.BindFramebuffer(GL_DRAW_FRAMEBUFFER, framebuffer);
+                gl.Disable(GL_SCISSOR_TEST);
 
                 GLenum attachment;
                 if (range.aspects == (Aspect::Depth | Aspect::Stencil)) {
@@ -328,6 +329,7 @@
                     }
                 }
 
+                gl.Enable(GL_SCISSOR_TEST);
                 gl.DeleteFramebuffers(1, &framebuffer);
             } else {
                 ASSERT(range.aspects == Aspect::Color);
diff --git a/src/dawn/tests/end2end/NonzeroTextureCreationTests.cpp b/src/dawn/tests/end2end/NonzeroTextureCreationTests.cpp
index 5d8878c..5327406 100644
--- a/src/dawn/tests/end2end/NonzeroTextureCreationTests.cpp
+++ b/src/dawn/tests/end2end/NonzeroTextureCreationTests.cpp
@@ -106,25 +106,17 @@
                                   GetParam().mMipCount > 1 &&
                                   HasToggleEnabled("disable_r8_rg8_mipmaps"));
 
-            // Copies from depth textures not fully supported on the OpenGL backend right now.
-            DAWN_SUPPRESS_TEST_IF(GetParam().mFormat == wgpu::TextureFormat::Depth32Float &&
-                                  (IsOpenGL() || IsOpenGLES()));
-
-            // Copies from stencil textures not fully supported on the OpenGL backend right now.
+            // TODO(crbug.com/dawn/667): Work around the fact that some platforms do not support
+            // reading from depth/stencil.
             DAWN_SUPPRESS_TEST_IF(GetParam().mFormat == wgpu::TextureFormat::Depth24PlusStencil8 &&
                                   GetParam().mAspect == wgpu::TextureAspect::StencilOnly &&
-                                  (IsOpenGL() || IsOpenGLES()));
+                                  HasToggleEnabled("disable_depth_stencil_read"));
 
             // TODO(crbug.com/dawn/593): Test depends on glTextureView which is unsupported on GLES.
             DAWN_SUPPRESS_TEST_IF(GetParam().mFormat == wgpu::TextureFormat::Depth24PlusStencil8 &&
                                   GetParam().mAspect == wgpu::TextureAspect::DepthOnly &&
                                   IsOpenGLES());
 
-            // Sampled depth only populates the first texel when running on OpenGL Mesa.
-            DAWN_SUPPRESS_TEST_IF(GetParam().mFormat == wgpu::TextureFormat::Depth24PlusStencil8 &&
-                                  GetParam().mAspect == wgpu::TextureAspect::DepthOnly &&
-                                  IsOpenGL() && IsLinux());
-
             // GL may support the feature, but reading data back is not implemented.
             DAWN_TEST_UNSUPPORTED_IF(GetParam().mFormat == wgpu::TextureFormat::BC1RGBAUnorm &&
                                      (IsOpenGL() || IsOpenGLES()));