raster pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=17e375c5a7600c76e02efdec3e96c3edf5d27bbb
commit 17e375c5a7600c76e02efdec3e96c3edf5d27bbb Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com> Date: Fri Sep 20 10:11:46 2019 +0100 wizard - comp - fix checking of gl/hw accel using just evas_gl_new() will lead to almost always using just software rendering... because often osmesa is not installed and e will start in software rendering by default until it switches properly after the wizard. this appropriately checks in an x path vs. wayland path in different ways as to if we should do gl by default and ALWAYS offers a checkbox to the user, just the default value/state of that checkbox depends on what is detected and a user can override. --- src/modules/wizard/page_150.c | 43 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/src/modules/wizard/page_150.c b/src/modules/wizard/page_150.c index 1a2a0f452..253e928ea 100644 --- a/src/modules/wizard/page_150.c +++ b/src/modules/wizard/page_150.c @@ -6,6 +6,7 @@ static Eina_Bool do_gl = 0; static Eina_Bool do_vsync = 0; + static void check_add(Evas_Object *box, const char *txt, Eina_Bool *val) { @@ -22,7 +23,7 @@ check_add(Evas_Object *box, const char *txt, Eina_Bool *val) E_API int wizard_page_show(E_Wizard_Page *pg EINA_UNUSED) { - Evas_Object *o, *of, *ob; + Evas_Object *o, *of; api->wizard_title_set(_("Compositing")); @@ -47,8 +48,46 @@ wizard_page_show(E_Wizard_Page *pg EINA_UNUSED) evas_gl_free(gl); } } + if (!do_gl) + { +#ifdef HAVE_WAYLAND + if (e_comp->comp_type == E_PIXMAP_TYPE_WL) + { + if (ecore_evas_engine_type_supported_get(ECORE_EVAS_ENGINE_OPENGL_DRM)) + { + void *egl = dlopen("libEGL.so.1", RTLD_NOW | RTLD_LOCAL); + if (!egl) egl = dlopen("libEGL.so", RTLD_NOW | RTLD_LOCAL); + if (egl) + { + do_gl = 1; + dlclose(egl); + } + } + do_vsync = 1; + } +#endif +#ifndef HAVE_WAYLAND_ONLY + if (e_comp->comp_type == E_PIXMAP_TYPE_X) + { + Ecore_X_Window_Attributes att; + + memset((&att), 0, sizeof(Ecore_X_Window_Attributes)); + ecore_x_window_attributes_get(ecore_x_window_root_first_get(), &att); + if ((att.depth > 8) && + (ecore_evas_engine_type_supported_get(ECORE_EVAS_ENGINE_OPENGL_X11))) + { + Ecore_Evas *ee = ecore_evas_gl_x11_new(NULL, 0, 0, 0, 32, 32); + if (ee) + { + do_gl = do_vsync = 1; + ecore_evas_free(ee); + } + } + } + } +#endif check_add(o, _("Hardware Accelerated (OpenGL)"), &do_gl); - check_add(o, _("Tear-free Rendering (OpenGL only)"), &do_vsync); + check_add(o, _("Tear-free Rendering"), &do_vsync); evas_object_show(of); api->wizard_page_show(of); --