Skip to content
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

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

null77
Copy link

@null77 null77 commented Dec 19, 2024

  • 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

Note that currently there are a couple WebGL regressions because of an outdated conformance test suite.

This contribution is funded by https://higharc.com/

- 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

Note that currently there are a couple WebGL regressions because of an
outdated conformance test suite.

This contribution is funded by https://higharc.com/
@null77
Copy link
Author

null77 commented Dec 19, 2024

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.

@dhritzkiv
Copy link
Member

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?

@null77
Copy link
Author

null77 commented Dec 19, 2024

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants