Closed Bug 1753349 (angle-111) Opened 2 years ago Closed 1 year ago

Update ANGLE for Fx112

Categories

(Core :: Graphics: CanvasWebGL, task)

Firefox 111
task

Tracking

()

RESOLVED FIXED
111 Branch
Tracking Status
firefox111 --- wontfix
firefox112 --- fixed

People

(Reporter: jgilbert, Assigned: ErichDonGubler, Mentored)

References

(Blocks 1 open bug, Regressed 1 open bug)

Details

Attachments

(10 files, 3 obsolete files)

48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
No description provided.
Summary: Update ANGLE for FF99 → Update ANGLE for Fx99
Attached file Bug 1753349 - Update ANGLE in Fx99. (obsolete) —

There's a r+ patch which didn't land and no activity in this bug for 2 weeks.
:jgilbert, could you have a look please?
If you still have some work to do, you can add an action "Plan Changes" in Phabricator.
For more information, please visit auto_nag documentation.

Flags: needinfo?(lsalzman)
Flags: needinfo?(jgilbert)
Flags: needinfo?(lsalzman)
Flags: needinfo?(jgilbert)
[task 2022-03-29T00:36:44.381Z] 00:36:44     INFO - GECKO(6252) | [GFX1]: Failed to create Pbuffer of back buffer error: 0x3004 Size : Size(160,234)
[task 2022-03-29T00:36:44.381Z] 00:36:44     INFO - GECKO(6252) | Assertion failure: [GFX1]: Failed to create Pbuffer of back buffer error: 0x3004 Size : Size(160,234), at /builds/worker/workspace/obj-build/dist/include/mozilla/gfx/Logging.h:754
[task 2022-03-29T00:36:44.487Z] 00:36:44     INFO -  Initializing stack-fixing for the first stack frame, this may take a while...
[task 2022-03-29T00:36:48.287Z] 00:36:48     INFO - runtests.py | Waiting for browser...
[task 2022-03-29T00:36:56.194Z] 00:36:56     INFO - GECKO(6252) | #01: mozilla::gfx::Log<1,mozilla::gfx::CriticalLogger>::WriteLog(std::basic_string<char,std::char_traits<char>,std::allocator<char> > const&) [gfx/2d/Logging.h:755]
[task 2022-03-29T00:36:56.194Z] 00:36:56     INFO - GECKO(6252) | #02: mozilla::gfx::Log<1,mozilla::gfx::CriticalLogger>::Flush() [gfx/2d/Logging.h:279]
[task 2022-03-29T00:36:56.195Z] 00:36:56     INFO - GECKO(6252) | #03: mozilla::wr::RenderCompositorANGLE::CreateEGLSurface() [gfx/webrender_bindings/RenderCompositorANGLE.cpp:671]
[task 2022-03-29T00:36:56.195Z] 00:36:56     INFO - GECKO(6252) | #04: mozilla::wr::RenderCompositorANGLE::ResizeBufferIfNeeded() [gfx/webrender_bindings/RenderCompositorANGLE.cpp:601]
[task 2022-03-29T00:36:56.196Z] 00:36:56     INFO - GECKO(6252) | #05: mozilla::wr::RenderCompositorANGLE::CreateSwapChain(nsTSubstring<char>&) [gfx/webrender_bindings/RenderCompositorANGLE.cpp:320]
[task 2022-03-29T00:36:56.196Z] 00:36:56     INFO - GECKO(6252) | #06: mozilla::wr::RenderCompositorANGLE::Initialize(nsTSubstring<char>&) [gfx/webrender_bindings/RenderCompositorANGLE.cpp:166]
[task 2022-03-29T00:36:56.197Z] 00:36:56     INFO - GECKO(6252) | #07: static mozilla::wr::RenderCompositorANGLE::Create(RefPtr<mozilla::widget::CompositorWidget> const&, nsTSubstring<char>&) [gfx/webrender_bindings/RenderCompositorANGLE.cpp:62]
[task 2022-03-29T00:36:56.197Z] 00:36:56     INFO - GECKO(6252) | #08: static mozilla::wr::RenderCompositor::Create(RefPtr<mozilla::widget::CompositorWidget> const&, nsTSubstring<char>&) [gfx/webrender_bindings/RenderCompositor.cpp:191]
[task 2022-03-29T00:36:56.198Z] 00:36:56     INFO - GECKO(6252) | #09: mozilla::wr::NewRenderer::Run(mozilla::wr::RenderThread&, mozilla::wr::WrWindowId) [gfx/webrender_bindings/WebRenderAPI.cpp:96]
[task 2022-03-29T00:36:56.198Z] 00:36:56     INFO - GECKO(6252) | #10: mozilla::wr::RenderThread::RunEvent(mozilla::wr::WrWindowId, mozilla::UniquePtr<mozilla::wr::RendererEvent,mozilla::DefaultDelete<mozilla::wr::RendererEvent> >) [gfx/webrender_bindings/RenderThread.cpp:458]
[task 2022-03-29T00:36:56.199Z] 00:36:56     INFO - GECKO(6252) | #11: mozilla::detail::RunnableMethodImpl<mozilla::wr::RenderThread *,void (mozilla::wr::RenderThread::*)(mozilla::wr::WrWindowId, mozilla::UniquePtr<mozilla::wr::RendererEvent,mozilla::DefaultDelete<mozilla::wr::RendererEvent> >),1,mozilla::RunnableKind::Standard,mozilla::wr::WrWindowId,mozilla::UniquePtr<mozilla::wr::RendererEvent,mozilla::DefaultDelete<mozilla::wr::RendererEvent> > &&>::Run() [xpcom/threads/nsThreadUtils.h:1203]
[task 2022-03-29T00:36:56.200Z] 00:36:56     INFO - GECKO(6252) | #12: nsThread::ProcessNextEvent(bool, bool*) [xpcom/threads/nsThread.cpp:1167]

