Closed Bug 1667621 Opened 2 years ago Closed 10 months ago

EGL/X11 does not suport 10-bit color depth

Categories

(Core :: Graphics, defect)

Firefox 81
x86_64
Linux
defect

Tracking

()

RESOLVED FIXED
95 Branch
Tracking Status
firefox-esr91 --- disabled
firefox93 --- disabled
firefox94 --- fixed
firefox95 --- fixed

People

(Reporter: pdunn+firefox, Assigned: rmader)

References

(Blocks 2 open bugs, )

Details

Attachments

(7 files)

User Agent: Mozilla/5.0 (X11; Linux x86_64; rv:81.0) Gecko/20100101 Firefox/81.0

Steps to reproduce:

Adjusting xorg.conf to:
Section "Screen"
DefaultDepth 30 #default is 24
EndSection

And start firefox (tested 81/82 beta/83 nightly) with MOZ_X11_EGL=1.

Actual results:

Webrender will no longer work when combined with MOZ_X11_EGL=1.

[user@Device ~]$ env MOZ_X11_EGL=1 firefox
Can't find symbol 'eglGetNativeClientBufferANDROID'.
Can't find symbol 'eglQuerySurfacePointerANGLE'.
Can't find symbol 'eglCreateStreamProducerD3DTextureANGLE'.
Can't find symbol 'eglStreamPostD3DTextureANGLE'.
[GFX1-]: Failed to create EGLConfig for WebRender with depth!
[GFX1-]: Failed to create EGLConfig for WebRender with depth!
[GFX1-]: Failed GL context creation for WebRender: 0
[GFX1-]: Failed to connect WebRenderBridgeChild.
[GFX1-]: Failed to create EGLConfig for WebRender with depth!
[GFX1-]: Failed to create EGLConfig for WebRender with depth!
[GFX1-]: [OPENGL] Failed to init compositor with reason: FEATURE_FAILURE_OPENGL_CREATE_CONTEXT

All works as expected without MOZ_X11_EGL, but then there is no vaapi support.

Expected results:

I would have expected X11_EGL to support 30bit colour depth, and thus hardware decoding support through vaapi

Component: Untriaged → General
OS: Unspecified → Linux
Hardware: Unspecified → x86_64

To be clear:
Xorg DefaultDepth 24 + MOZ_X11_EGL=1 works (and i get vaapi)
Xorg DefaultDepth 30 + MOZ_X11_EGL=1 broken (this report)
Xorg DefaultDepth 30 no MOZ_X11_EGL works (but ofc no vaapi, which was the goal)

Blocks: linux-egl
Component: General → Graphics
Product: Firefox → Core
Severity: -- → S3
Flags: needinfo?(stransky)

You should use DefaultDepth 24. DefaultDepth 30 meas 10-bit colors which is not supported by Firefox.

Flags: needinfo?(stransky)

This may be an enhancement request as 10-bit colors are not supported right now.

Summary: DefaultDepth 30 in Xorg causes "Failed to create EGLConfig for WebRender with depth!" with MOZ_X11_EGL=1 → EGL/X11 does not suport 10-bit color depth
Type: defect → enhancement
Blocks: 1239510
See Also: → 1699864

Pdunn, does this still happen for you in nightly? IIUC it should be fixed by now (by hardcoding 32bit contexts). Thanks!

Flags: needinfo?(pdunn+firefox)

Reporter is inactive and the issue should be fixed.

Status: UNCONFIRMED → RESOLVED
Closed: 11 months ago
Resolution: --- → INACTIVE
Status: RESOLVED → REOPENED
Type: enhancement → defect
Ever confirmed: true
Resolution: INACTIVE → ---
Duplicate of this bug: 1735045

Iso, could you check if latest nightly also shows the problem with 30 bit depth on Xorg and answer here?

Flags: needinfo?(pdunn+firefox) → needinfo?(iso)

WebRender doesn't seem to support HDR yet (bug 1539685): bug 1493198 only added HDR to SDR conversion to WebRender (Ctrl+F HDR).

This line requests RGBA8888: https://searchfox.org/mozilla-central/rev/7e36862b61622889b28492d60564dbab1e6d8bbf/gfx/gl/GLContextProviderEGL.cpp#876
And this line seems to require RGBA8888 otherwise CreateConfig seems to fail: https://searchfox.org/mozilla-central/rev/7e36862b61622889b28492d60564dbab1e6d8bbf/gfx/gl/GLContextProviderEGL.cpp#928
Could 2 bit alpha be requested and no alpha be required, so that the RGB10_A2 egl fb config could have matched? That was the only one with alpha on the X11 platform. Does WebRender need to support HDR before doing such a change?

Attached image nvidia_x11_depth_30.png

This is bug 1735045 reproduced on KDE/Nvidia (instead of AMD). There is no corresponding XVisual for RGB8888.

$ nvidia-settings --eglinfo
EGL Information for darkspirit-ubuntu:1.0:
  EGL vendor string: NVIDIA
  EGL version string: 1.5
  EGL extensions:
    EGL_EXT_buffer_age, EGL_EXT_client_sync, EGL_EXT_create_context_robustness, EGL_EXT_image_dma_buf_import,
    EGL_EXT_image_dma_buf_import_modifiers, EGL_MESA_image_dma_buf_export, EGL_EXT_output_base, EGL_EXT_stream_acquire_mode,
    EGL_EXT_sync_reuse, EGL_IMG_context_priority, EGL_KHR_config_attribs, EGL_KHR_create_context_no_error,
    EGL_KHR_context_flush_control, EGL_KHR_create_context, EGL_KHR_fence_sync, EGL_KHR_get_all_proc_addresses,
    EGL_KHR_partial_update, EGL_KHR_swap_buffers_with_damage, EGL_KHR_no_config_context, EGL_KHR_gl_colorspace,
    EGL_KHR_gl_renderbuffer_image, EGL_KHR_gl_texture_2D_image, EGL_KHR_gl_texture_3D_image, EGL_KHR_gl_texture_cubemap_image,
    EGL_KHR_image, EGL_KHR_image_base, EGL_KHR_image_pixmap, EGL_KHR_reusable_sync, EGL_KHR_stream, EGL_KHR_stream_attrib,
    EGL_KHR_stream_consumer_gltexture, EGL_KHR_stream_cross_process_fd, EGL_KHR_stream_fifo,
    EGL_KHR_stream_producer_eglsurface, EGL_KHR_surfaceless_context, EGL_KHR_wait_sync, EGL_NV_nvrm_fence_sync,
    EGL_NV_post_sub_buffer, EGL_NV_quadruple_buffer, EGL_NV_stream_consumer_eglimage, EGL_NV_stream_cross_display,
    EGL_NV_stream_cross_object, EGL_NV_stream_cross_process, EGL_NV_stream_cross_system, EGL_NV_stream_dma,
    EGL_NV_stream_flush, EGL_NV_stream_metadata, EGL_NV_stream_remote, EGL_NV_stream_reset, EGL_NV_stream_socket,
    EGL_NV_stream_socket_inet, EGL_NV_stream_socket_unix, EGL_NV_stream_sync, EGL_NV_stream_fifo_next,
    EGL_NV_stream_fifo_synchronous, EGL_NV_stream_consumer_gltexture_yuv, EGL_NV_stream_attrib, EGL_NV_stream_origin,
    EGL_NV_system_time, EGL_NV_output_drm_flip_event, EGL_NV_triple_buffer
 
 
--fc- --vi- --vt-- buf lv rgb colorbuffer am lm dp st -bind cfrm sb sm cav -----pbuffer----- swapin nv   rn   su -transparent--
  id    id         siz l  lum  r  g  b  a sz sz th en  -  a            eat widt hght max-pxs  mx mn rd   ty   ty typ  r  g  b  
-------------------------------------------------------------------------------------------------------------------------------
0x001    .  0x8000  32  0 rgb  8  8  8  8  0  0 24  8  .  . 0x4D  0  0   . 8000 8000 40000000  0  0  .   4d  801   .  0  0  0
0x002 0x028 0x8002  32  0 rgb 10 10 10  2  0  0 24  8  .  . 0x4D  0  0   . 8000 8000 40000000  8  0  .   4d  807   .  0  0  0
0x003 0x07e 0x8002  32  0 rgb 10 10 10  2  0  0 24  8  .  . 0x4D  0  0   . 8000 8000 40000000  8  0  .   4d  807   .  0  0  0
0x004 0x053 0x8003  32  0 rgb 10 10 10  2  0  0 24  8  .  . 0x4D  0  0   . 8000 8000 40000000  8  0  .   4d  807   .  0  0  0
0x005    .  0x8000  32  0 rgb  8  8  8  8  0  0 24  0  .  . 0x4D  0  0   . 8000 8000 40000000  0  0  .   4d  801   .  0  0  0
0x006 0x024 0x8002  32  0 rgb 10 10 10  2  0  0 24  0  .  . 0x4D  0  0   . 8000 8000 40000000  8  0  .   4d  807   .  0  0  0
0x007 0x07a 0x8002  32  0 rgb 10 10 10  2  0  0 24  0  .  . 0x4D  0  0   . 8000 8000 40000000  8  0  .   4d  807   .  0  0  0
0x008 0x04f 0x8003  32  0 rgb 10 10 10  2  0  0 24  0  .  . 0x4D  0  0   . 8000 8000 40000000  8  0  .   4d  807   .  0  0  0
0x009    .  0x8000  32  0 rgb  8  8  8  8  0  0  0  0  .  . 0x4D  0  0   . 8000 8000 40000000  0  0  .   4d  801   .  0  0  0
0x00a 0x02c 0x8002  32  0 rgb 10 10 10  2  0  0  0  0  .  . 0x4D  0  0   . 8000 8000 40000000  8  0  .   4d  807   .  0  0  0
0x00b 0x082 0x8002  32  0 rgb 10 10 10  2  0  0  0  0  .  . 0x4D  0  0   . 8000 8000 40000000  8  0  .   4d  807   .  0  0  0
0x00c 0x057 0x8003  32  0 rgb 10 10 10  2  0  0  0  0  .  . 0x4D  0  0   . 8000 8000 40000000  8  0  .   4d  807   .  0  0  0
0x00d 0x038 0x8002  32  0 rgb 10 10 10  2  0  0 24  8  .  . 0x4D  1  2   . 8000 8000 40000000  8  0  .   4d  805   .  0  0  0
0x00e 0x08e 0x8002  32  0 rgb 10 10 10  2  0  0 24  8  .  . 0x4D  1  2   . 8000 8000 40000000  8  0  .   4d  805   .  0  0  0
0x00f 0x063 0x8003  32  0 rgb 10 10 10  2  0  0 24  8  .  . 0x4D  1  2   . 8000 8000 40000000  8  0  .   4d  805   .  0  0  0
0x010 0x030 0x8002  32  0 rgb 10 10 10  2  0  0 24  0  .  . 0x4D  1  2   . 8000 8000 40000000  8  0  .   4d  805   .  0  0  0
0x011 0x086 0x8002  32  0 rgb 10 10 10  2  0  0 24  0  .  . 0x4D  1  2   . 8000 8000 40000000  8  0  .   4d  805   .  0  0  0
0x012 0x05b 0x8003  32  0 rgb 10 10 10  2  0  0 24  0  .  . 0x4D  1  2   . 8000 8000 40000000  8  0  .   4d  805   .  0  0  0
0x013 0x03a 0x8002  32  0 rgb 10 10 10  2  0  0 24  8  .  . 0x4D  1  4   . 8000 8000 40000000  8  0  .   4d  805   .  0  0  0
0x014 0x090 0x8002  32  0 rgb 10 10 10  2  0  0 24  8  .  . 0x4D  1  4   . 8000 8000 40000000  8  0  .   4d  805   .  0  0  0
0x015 0x065 0x8003  32  0 rgb 10 10 10  2  0  0 24  8  .  . 0x4D  1  4   . 8000 8000 40000000  8  0  .   4d  805   .  0  0  0
0x016 0x032 0x8002  32  0 rgb 10 10 10  2  0  0 24  0  .  . 0x4D  1  4   . 8000 8000 40000000  8  0  .   4d  805   .  0  0  0
0x017 0x088 0x8002  32  0 rgb 10 10 10  2  0  0 24  0  .  . 0x4D  1  4   . 8000 8000 40000000  8  0  .   4d  805   .  0  0  0
0x018 0x05d 0x8003  32  0 rgb 10 10 10  2  0  0 24  0  .  . 0x4D  1  4   . 8000 8000 40000000  8  0  .   4d  805   .  0  0  0
0x019 0x044 0x8002  32  0 rgb 10 10 10  2  0  0 24  8  .  . 0x4D  1  8   . 8000 8000 40000000  8  0  .   4d  805   .  0  0  0
0x01a 0x09a 0x8002  32  0 rgb 10 10 10  2  0  0 24  8  .  . 0x4D  1  8   . 8000 8000 40000000  8  0  .   4d  805   .  0  0  0
0x01b 0x06f 0x8003  32  0 rgb 10 10 10  2  0  0 24  8  .  . 0x4D  1  8   . 8000 8000 40000000  8  0  .   4d  805   .  0  0  0
0x01c 0x040 0x8002  32  0 rgb 10 10 10  2  0  0 24  0  .  . 0x4D  1  8   . 8000 8000 40000000  8  0  .   4d  805   .  0  0  0
0x01d 0x096 0x8002  32  0 rgb 10 10 10  2  0  0 24  0  .  . 0x4D  1  8   . 8000 8000 40000000  8  0  .   4d  805   .  0  0  0
0x01e 0x06b 0x8003  32  0 rgb 10 10 10  2  0  0 24  0  .  . 0x4D  1  8   . 8000 8000 40000000  8  0  .   4d  805   .  0  0  0
0x01f 0x04c 0x8002  32  0 rgb 10 10 10  2  0  0 24  8  .  . 0x4D  1 16   . 8000 8000 40000000  8  0  .   4d  805   .  0  0  0
0x020 0x0a2 0x8002  32  0 rgb 10 10 10  2  0  0 24  8  .  . 0x4D  1 16   . 8000 8000 40000000  8  0  .   4d  805   .  0  0  0
0x021 0x077 0x8003  32  0 rgb 10 10 10  2  0  0 24  8  .  . 0x4D  1 16   . 8000 8000 40000000  8  0  .   4d  805   .  0  0  0
0x022 0x048 0x8002  32  0 rgb 10 10 10  2  0  0 24  0  .  . 0x4D  1 16   . 8000 8000 40000000  8  0  .   4d  805   .  0  0  0
0x023 0x09e 0x8002  32  0 rgb 10 10 10  2  0  0 24  0  .  . 0x4D  1 16   . 8000 8000 40000000  8  0  .   4d  805   .  0  0  0
0x024 0x073 0x8003  32  0 rgb 10 10 10  2  0  0 24  0  .  . 0x4D  1 16   . 8000 8000 40000000  8  0  .   4d  805   .  0  0  0
0x025    .  0x8000  24  0 rgb  8  8  8  0  0  0 24  8  .  . 0x4D  0  0   . 8000 8000 40000000  0  0  .   4d  801   .  0  0  0
0x026    .  0x8000  24  0 rgb  8  8  8  0  0  0 24  0  .  . 0x4D  0  0   . 8000 8000 40000000  0  0  .   4d  801   .  0  0  0
0x027    .  0x8000  24  0 rgb  8  8  8  0  0  0  0  0  .  . 0x4D  0  0   . 8000 8000 40000000  0  0  .   4d  801   .  0  0  0
0x028    .  0x8000  16  0 rgb  5  6  5  0  0  0 24  8  .  . 0x4D  0  0   . 8000 8000 40000000  0  0  .   4d  801   .  0  0  0
0x029    .  0x8000  16  0 rgb  5  6  5  0  0  0 24  0  .  . 0x4D  0  0   . 8000 8000 40000000  0  0  .   4d  801   .  0  0  0
0x02a    .  0x8000  16  0 rgb  5  6  5  0  0  0 16  0  .  . 0x4D  0  0   . 8000 8000 40000000  0  0  .   4d  801   .  0  0  0
0x02b    .  0x8000  16  0 rgb  5  6  5  0  0  0  0  0  .  . 0x4D  0  0   . 8000 8000 40000000  0  0  .   4d  801   .  0  0  0
darkspirit@darkspirit-ubuntu:~$ cat /etc/X11/xorg.conf
Section "Screen"
        Identifier "asdf"
        DefaultDepth 30
EndSection
(#0) Error	Failed to create EGLConfig for WebRender!
(#5) Error	Failed GL context creation for hardware WebRender: true
(#6) Error	GLContextEGL::FindVisual(): Failed to create EGLConfig!
(#7) Error	Failed to create EGLConfig for WebRender!
(#8) Error	Failed to create EGLConfig for WebRender!
(#9) Error	Failed GL context creation for hardware WebRender: true
(#10) Error	Failed to get shared GL context
(#11) Error	Failed to create EGLConfig for WebRender!
(#12) Error	Failed to create EGLConfig for WebRender!
(#13) Error	Failed GL context creation for hardware WebRender: true
(#14) Error	Failed to create EGLConfig for WebRender!
(#15) Error	Failed to create EGLConfig for WebRender!
(#16) Error	Failed GL context creation for WebRender: 0
(#17) Error	FEATURE_FAILURE_WEBRENDER_INITIALIZE_UNSPECIFIED
(#18) Error	Failed to connect WebRenderBridgeChild.
(#19) Error	Fallback WR to SW-WR
Flags: needinfo?(iso)

Thanks Jan. I guess it will get hairy to try to support anything but 24 bit default depth on X11 at the moment, so I'll create a patch to blocklist EGL for other cases.

I don't know if it's worth. GLX WebGL1 + GLX WebGL2 fail as well (FEATURE_FAILURE_WEBGL_EXHAUSTED_DRIVERS), while GLX WebRender seems to work. You would make HW WR work again for a strange configuration that should probably be blocked entirely.

HW WR work again for a strange configuration that should probably be blocked entirely.

Strange or not, it provides usable browsing experience to potential inattentive users who
would flock away from FF fast after a couple of minutes of SW-WR.

The more specific error messages from a year go look more helpful than the current generic ones too.

(In reply to Iso from comment #14)

HW WR work again for a strange configuration that should probably be blocked entirely.

Strange or not, it provides usable browsing experience to potential inattentive users who would flock away from FF fast after a couple of minutes of SW-WR.
The more specific error messages from a year go look more helpful than the current generic ones too.

This problem might be fixed as soon as Firefox starts supporting HDR output.
With GLX, an unexpected bundle of settings slips through the code and gets GLX HW WR while GLX WebGL fails.

How common are HDR-only users who can't display SDR on a composited desktop? IIUC, RGBA8888 is a mandatory format.

Not requiring alpha was the cause for a severe rendering bug on Nvidia (bug 1663273) and it was assumingly not Nvidia's fault. X11 widget code is still too complex and buggy (bug 1630251, bug 1733283, bug 1677314, bug 1730991). If at all, a fallback should only be done on Mesa, but then we had another configuration that need to be maintained and kept in mind when dealing with bug reports.

gdk_screen_get_rgba_visual fails on such a system. I could get my test app working on Nvidia by no longer choosing the egl fb config based on the gdk_screen_get_system_visual defined widget visual (there was no match), but by checking each EGL_NATIVE_VISUAL_ID's depth and choosing fb config and visual if it has the desired depth. This can't work on Mesa EGL as it always wants opaque visuals.

If I am not wrong, these 78 Linux configurations need to be considered already (but are not even actively tested), and many about:config prefs could change behavior further. It would be far more important to ensure first that WebRender works well for expected configurations (Raspberry Pi, etc).

Intel/AMD/Nvidia Mesa SW WR GLX WR GLX SW WR EGL WR EGL WR EGL with OS compositing
Gnome Wayland x x possible possible possible
Gnome Xwayland possible possible possible possible x
Gnome X11 possible possible possible possible x
Gnome X11 with GTK_CSD=1 (e.g. elementaryOS) possible possible possible possible x
KDE Wayland x x possible possible possible (?)
KDE X11 with compositing possible possible possible possible x
KDE X11 without compositing, i3, etc. (no alpha) possible possible possible possible x
Proprietary Nvidia driver SW WR GLX WR GLX SW WR EGL WR EGL WR EGL with OS compositing
Gnome Wayland x x possible possible unknown?
Gnome Xwayland possible possible possible possible x
Gnome X11 possible possible possible possible x
Gnome X11 with GTK_CSD=1 (e.g. elementaryOS) possible possible possible possible x
KDE Wayland x x possible possible unknown?
KDE X11 with compositing possible possible possible possible x
KDE X11 without compositing, i3, etc. (no alpha) possible possible possible possible x
Uncommon Mesa (e.g. Raspberry Pi) SW WR GLX WR GLX SW WR EGL WR EGL WR EGL with OS compositing
Gnome Wayland x x possible possible (GLES3) unknown?
Gnome Xwayland partly (?) possible unknown? possible possible (GLES3) x
Gnome X11 partly (?) possible unknown? possible possible (GLES3) x
Gnome X11 with GTK_CSD=1 (e.g. elementaryOS) partly (?) possible unknown? possible possible (GLES3) x
KDE Wayland x x possible possible (GLES3) unknown?
KDE X11 with compositing partly (?) possible unknown? possible possible (GLES3) x
KDE X11 without compositing, i3, etc. (no alpha) partly (?) possible unknown? possible possible (GLES3) x
Type: defect → enhancement

Just tried it myself and on GLX even WebGL runs just fine (on Intel). So this is a clear regression from previous behaviour. Will look if I can make things work with EGL - or blocklist EGL for this case otherwise.

Type: enhancement → defect

I'll make printf debugging here as well to see what it uses with GLX.

A quick comparison between glxinfo and eglinfo reveals that this is simply a driver issue: the X11 platform on EGL does not offer RGBA8888 configs in this case. As other platforms, such a the GBM or surfaceless one do offer such configs, I suspect this is a bug, likely related to the mess around https://gitlab.freedesktop.org/mesa/mesa/-/issues/149.

This has to be fixed in Mesa (and checked on Nvidia). Until then we should force-disable EGL in this case, will create a patch now.

30bit "Deep Color" is broken on EGL on Mesa and everything else is neither
tested nor expected to work now or in the future. If WR starts to
support higher color depths in the future, we will likely only support
it on Wayland.

Thus bail out of the EGL test early as GLX does handle the 30 bit case
and maybe also works better with 16 bit.

This fixes HW-WR and WebGL on Xorg configs with DefaultDepth 30.

Assignee: nobody → robert.mader

EGL/Nvidia supports opaque RGB565. Firefox' EGL fb config/xvisual selection code just needed to be fixed for it.
Gnome X11/DefaultDepth 16/Nvidia is broken: The Gnome terminal is an invisible window.
KDE X11/DefaultDepth 16/Nvidia works.

.X11 DefaultDepth 30: EGL/Nvidia (and EGL/Mesa) support transparent RGB10_A2.

(And attachment 9245762 [details] has eglinfo+glxinfo of default Xorg/Gnome X11/Nvidia.)

With Wayland, EGL, Snap and Flatpak we get more and more and more possible configurations. (I have seen a Snap-only Nvidia bug report.)
IMHO, the goal should be to deprecate GLX to remove the burden of testing it.
The purpose of SW WR is to cover edge cases.

this bug:
On 30 bit Xorg, Firefox might be able to use EGL with RGB10_A2 on Mesa and Nvidia, but Firefox denies it. (My test app works with RGB10_A2.)
At the moment, Mesa 21 users either get EGL WR with RGBA8888 (the default) or SW WR (this bug's edge case).
Options:
a) 30 bit Xorg users could manually set gfx.x11-egl.force-disabled=true.
b) 30 bit Xorg users could remove their custom DefaultDepth 30 xorg config option (as done in bug 1735045 comment 3).
c) Firefox could allow RGB10_A2 for presentation.
d) Attached patch from comment 20: Fallback to GLX, keeping GLX a bit more alive.
e) 30 bit Xorg users keep using SW WR.

mentioned in comment 20:
Should HW WR even be enabled for 16 bit RGB565 on Linux? What is the minimum on Windows?

Turns out that this gets fixed on Mesa by https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9989 - hope to get it merged now, but I still think we can take the patch above for the time being. In a year or two we can hopefully remove it, together with GLX in general :)

Attached patch fx.patchSplinter Review

EGL RGB10_A2 works on Default Depth 30/Gnome X11/Nvidia after making these two changes on top of bug 1702546 comment 9:

  • Add || (GdkIsX11Display() && aDepth == 32 && r == 10 && g == 10 && b == 10 && a == 2)
    after (aDepth == 32 && r == 8 && g == 8 && b == 8 && a == 8).
  • Reduce minimum alpha of kEGLConfigAttribsRGBA32 from 8 to 2.

Does that work for you on Mesa as well?

I could even get EGL WR working with opaque RGB565 on Default Depth 16/KDE X11/Nvidia by adding some fallbacks.

I'm pretty sure we can get such configs to work, however I'd see a good chance that they turn out to be glitchy as AFAIK the WR team only cares about 8888 atm. I really wouldn't want to make something work that's only used on Linux, and only on edge cases. The issue here will hopefully get fixed in Mesa soon, so we can remove that workaround again in some time (note that I also want a patch that's easily backportable - making changes to GLContextProviderEGL is usually a bit delicate because it affects so many platforms.)

Pushed by robert.mader@posteo.de:
https://hg.mozilla.org/integration/autoland/rev/a9368e7ab311
Disable EGL on all default colors depths but 24, r=gfx-reviewers,nical
Status: REOPENED → RESOLVED
Closed: 11 months ago10 months ago
Resolution: --- → FIXED
Target Milestone: --- → 95 Branch

Comment on attachment 9245717 [details]
Bug 1667621: Disable EGL on all default colors depths but 24, r=aosmond

Beta/Release Uplift Approval Request

  • User impact if declined: Some setups will have broken WebGL and fall back to SW-WR due to a driver bug.
  • Is this code covered by automated tests?: No
  • Has the fix been verified in Nightly?: Yes
  • Needs manual test from QE?: No
  • If yes, steps to reproduce:
  • List of other uplifts needed: None
  • Risk to taking this patch: Low
  • Why is the change risky/not risky? (and alternatives if risky): Disables a new feature that ships in 94 for some users, falls back to 93 behaviour. The code is simple and is run on every start on CI, so the risk of crashes etc. is very low (even though CI does not test the setups in question).
  • String changes made/needed:
Attachment #9245717 - Flags: approval-mozilla-beta?

Comment on attachment 9245717 [details]
Bug 1667621: Disable EGL on all default colors depths but 24, r=aosmond

Approved for 94.0b7.

Attachment #9245717 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
You need to log in before you can comment on or make changes to this bug.