Another shader not working on Safari (but working in Chrome just fine): https://www.shadertoy.com/view/7ldfzS
*** Bug 250168 has been marked as a duplicate of this bug. ***
Created attachment 464364 [details] rendering in safari, firefox, chrome working in Firefox Nightly 110, 111 Not Working in Chrome Canary 111 and Safari Technical Preview 160
The error message in Chrome is [.WebGL-0x1200324d500] GL_INVALID_OPERATION: Error: 0x00000502, in ../../third_party/angle/src/libANGLE/renderer/metal/ProgramMtl.mm, createMslShaderLib:673. Internal error compiling shader with Metal backend. program_source:1771:16: error: no matching function for call to 'ANGLE_inout' _uswap(ANGLE_inout(ANGLE_elem_ref(_urnd3, 0)), ANGLE_inout(ANGLE_elem_ref(_urnd3, 1))); ^~~~~~~~~~~ program_source:301:36: note: candidate function [with T = ANGLE_VectorElemRef<float, 3>] not viable: expects an l-value for 1st argument ANGLE_ALWAYS_INLINE ANGLE_InOut<T> ANGLE_inout(thread T &dest) ^ program_source:1771:56: error: no matching function for call to 'ANGLE_inout' _uswap(ANGLE_inout(ANGLE_elem_ref(_urnd3, 0)), ANGLE_inout(ANGLE_elem_ref(_urnd3, 1))); ^~~~~~~~~~~ program_source:301:36: note: candidate function [with T = ANGLE_VectorElemRef<float, 3>] not viable: expects an l-value for 1st argument ANGLE_ALWAYS_INLINE ANGLE_InOut<T> ANGLE_inout(thread T &dest) ^ program_source:1777:16: error: no matching function for call to 'ANGLE_inout' _uswap(ANGLE_inout(ANGLE_elem_ref(_urnd3, 0)), ANGLE_inout(ANGLE_elem_ref(_urnd3, 2))); ^~~~~~~~~~~ program_source:301:36: note: candidate function [with T = ANGLE_VectorElemRef<float, 3>] not viable: expects an l-value for 1st argument ANGLE_ALWAYS_INLINE ANGLE_InOut<T> ANGLE_inout(thread T &dest) ^ program_source:1777:56: error: no matching function for call to 'ANGLE_inout' _uswap(ANGLE_inout(ANGLE_elem_ref(_urnd3, 0)), ANGLE_inout(ANGLE_elem_ref(_urnd3, 2))); ^~~~~~~~~~~ program_source:301:36: note: candidate function [with T = ANGLE_VectorElemRef<float, 3>] not viable: expects an l-value for 1st argument ANGLE_ALWAYS_INLINE ANGLE_InOut<T> ANGLE_inout(thread T &dest) ^ program_source:1783:16: error: no matching function for call to 'ANGLE_inout' _uswap(ANGLE_inout(ANGLE_elem_ref(_urnd3, 1)), ANGLE_inout(ANGLE_elem_ref(_urnd3, 2))); ^~~~~~~~~~~ program_source:301:36: note: candidate function [with T = ANGLE_VectorElemRef<float, 3>] not viable: expects an l-value for 1st argument ANGLE_ALWAYS_INLINE ANGLE_InOut<T> ANGLE_inout(thread T &dest) ^ and … going on… and in Safari [Log] WebGL (2.0=true): Asynch Compile: yes, Textures: F32 [yes], F16 [yes], Depth [yes], LOD [yes], Aniso [yes], Units [16], Max Size [16384], Cube Max Size [16384], Targets: MRT [yes], F32 [yes], Max Size [16384] (7ldfzS, line 2574) [Log] WARNING: This browser doesn't support ResizeObserver + device-pixel-content-box (1) (7ldfzS, line 19710)
This is ANGLE Metal backend failure, same failure for Safari as with Chrome. Safari is slow to produce the error messages to the page, due to layout slowness.
https://bugs.chromium.org/p/angleproject/issues/detail?id=7939
Being fixed upstream in ANGLE. Would prefer if WebKit waits for that fix to land and then rolls ANGLE forward.
<rdar://problem/104202537>