https://searchfox.org/mozilla-central/rev/570f6e5c06b6c8140f53bf104d785a18165212ab/gfx/webrender_bindings/RenderCompositorANGLE.cpp#653-660

  const EGLint pbuffer_attribs[]{
      LOCAL_EGL_WIDTH,
      size.width,
      LOCAL_EGL_HEIGHT,
      size.height,
      LOCAL_EGL_FLEXIBLE_SURFACE_COMPATIBILITY_SUPPORTED_ANGLE,
      LOCAL_EGL_TRUE,
      LOCAL_EGL_NONE};
jgilbert@osiris : /c/dev/mozilla/gecko7 071acaf6c08c angle-99
$ git grep -nrE EGL_FLEXIBLE_SURFACE_COMPATIBILITY_SUPPORTED gfx/angle

[17:48:33] $? -> 1
jgilbert@osiris : /c/dev/mozilla/gecko7 071acaf6c08c angle-99
$
jgilbert@osiris : /c/dev/angle b4b5b64f0 firefox-99
$ git log src/libANGLE/Surface.cpp
[...]
commit ad8e4d99a977073074a36fe231477398843f1501
Author: Geoff Lang <geofflang@google.com>
Date:   Tue Sep 28 11:48:46 2021 -0400

    Remove EGL_ANGLE_flexible_surface_compatibility

    This extension has been superseded by EGL_KHR_no_config_context.

    Bug: chromium:1253930
    Change-Id: Ie299c34baa84e9f47c73ddb5a0636536bf510d72
    Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3190612
    Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
    Reviewed-by: Jamie Madill <jmadill@chromium.org>
    Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
[...]

So we need to switch from the now-removed EGL_ANGLE_flexible_surface_compatibility to EGL_KHR_no_config_context.

Blocks: 1519699
Summary: Update ANGLE for Fx99 → Update ANGLE for Fx?? (previously 99)

