This is an automated email from the git hooks/post-receive script.

git pushed a commit to branch wl/browser-all
in repository enlightenment.

View the commit online.

commit 82cdb2780ffe459e994459bdbc624d23061fa4f9
Author: Cedric BAIL <[email protected]>
AuthorDate: Mon Aug 17 16:34:58 2026 -0600

    e_comp_x - report GL from the canvas we got, not the engines we could build
    
    e_comp_x_randr_canvas_new() sets the compositor-wide GL flag from
    ecore_evas_engine_type_supported_get(OPENGL_X11) - a question about how
    EFL was built, asked before any canvas exists. That is a precondition for
    attempting GL, not a result of having obtained it, and the only place it
    was ever corrected is the software fallback, which is inside
    "if (!e_comp->ee)" and so does not run when a canvas already exists.
    
    The result is a compositor that reports itself accelerated while running
    on software_x11. Measured on the wl_x11 backend: engine 'software_x11',
    e_comp->gl 0, e_comp_gl_get() 1. e_comp_wl_init() believes the flag and
    runs the Evas_GL setup against the software canvas, which hands back an
    api table with every EGL entry NULL - evasglQueryDmaBufFormats,
    evasglQueryDmaBufModifiers and evasglBindWaylandDisplay among them. With
    the last of those NULL, e_comp->gl is never set for the wayland side
    either, so there is no GL path for client buffers at all: no dmabuf, and
    every client falls back to shm without anything saying why.
    
    e_comp->gl already holds the right answer - it is set where a GL canvas
    is actually created - so the flag is now taken from it at the end of the
    function, once, whichever branch ran.
---
 src/bin/e_comp_x_randr.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/src/bin/e_comp_x_randr.c b/src/bin/e_comp_x_randr.c
index e7a3b8bc3..c9cc6288c 100644
--- a/src/bin/e_comp_x_randr.c
+++ b/src/bin/e_comp_x_randr.c
@@ -1279,6 +1279,27 @@ e_comp_x_randr_canvas_new(Ecore_Window parent, int w, int h)
         elm_config_all_flush();
         elm_config_save();
      }
+   /* Whatever happened above, the flag has to describe the canvas that now
+    * exists rather than the engines this build could have used.
+    *
+    * The check at the top of this function asks ecore_evas whether it
+    * *supports* OPENGL_X11, which is a question about how EFL was built, and
+    * sets the flag from the answer. That is a precondition for trying GL, not
+    * a result of having got it - but the only place it was ever corrected is
+    * the software fallback below, and that whole block is skipped when
+    * e_comp->ee already exists. A caller who arrives here with a canvas
+    * already made therefore leaves with the flag saying GL no matter what the
+    * canvas is.
+    *
+    * On the wl_x11 backend that is exactly what happens: the compositor comes
+    * up on software_x11 with e_comp->gl correctly 0, while e_comp_gl_get()
+    * answers 1. e_comp_wl_init() believes it, runs the Evas_GL setup against a
+    * software canvas, and gets an api table with every EGL entry NULL -
+    * including evasglBindWaylandDisplay, so E has no GL path for client
+    * buffers at all and no dmabuf, while still reporting itself as
+    * accelerated. */
+   e_comp_gl_set(!!e_comp->gl);
+
    if (ret)
      e_comp->grab_cb = _e_comp_x_randr_grab_cb;
    return ret;

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.

Reply via email to