e_hwc: prefer initializing with gbm when libgbm is vender library 20/295720/1
authorChangyeon Lee <cyeon.lee@samsung.com>
Wed, 12 Jul 2023 01:53:28 +0000 (10:53 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Thu, 13 Jul 2023 01:24:15 +0000 (10:24 +0900)
Change-Id: I585c613db1f2b466349eafc9400cded4416a6658

src/bin/e_hwc.c

index eca86b3..df6d8b6 100644 (file)
@@ -348,6 +348,25 @@ e_hwc_ecore_evas_deinit(void)
    hwc->ee =NULL;
 }
 
+static Eina_Bool
+_e_hwc_prefer_gbm_check(void)
+{
+   const char *backend_name;
+   struct gbm_device *gdevice;
+
+   if (e_comp->hwc_prefer_gbm)
+      return EINA_TRUE;
+
+   gdevice = e_comp_screen_gbm_device_get(e_comp->e_comp_screen);
+   if (!gdevice) return EINA_FALSE;
+
+   backend_name = gbm_device_get_backend_name(gdevice);
+   if (!backend_name) return EINA_FALSE;
+   if (!e_util_strcmp(backend_name, "gbm_tbm")) return EINA_FALSE;
+
+   return EINA_TRUE;
+}
+
 EINTERN Eina_Bool
 e_hwc_ecore_evas_init(void)
 {
@@ -387,7 +406,7 @@ e_hwc_ecore_evas_init(void)
        (e_comp_config_get()->engine == E_COMP_ENGINE_GL))
      {
         e_main_ts_begin("\tEE_GL_TBM New");
-        if (e_comp->hwc_prefer_gbm)
+        if (_e_hwc_prefer_gbm_check())
           {
              ee = _e_hwc_ecore_evas_gbm_alloc(hwc, scr_w, scr_h);
              if (!ee)