Bug 178705

Summary: [WPE] Two WebGL layout tests are failing
Product: WebKit Reporter: Michael Catanzaro <mcatanzaro>
Component: WPE WebKitAssignee: Nobody <webkit-unassigned>
Severity: Normal CC: aboya, bugs-noreply, cadubentzen, dpino
Priority: P2    
Version: Other   
Hardware: PC   
OS: Linux   

Description Michael Catanzaro 2017-10-23 20:49:01 PDT
Layout tests fast/canvas/webgl/tex-image-and-sub-image-2d-with-video.html and webgl/1.0.2/conformance/rendering/multisample-corruption.html are failing for WPE. Updating expectations accordingly.

--- /home/buildbot/wpe/wpe-linux-64-release-tests/build/layout-test-results/fast/canvas/webgl/tex-image-and-sub-image-2d-with-video-expected.txt
+++ /home/buildbot/wpe/wpe-linux-64-release-tests/build/layout-test-results/fast/canvas/webgl/tex-image-and-sub-image-2d-with-video-actual.txt
@@ -4,14 +4,18 @@
 Testing texImage2D with flipY=true
 Checking lower left corner
-PASS shouldBe 0,255,0
+FAIL shouldBe 0,255,0
+at (0, 0) expected: 0,255,0 was 0,0,0
 Checking upper left corner
-PASS shouldBe 255,0,0
+FAIL shouldBe 255,0,0
+at (0, 0) expected: 255,0,0 was 0,0,0
 Testing texImage2D with flipY=false
 Checking lower left corner
-PASS shouldBe 255,0,0
+FAIL shouldBe 255,0,0
+at (0, 0) expected: 255,0,0 was 0,0,0
 Checking upper left corner
-PASS shouldBe 0,255,0
+FAIL shouldBe 0,255,0
+at (0, 0) expected: 0,255,0 was 0,0,0
 Testing texSubImage2D with flipY=true
 Checking lower left corner
 PASS shouldBe 0,255,0
@@ -24,6 +28,7 @@
 PASS shouldBe 0,255,0
 PASS getError was expected value: NO_ERROR : should be no errors
 PASS successfullyParsed is true
+Some tests failed.

--- /home/buildbot/wpe/wpe-linux-64-release-tests/build/layout-test-results/webgl/1.0.2/conformance/rendering/multisample-corruption-expected.txt
+++ /home/buildbot/wpe/wpe-linux-64-release-tests/build/layout-test-results/webgl/1.0.2/conformance/rendering/multisample-corruption-actual.txt
@@ -1,5 +1,5 @@
 This test runs the WebGL Test listed below in an iframe and reports PASS or FAIL.
 Test: ../../resources/webgl_test_files/conformance/rendering/multisample-corruption.html
Comment 1 Carlos Eduardo Ramalho 2018-04-09 21:29:25 PDT
fast/canvas/webgl/tex-image-and-sub-image-2d-with-video.html is passing since r225060 (see bug 180000).

About webgl/1.0.2/conformance/rendering/multisample-corruption.html, the bug happens because antialiasing is disabled for GLES2 (check GraphicsContext3D::validateAttributes() in GraphicsContext3DOpenGLES.cpp)

In order to enable it, one of these extensions would be required, since according to the specification GLES2 does not support multisampling in framebuffer objects:
- APPLE_framebuffer_multisample, which is what Apple used enclosed in #if's, or
- ANGLE_framebuffer_multisample, which is implemented in ANGLE translating it OpenGL extensions calls or
- other vendor-specific extensions

So right now GraphicsContext3D::resolveMultisamplingIfNecessary() for GLES is empty and I don't know how exactly to implement it without non vendor-specific GLES2 extensions. GLES3 on the other hand does support multisampling in framebuffer objects.

The test can be run manually from here: https://www.khronos.org/registry/webgl/sdk/tests/conformance/rendering/multisample-corruption.html

By the way, WebKit-based browsers (GTK and Safari) seem to make the red canvas in the test disappear or turn black, which does not seem like a correct behavior although the pixel reading values still returns correct. I could not trace to exactly why it happens but Chrome and Firefox display correctly. Disabling accelerated compositing make WebKitGTK+ to work OK.

Please correct me if I made wrong conclusions in the above investigation.
Comment 2 Alicia Boya GarcĂ­a 2018-12-19 17:07:03 PST
*/multiframe-corruption.html failures are flaky by nature, I'll mark them as such. Same applies for the much more verbose webgl/2.0.0/conformance/rendering/multisample-corruption.html
Comment 3 Diego Pino 2020-06-15 11:45:15 PDT
Only webgl/1.0.3/conformance/rendering/multisample-corruption.html was filed under this bug in WPE test expectations. The test is no longer flaky as it has been consistently failing for the last 4000 revisions.

Filed a new bug: webkit.org/b/213203.