Bug 205663 - webgl/2.0.0/conformance/extensions/angle-instanced-arrays.html is failing
Summary: webgl/2.0.0/conformance/extensions/angle-instanced-arrays.html is failing
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebGL (show other bugs)
Version: WebKit Local Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2019-12-31 14:28 PST by Alexey Proskuryakov
Modified: 2022-03-14 13:35 PDT (History)
8 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alexey Proskuryakov 2019-12-31 14:28:24 PST
webgl/2.0.0/conformance/extensions/angle-instanced-arrays.html was marked as passing when we switched to ANGLE, but it's actually still failing on hardware/software configurations where it used to fail.

https://results.webkit.org/?suite=layout-tests&test=webgl%2F2.0.0%2Fconformance2%2Ftransform_feedback%2Funwritten-output-defaults-to-zero.html

@@ -1,5 +1,86 @@
 This test runs the WebGL Test listed below in an iframe and reports PASS or FAIL.
 
 Test: ../../resources/webgl_test_files/conformance/extensions/angle-instanced-arrays.html
-[ PASS ] All tests passed
+[ 1: PASS ] WebGL context exists
+[ 2: PASS ] getError was expected value: INVALID_ENUM : VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE should not be queryable if extension is disabled
+[ 3: PASS ] Successfully enabled ANGLE_instanced_arrays extension
+[ 4: PASS ] ANGLE_instanced_arrays listed as supported and getExtension succeeded
+[ 5: PASS ] ext.VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE is 0x88FE
+[ 6: PASS ] Vertex attribute 0 must has a default divisor of 0
+[ 7: PASS ] Vertex attribute 1 must has a default divisor of 0
+[ 8: PASS ] Vertex attribute 2 must has a default divisor of 0
+[ 9: PASS ] Vertex attribute 3 must has a default divisor of 0
+[ 10: PASS ] Vertex attribute 4 must has a default divisor of 0
+[ 11: PASS ] Vertex attribute 5 must has a default divisor of 0
+[ 12: PASS ] Vertex attribute 6 must has a default divisor of 0
+[ 13: PASS ] Vertex attribute 7 must has a default divisor of 0
+[ 14: PASS ] Vertex attribute 8 must has a default divisor of 0
+[ 15: PASS ] Vertex attribute 9 must has a default divisor of 0
+[ 16: PASS ] Vertex attribute 10 must has a default divisor of 0
+[ 17: PASS ] Vertex attribute 11 must has a default divisor of 0
+[ 18: PASS ] Vertex attribute 12 must has a default divisor of 0
+[ 19: PASS ] Vertex attribute 13 must has a default divisor of 0
+[ 20: PASS ] Vertex attribute 14 must has a default divisor of 0
+[ 21: PASS ] Vertex attribute 15 must has a default divisor of 0
+[ 22: PASS ] getError was expected value: INVALID_VALUE : vertexAttribDivisorANGLE index set greater than or equal to MAX_VERTEX_ATTRIBS should be an invalid value
+[ 23: PASS ] getError was expected value: NO_ERROR : vertexAttribDivisorANGLE index set less than MAX_VERTEX_ATTRIBS should succeed
+[ 24: PASS ] Set value of VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE matches expecation
+[ 25: PASS ] gl.getExtension("ANGLE_instanced_arrays").myProperty is 2
+[ 26: PASS ] getError was expected value: NO_ERROR : vertex attrib divisor should affect regular drawArrays when the extension is enabled
+[ 27: PASS ] should be 255,0,0,255
+[ 28: PASS ] should be 255,0,0,255
+[ 29: PASS ] should be 0,255,0,255
+[ 30: PASS ] should be 0,0,255,255
+[ 31: PASS ] should be 255,255,0,255
+[ 32: PASS ] getError was expected value: INVALID_VALUE : drawArraysInstancedANGLE cannot have a primcount less than 0
+[ 33: PASS ] getError was expected value: INVALID_VALUE : drawArraysInstancedANGLE cannot have a count less than 0
+[ 34: PASS ] getError was expected value: INVALID_OPERATION : There must be at least one vertex attribute with a divisor of zero when calling drawArraysInstancedANGLE
+[ 35: PASS ] getError was expected value: NO_ERROR : drawArraysInstancedANGLE with POINTS should succeed
+[ 36: PASS ] getError was expected value: NO_ERROR : drawArraysInstancedANGLE with LINES should succeed
+[ 37: PASS ] getError was expected value: NO_ERROR : drawArraysInstancedANGLE with LINE_LIST should return succeed
+[ 38: PASS ] getError was expected value: NO_ERROR : drawArraysInstancedANGLE with TRIANGLE_LIST should succeed
+[ 39: PASS ] getError was expected value: INVALID_ENUM : drawArraysInstancedANGLE with QUAD_STRIP should return INVALID_ENUM
+[ 40: PASS ] getError was expected value: INVALID_ENUM : drawArraysInstancedANGLE with QUADS should return INVALID_ENUM
+[ 41: PASS ] getError was expected value: INVALID_ENUM : drawArraysInstancedANGLE with POLYGON should return INVALID_ENUM
+[ 42: FAIL ] should be 255,0,0,255 at (13, 25) expected: 255,0,0,255 was 0,0,0,0
+[ 43: FAIL ] should be 0,255,0,255 at (38, 25) expected: 0,255,0,255 was 0,0,0,0
+[ 44: FAIL ] should be 0,0,255,255 at (13, 0) expected: 0,0,255,255 was 0,0,0,0
+[ 45: PASS ] should be 255,255,0,255
+[ 46: PASS ] getError was expected value: NO_ERROR : vertex attrib divisor should affect regular drawElements when the extension is enabled
+[ 47: PASS ] should be 255,255,0,255
+[ 48: PASS ] should be 255,0,0,255
+[ 49: PASS ] should be 0,255,0,255
+[ 50: PASS ] should be 0,0,255,255
+[ 51: PASS ] should be 255,255,0,255
+[ 52: PASS ] getError was expected value: INVALID_VALUE : drawElementsInstancedANGLE cannot have a primcount less than 0
+[ 53: PASS ] getError was expected value: INVALID_VALUE : drawElementsInstancedANGLE cannot have a count less than 0
+[ 54: PASS ] getError was expected value: INVALID_OPERATION : There must be at least one vertex attribute with a divisor of zero when calling drawElementsInstancedANGLE
+[ 55: PASS ] getError was expected value: NO_ERROR : drawElementsInstancedANGLE with UNSIGNED_BYTE should succeed
+[ 56: PASS ] getError was expected value: NO_ERROR : drawElementsInstancedANGLE with POINTS should succeed
+[ 57: PASS ] getError was expected value: NO_ERROR : drawElementsInstancedANGLE with LINES should succeed
+[ 58: PASS ] getError was expected value: NO_ERROR : drawElementsInstancedANGLE with LINE_LIST should return succeed
+[ 59: PASS ] getError was expected value: NO_ERROR : drawElementsInstancedANGLE with TRIANGLE_LIST should succeed
+[ 60: PASS ] getError was expected value: INVALID_ENUM : drawElementsInstancedANGLE with QUAD_STRIP should return INVALID_ENUM
+[ 61: PASS ] getError was expected value: INVALID_ENUM : drawElementsInstancedANGLE with QUADS should return INVALID_ENUM
+[ 62: PASS ] getError was expected value: INVALID_ENUM : drawElementsInstancedANGLE with POLYGON should return INVALID_ENUM
+[ 63: PASS ] getError was expected value: NO_ERROR : drawArraysInstancedANGLE should succeed
+[ 64: PASS ] getError was expected value: NO_ERROR : drawArraysInstancedANGLE should succeed
+[ 65: FAIL ] should be 255,0,0,255 at (25, 25) expected: 255,0,0,255 was 0,0,0,0
+[ 66: PASS ] Successfully enabled OES_vertex_array_object extension
+[ 67: PASS ] entire canvas should be red
+[ 68: PASS ] left half of canvas should be red
+[ 69: PASS ] right half of canvas should be blue
+[ 70: PASS ] Passed test 0 of 10
+[ 71: PASS ] Passed test 1 of 10
+[ 72: PASS ] Passed test 2 of 10
+[ 73: PASS ] Passed test 3 of 10
+[ 74: PASS ] Passed test 4 of 10
+[ 75: PASS ] Passed test 5 of 10
+[ 76: PASS ] Passed test 6 of 10
+[ 77: PASS ] Passed test 7 of 10
+[ 78: PASS ] Passed test 8 of 10
+[ 79: PASS ] Passed test 9 of 10
+[ 80: PASS ] Passed test 10 of 10
+[ 81: PASS ] successfullyParsed is true
+[ FAIL ] 4 failures reported
Comment 1 Radar WebKit Bug Importer 2019-12-31 14:28:33 PST
<rdar://problem/58256986>
Comment 2 Justin Fan 2020-02-04 15:27:26 PST
The failure reproduces on Catalina WK2, Mac mini 8,1, but not on iMac Pro.
Comment 3 MrMartian 2022-03-14 13:27:57 PDT
I'm on MacOS Monterey 12.3 (21E230)
MacBook Pro (15-inch, 2017)
Radeon Pro 560 4 GB
Intel HD Graphics 630 1536 MB

WebGL2 works ok, but I build a line algorithm that relies on gl.drawArraysInstanced

With WebGL1 it has ok performance, on WebGL2 the frame rate drops below 10. I don't have this issue with Firefox or Chrome. For some reason Chrome uses Radeon Pro 560 4 GB, and Firefox uses Intel HD Graphics 630 1536 MB. They both work fine. I can't get Safari to report back the GPU using 'WEBGL_debug_renderer_info' so I have no clue which Safari is using.

Is there a way to give you a better report to see what the potential problem is? I'm worried a lot of people are going to get poor FPS from Safari, so I am sticking with WebGL1 with ANGLE_instanced_arrays extension if Safari is in use for now (although it's still bad performance comparatively to other browsers).
Comment 4 Kenneth Russell 2022-03-14 13:35:53 PDT
MrMartian: could you please provide a test case showing the performance problem you're facing?

It would probably be better to file a separate bug about that rather than including it on this one, which is about a specific correctness test failure.

We'd generally seen that ANGLE's Metal backend has eliminated mysterious performance problems seen with the OpenGL backend - so if you find this isn't the case, we'd like to investigate it.

Thanks.