Depends on D162632

Attachment #9262034 - Attachment is obsolete: true

This lets us omit implementation details in a header, and avoid needing to pass some arguments when
only the decision to try using GLES changes.

Split out from @jgilbert's D164308.

This is basically an implementation detail that the only existing caller doesn't really need to
know. Factor it out.

Split out from @jgilbert's D164308.

Depends on D166706

When available, we should use the EGL_KHR_no_config_context extension inside of
GLContextEGL::CreateEGLPBufferOffscreenContext. The usage of this extension will be necessary to
accommodate incoming upstream changes in ANGLE, which have migrated away from
our usage of EGL_FLEXIBLE_SURFACE_COMPATIBILITY_SUPPORTED_ANGLE in
gfx/webrender_bindings/RenderCompositorANGLE.cpp
in favor of this standard
extension. Luckily it's forwards-compatible to start consuming it now!

This revision changes a few things that are linked:

  • Separate assignment and usage of a surface context from that of a context.
  • Rename GLContextEGL::mConfig to mSurfaceConfig to better reflect its usage; it's only ever
    used to create surfaces, not contexts.

Split out from @jgilbert's D164308 and D164309.

Depends on D166707

This was interesting enough that @jgilbert wanted this, so I'm including this for completeness in
the current patch stack.

Split out from @jgilbert's D164308.

Depends on D166708

Attachment #9307397 - Attachment description: Bug 1753349 (1/3): Align `update-angle.py` instructions to actual usage r=jgilbert → Bug 1753349 (5/7): docs: align `update-angle.py` instructions to actual usage r=jgilbert
Attachment #9307398 - Attachment description: Bug 1753349 (2/3): Update ANGLE vendoring updater r=jgilbert → Bug 1753349 (6/7): build(gfx): update ANGLE vendoring updater r=jgilbert
Attachment #9304604 - Attachment description: Bug 1753349 (3/3): Update vendored copy of ANGLE to `angle-4` branch of our fork r=jgilbert → Bug 1753349 (7/7): chore: update vendored copy of ANGLE to our fork's `firefox-111` branch r=jgilbert
Attachment #9304577 - Attachment is obsolete: true
Attachment #9304578 - Attachment is obsolete: true
Blocks: 1810021
Attachment #9312030 - Attachment description: Bug 1753349 (1/7): refactor: inline `GLContextEGL::CreateEGLPBufferOffscreenContext` into `WithUseGles` closure r=jgilbert → Bug 1753349 (1/9): refactor: inline `GLContextEGL::CreateEGLPBufferOffscreenContext` into `WithUseGles` closure r=jgilbert,#gfx-reviewers
Attachment #9312031 - Attachment description: Bug 1753349 (2/7): refactor: inline `size` argument to `GLContextEGL::CreateEGLPBufferOffscreenContext` r=jgilbert → Bug 1753349 (2/9): refactor: inline `size` argument to `GLContextEGL::CreateEGLPBufferOffscreenContext` r=jgilbert,#gfx-reviewers
Attachment #9312032 - Attachment description: Bug 1753349 (3/7): feat(gfx): use `EGL_KHR_no_config_context` in `CreateEGLPBufferOffscreenContext` r=jgilbert → Bug 1753349 (3/9): feat(gfx): use `EGL_KHR_no_config_context` in `CreateEGLPBufferOffscreenContext` r=jgilbert,#gfx-reviewers
Attachment #9312033 - Attachment description: Bug 1753349 (4/7): refactor: rename `CreateEGLPBufferOffscreenContext` to `CreateWithoutSurface` r=jgilbert → Bug 1753349 (4/9): refactor: rename `CreateEGLPBufferOffscreenContext` to `CreateWithoutSurface` r=jgilbert,#gfx-reviewers
Attachment #9307397 - Attachment description: Bug 1753349 (5/7): docs: align `update-angle.py` instructions to actual usage r=jgilbert → Bug 1753349 (5/9): docs: align `update-angle.py` instructions to actual usage r=jgilbert

Now that we're using EGL_KHR_no_config_context from a previous change, this attribute request is
no longer necessary. Even worse, support for it already been removed by upstream ANGLE. So, let's
nip this in the bud before we try to upgrade ANGLE.

Depends on D167037

Attachment #9307398 - Attachment description: Bug 1753349 (6/7): build(gfx): update ANGLE vendoring updater r=jgilbert → Bug 1753349 (8/9): build(gfx): update ANGLE vendoring updater r=jgilbert
Attachment #9304604 - Attachment description: Bug 1753349 (7/7): chore: update vendored copy of ANGLE to our fork's `firefox-111` branch r=jgilbert → Bug 1753349 (9/9): chore: update ANGLE to our fork's `firefox-111` branch r=jgilbert
Status: NEW → ASSIGNED
Summary: Update ANGLE for Fx?? (previously 99) → Update ANGLE for Fx111
Version: unspecified → Firefox 111
Attachment #9307398 - Attachment description: Bug 1753349 (8/9): build(gfx): update ANGLE vendoring updater r=jgilbert → Bug 1753349 (8/9): build(gfx): update ANGLE vendoring config. r=jgilbert
Pushed by egubler@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/1ad75c8ea7a4
(1/9): refactor: inline `GLContextEGL::CreateEGLPBufferOffscreenContext` into `WithUseGles` closure r=jgilbert
https://hg.mozilla.org/integration/autoland/rev/1b71f995ae95
(2/9): refactor: inline `size` argument to `GLContextEGL::CreateEGLPBufferOffscreenContext` r=jgilbert
https://hg.mozilla.org/integration/autoland/rev/bed90cd9beb6
(3/9): feat(gfx): use `EGL_KHR_no_config_context` in `CreateEGLPBufferOffscreenContext` r=jgilbert
https://hg.mozilla.org/integration/autoland/rev/cbb9e6545343
(4/9): refactor: rename `CreateEGLPBufferOffscreenContext` to `CreateWithoutSurface` r=jgilbert
https://hg.mozilla.org/integration/autoland/rev/556557955d59
(5/9): docs: align `update-angle.py` instructions to actual usage r=jgilbert
https://hg.mozilla.org/integration/autoland/rev/2043cc15deec
(6/9): fix: increase `CanvasRendererThread` stack size to 4k r=jgilbert,gfx-reviewers
https://hg.mozilla.org/integration/autoland/rev/0ffcaedc8046
(7/9): refactor(gfx): stop using `LOCAL_EGL_FLEXIBLE_SURFACE_COMPATIBILITY_SUPPORTED_ANGLE` r=jgilbert,gfx-reviewers
https://hg.mozilla.org/integration/autoland/rev/28e0175becf4
(8/9): build(gfx): update ANGLE vendoring config. r=jgilbert
https://hg.mozilla.org/integration/autoland/rev/84a5f26fe60b
(9/9): chore: update ANGLE to our fork's `firefox-111` branch r=jgilbert

Backed out for multiple PoolAlloc.cpp related failures on Linux 18.04 x64 WebRender asan opt.

  • Backout link
  • Push with failures - this is to show the problem is from here and this is the push with all PoolAlloc.cpp failures related.
  • Failure Log
  • Failure line: SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /builds/worker/checkouts/gecko/gfx/angle/checkout/src/common/PoolAlloc.cpp:348:71 in
