Bug 221163

Summary: https://eventshare.co/ camera doesn’t show image
Product: WebKit Reporter: Dean Jackson <dino>
Component: WebGLAssignee: Dean Jackson <dino>
Status: ASSIGNED ---    
Severity: Normal CC: dino, kbr, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   

Description Dean Jackson 2021-01-29 16:09:30 PST
This page does some feature detection and decides that we are not a compatible WebGL context. This only reproduces with WebGL 2 enabled.

I traced it a bit, but didn't quite track it down to a particular piece of logic. It uses PixiJS, but I'm not sure if that's the code which is failing.
Comment 1 Radar WebKit Bug Importer 2021-01-29 16:09:39 PST
<rdar://problem/73776401>
Comment 2 Dean Jackson 2021-01-29 16:10:45 PST
This is the actual radar: rdar://problem/67756671
Comment 3 Kenneth Russell 2021-01-29 16:38:15 PST
In DevTools, after clicking the "+" button to start the camera:
photobooth - eventshare.co, source file jeelizFaceFilter.js:

Against a WebGL2RenderingContext:
It looks for ["EXT_color_buffer_float", "WEBGL_color_buffer_float", "OES_color_buffer_float"] (succeeds with EXT_color_buffer_float)
then for ["EXT_color_buffer_half_float", "WEBGL_color_buffer_half_float", "OES_color_buffer_half_float"] (succeeds with EXT_color_buffer_half_float)
then for ["OES_texture_float", "MOZ_OES_texture_float", "WEBKIT_OES_texture_float"] (fails)
then for ["OES_texture_float_linear", "MOZ_OES_texture_float_linear", "WEBKIT_OES_texture_float_linear"] (succeeds)
then for ["OES_texture_half_float", "MOZ_OES_texture_half_float", "WEBKIT_OES_texture_half_float"] (fails)
then for ["OES_texture_half_float_linear", "MOZ_OES_texture_half_float_linear", "WEBKIT_OES_texture_half_float_linear"] (fails)
then for ["OES_texture_half_float", "MOZ_OES_texture_half_float", "WEBKIT_OES_texture_half_float"] (fails)
then for ["EXT_color_buffer_float", "WEBGL_color_buffer_float", "OES_color_buffer_float"] (succeeds with EXT_color_buffer_float)
then for ["EXT_color_buffer_half_float", "WEBGL_color_buffer_half_float", "OES_color_buffer_half_float"] (succeeds with EXT_color_buffer_half_float)
then for ["OES_texture_float", "MOZ_OES_texture_float", "WEBKIT_OES_texture_float"] (fails)
then for ["OES_texture_float_linear", "MOZ_OES_texture_float_linear", "WEBKIT_OES_texture_float_linear"] (succeeds)
then for ["OES_texture_half_float", "MOZ_OES_texture_half_float", "WEBKIT_OES_texture_half_float"] (fails)
then for ["OES_texture_half_float_linear", "MOZ_OES_texture_half_float_linear", "WEBKIT_OES_texture_half_float_linear"] (fails)
then for ["OES_texture_half_float", "MOZ_OES_texture_half_float", "WEBKIT_OES_texture_half_float"] (fails)
then for ["OES_texture_float", "MOZ_OES_texture_float", "WEBKIT_OES_texture_float"] (fails)
...


Chrome returns null for EXT_color_buffer_half_float
Chrome also returns null for OES_texture_half_float_linear (subsumed into WebGL 2.0)

My best guess is that the presence of EXT_color_buffer_half_float - which we added as a concession to iOS - is confusing their code. Have you tried commenting out WebKit's advertising of that extension?