-
Notifications
You must be signed in to change notification settings - Fork 171
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update ANGLE binaries. #305
Conversation
Hello @dhritzkiv ! This is the first part of supporting WebGL 2 in headless-gl. I redid how ANGLE is integrated. Given that modern ANGLE is based on GN, and building is not as well supported in node, it's much easier simply to bundle binaries for all platforms. I tested with my Windows machine, Macbook and WSL 2. There are some regressions as noted - the gl-conformance test suite is a decade behind mainline WebGL testing. I spent some time looking at migrating to a newer base for gl-conformance, but it's not trivial because the shims are so out of date. I think a better approach might be to implement a shim library that shims specific functions in the test harness, and keeps the rest of the functions unchanged, using some kind of preprocessing script. Anyway I could use help on figuring out what to do here - there weren't many regressions in my local testing so one trivial option is simply suppressing the failing tests. For WebGL 2 testing we'd need a more updated solution. Please let me know if you have any questions or concerns about the approach or would like anything changed. |
Huge effort! Amazing. Thanks. I'll begin reviewing this in the coming days as I find free time during the holidays. I've pulled this PR down, built it, and can confirm that it builds, and that tests mostly pass (as you've alluded to) with 3 failures out of 15953 on my Mac. I'll think on what do about the conformance tests. We could selectively ignore/disable the currently failing tests, and instead allow the rest of the test suite to indicate –during upcoming/ongoing development– that everything is functioning acceptably. Or we could patch up the decade-old conformance tests to match more modern test expectations. Lastly, now that the ANGLE binaries are included in the repo, would you agree that removing the angle submodule is the correct move? |
Great! Glad you were able to get it going locally. Looking forward to your feedback. Yes, I think removing references to ANGLE code in the repository is the right way to go. |
594d9d6
to
e7f5ec0
Compare
Hey @dhritzkiv , I just wanted to let you know I force-pushed a new rev here. There were two fixes:
|
e7f5ec0
to
c24bbee
Compare
Any idea why |
I'm pretty sure it's because of |
Ah, good insight. That is indeed what's happening. I'll see what can be done about it. |
I pushed a change to CI workflows that should resolve the build issue. Mind rebasing your changes? |
c24bbee
to
b73bb1f
Compare
Tests fail mostly expectedly: 4 on macOS, 2 on Windows. However, there are 484 errors on Ubuntu, most of them |
Thanks, this is a tricky test because it pushes up against resource limits where behaviour can get a bit unstable. |
- the binaries are pulled from Chrome 131 binary dirs - load the entry points via a loader, using code from ANGLE - use the WebGL compatibility mode extension in ANGLE - replace Linux and Mac gyp builds with binaries - enable requested ANGLE WebGL extensions on demand - force ANGLE to use a GLES 2.0 context for WebGL - turn on more extension conformance tests - work around ANGLE multisample ext enum bug - remove the ANGLE submodule since it's no longer used This contribution is funded by https://higharc.com/
b73bb1f
to
c7dbb0a
Compare
One more update: I realized I had uploaded an incorrect version of the patch. Fixed and re-uploaded. Now aside from the ubuntu OOM error, there's only 1 test regression. This test is the link program in use spec change that would be fixed with the gl-conformance update. |
Note that currently there are a couple WebGL regressions because of an outdated conformance test suite.
This contribution is funded by https://higharc.com/