Flags: needinfo?(jgilbert)
Pushed by egubler@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/4381cb30198b
(1/9): refactor: inline `GLContextEGL::CreateEGLPBufferOffscreenContext` into `WithUseGles` closure r=jgilbert
https://hg.mozilla.org/integration/autoland/rev/1e30feb6482b
(2/9): refactor: inline `size` argument to `GLContextEGL::CreateEGLPBufferOffscreenContext` r=jgilbert
https://hg.mozilla.org/integration/autoland/rev/1c9aa0d7be69
(3/9): feat(gfx): use `EGL_KHR_no_config_context` in `CreateEGLPBufferOffscreenContext` r=jgilbert
https://hg.mozilla.org/integration/autoland/rev/0a5945b7de6a
(4/9): refactor: rename `CreateEGLPBufferOffscreenContext` to `CreateWithoutSurface` r=jgilbert
https://hg.mozilla.org/integration/autoland/rev/70cfe77de2aa
(5/9): docs: align `update-angle.py` instructions to actual usage r=jgilbert
https://hg.mozilla.org/integration/autoland/rev/632e0acf23f3
(6/9): fix: increase `CanvasRendererThread` stack size to 4k r=jgilbert,gfx-reviewers
https://hg.mozilla.org/integration/autoland/rev/96f30dc79ae6
(7/9): refactor(gfx): stop using `LOCAL_EGL_FLEXIBLE_SURFACE_COMPATIBILITY_SUPPORTED_ANGLE` r=jgilbert,gfx-reviewers
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Flags: needinfo?(jgilbert)
Target Milestone: 111 Branch → ---

The last two patches in the patch stack resolving this haven't landed yet, due to regressions detected in autoland builds. Currently working on getting these two; for now, I've merged the first 7 of 9, which should work independently of the actual ANGLE vendoring update.

Assignee: jgilbert → egubler
Mentor: jgilbert
Pushed by egubler@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/06d250c819ee
(8/9): build(gfx): update ANGLE vendoring config. r=jgilbert
https://hg.mozilla.org/integration/autoland/rev/94699211d97b
(9/9): chore: update ANGLE to our fork's `firefox-111` branch r=jgilbert
Status: REOPENED → RESOLVED
Closed: 1 year ago1 year ago
Resolution: --- → FIXED
Target Milestone: --- → 111 Branch

Just FTR, after rebasing to latest m-c today, I started hitting a build failure locally:

18:01.79 make[4]: *** No rule to make target `/Users/jkew/mozdev/mozilla-unified/gfx/angle/checkout/src/compiler/translator/tree_ops/gl/RecordConstantPrecision.cpp', needed by `RecordConstantPrecision.o'.  Stop.

I've clobbered my build, and expect it to complete OK now, but it looks like it would've been good to touch the CLOBBER file to deal with the fact that the update here moved some files around within the ANGLE tree, meaning it's necessary to at least re-run configure.

:jfkthame, requested to land a touch of the CLOBBER file (see previous comment). Sorry about that! Thanks for the heads-up.

Pushed by egubler@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/fd1bf105314f
(10 of 9): build: touch `CLOBBER` for ANGLE rebase (sorry!) r=jgilbert,gfx-reviewers DONTBUILD
See Also: → 1811929
See Also: 1811929

This appears to have removed the changes made for snap in bug 1727087 so snap builds are failing again.

/root/parts/firefox/build/gfx/angle/checkout/src/compiler/translator/SymbolTable_ESSL_autogen.cpp:4337:50: error: no member named 'isnan' in namespace 'sh::BuiltInName'
BuiltInName::isnan,

Can we upstream the snap changes?

No longer blocks: 1810021
Regressions: 1810021
Regressions: 1812260
Duplicate of this bug: 1735435
Duplicate of this bug: 1699727
Regressions: 1815091
Regressions: 1817240
Regressions: 1817333
Regressions: 1819021
No longer blocks: webgpu-in-nightly

This was reverted from Fx111 during the Beta cycle over in bug 1817240. It's planned to ride the Fx112 train to release.

Alias: angle-111
Summary: Update ANGLE for Fx111 → Update ANGLE for Fx112

This was backed out of 111 beta. See bug 1817240 comment 17

You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: