chromium/5359
branch2022-11-23: Now in review. Some relevant work remains outstanding, but this should be broken out as follow-up work.
This rebase of mozilla/angle
will be marked as the firefox-111
branch and based on upstream's chromium/5359
.
3a1d51f5
was hard-blocking builds (-Wunreachable-code
). @ErichDonGubler changed it to remove the remaining unreachable body of the function, since I feel like a theoretical merge conflict resolution would clearly present the intent.
if (1) return;
or similar.400476a0b
–it might be outmoded by 58930a73ce
, with some migration?
gn
config got introduced for this. After a few minutes, I skipped analyzing it deeply in favor of leaning on your involvement from before.src/compiler/translator/SymbolTable_ESSL_autogen.cpp
, since I don't understand them.33ffc1233
in favor of b8d6f8aa93
.c79c27ff2
, seems upstreamed by afda22b0
.23851a53
, seems upstream-fixed by 59f496c0
.std::atomic<angle::Mutex*> g_{,Surface}Mutex(nullptr)
to std::atomic<angle::Mutex*> g_{,Surface}Mutex{}
.9312f40a
any more, if upstream fixed?604cd6cae
gets listed in cherry_picks.txt
, but…why?
git cl format
specifying too many arguments on Windows; patching to chunk into ~500 files was necessary. Upstream?ShCompileOptions
changed✔️ Found in 2022-11-15#1. Worked around compilation issues in 2022-11-15#2. Resolution: exhaustively specify all flags.
Discovered that ShCompileOptions
constants like SH_VARIABLES
were no longer defined. ShCompileOptions
has apparently been migrated to a struct bitfields interface, rather than a bitflags-based one.
Migration for setting individual flags is easy, but one hiccup: we currently rely on way to specify "all flags" without enumerating each flag individually (options = -1;
from dom/canvas/WebGLShaderValidator.cpp:ChooseValidatorCompileOptions
).
astcenc_vecmathlib_*
headers not found✔️ Found in 2022-11-15#2. Resolution: define the new ASTCENC_DECOMPRESS_ONLY
#define
in update-angle.py
.
#include "astcenc_vecmathlib_sse_4.h"
failed to compile checkout/third_party/astc-encoder/src/Source/astcenc_mathlib.h
, because these files were not discovered in the build graph when generated via ninja
.
astcenc
stuff✔️ Resolution: define the new ANGLE_ENABLE_APPLE_WORKAROUNDS
#define
in update-angle.py
.
exit-time-destructors
error in Windows✔️ Found in 2022-11-15#1. Resolution: worked around in our fork.
std::mutex
was incorrectly assumed to be trivially destructible in upstream's Renderer11
API on Windows. This has been resolved by applying the angle::base::NoDestructor
type wrapper around the static
Renderer11::gMutex
member.
Status: after a long and drawn-out set of issues, it appears we are finally good to try merging this rebase to mainline!
ID3DDevice
✔️ Discovered in 2022-11-29#1. Reported here. Mainline fix posted for review here. See here for instructions to reproduce.
An unbalanced set of refcount operations in Firefox led to consistent use-after-free crashes while the ANGLE/D3D11 back end was being torn down. This issue already existed in Firefox, but was not exposed until this update.
ovr_multiview2_draw_buffers
test cases fail✔️ Discovered in 2023-01-09#1. Worked around in D162655.
Failures in the gl2c
test group for Windows consistently failed in
EGL_FLEXIBLE_SURFACE_COMPATIBILITY_SUPPORTED_ANGLE
removed✔️ This issue appears to have been conclusively resolved. We will keep an eye out for regressions. Originally found with 2022-11-21#1.
Before this rebase, Fx's ANGLE back end for WebRender used EGL_FLEXIBLE_SURFACE_COMPATIBILITY_SUPPORTED_ANGLE
as a context creation attribute. This has been removed in Chromium upstream in favor of the EGL_KHR_no_config_context
extension, according to the upstream commit message removing it. With this rebase, usage of the old attribute would return EGL_BAD_ATTRIBUTE
(visible as 0x3004
in failure logs).
IntermNode.cpp
's PropagatePrecision
methods✔️ Some AST traversal/manipulation changed in angle
upstream, and it crashes with our current thread sizes. Resolved by increasing thread stack size of CanvasRendererThread
. Discovered in 2022-11-29#1.
✔️ Bug 1812260: snap builds broken after missing. Should be resolved with D167815.
At @jgilbert's recommendation, @ErichDonGubler has been using the union of the two ./mach try fuzzy
queries:
!asan !tsan !plat !js !talos 'mochi 'webgl
!asan !tsan !plat !js !talos 'reftest
tip
from mozilla-central
.mach try auto
build, based on the first version of the last revision's review.
EGL_FLEXIBLE_SURFACE_COMPATIBILITY_SUPPORTED_ANGLE
being removed. These will not be noted explicitly.bc2
appears to be intermittent.bc15
appears to be intermittent.opt
Mochitest with WebGL over IPC
's gl2c
is intermittent.EGL_FLEXIBLE_SURFACE_COMPATIBILITY_SUPPORTED_ANGLE
attribute
M
fails on:
gl1c
(retried, failed)gl1e
(retried, failed): appears to be an ANGLE destructor issuegl2c
(retried, failed): appears to be an ANGLE destructor issuegl2e3
(retried, failed): appears to be an ANGLE destructor issueM-gli
fails on:
gl1c
(retried, failed)gl2c
(retried, failed): failed to fetch WebGL rendering contextgl1e
(retried, failed): unexpected failures in shader-uniform-packing-restrictions.html
caused by a stack overflow.gl2e3
(retried, failed): appears to be an ANGLE destructor issuegl2e4
(retried, failed): unexpected failures in shader-uniform-packing-restrictions.html
caused by a stack overflowM
fails on:
gl1c
(retried, failed)gl2c
(retried, failed)gl2e3
(retried, failed)M-gli
fails on:
gl1c
(retried, failed)gl2c
(retried, failed)gl2e3
(retried, failed)gl2e4
(retried, failed)gl1e
(retried, failed)gl2e3
(retried, failed)gl2e4
(retried, failed)tip
from mozilla-central
.mozilla-central
's tip
with minor unrelated dev fixes from @ErichDonGubler.
gl2e3
: found a crash calling EglDisplay::fTerminate
.Finely tracking failures were stopped, for a while, since attention was devoted solely to the fix that this build ended up providing.
dom/canvas/test/webgl-conf/generated/test_2_conformance2__extensions__ovr_multiview2_draw_buffers.html
test case as an expected failure.
gl1c
failure happened, but @ErichDonGubler doesn't think it's a problem? 🤔ovr_multiview2_draw_buffers
test failure as expected for Windows.
debug
clause we needed for mochitest-errata.ini
. Will fix that up.debug
clause to the expected ovr_multiview2_draw_buffers
test failure.
autoland
. Revealed some more issues:
PoolAlloc
allocator makes asan
angry on Linux! TODO: issue entry above?asan
violations in PoolAlloc
on Linux, per @jgilbert's suggestion. This failed, but nicely demonstrates failures from 1
above.ANGLE_DISABLE_POOL_ALLOC
compilation flag properly in 2
.Patch stacks in Lando: