From 46ea7d9b35cb32d7a762d362240efb01e10271c0 Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Mon, 4 Sep 2023 14:10:58 +0900 Subject: [PATCH] e_comp_screen: create ds_gbm_server for supporting client gbm buffer Change-Id: Ie089322cee37bd6cc16f682dbddf5ef29ab052c2 --- configure.ac | 1 + packaging/enlightenment.spec | 1 + src/bin/e_comp_screen.c | 10 ++++++---- src/bin/e_comp_screen.h | 7 +++++-- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/configure.ac b/configure.ac index 943840f..2037066 100755 --- a/configure.ac +++ b/configure.ac @@ -291,6 +291,7 @@ e_requires="\ libds \ libds-tizen-tbm-server \ libds-tizen-scaler \ + libds-tizen-gbm-server \ " PKG_CHECK_MODULES(E_INFO, [ diff --git a/packaging/enlightenment.spec b/packaging/enlightenment.spec index 1605872..3ea266e 100644 --- a/packaging/enlightenment.spec +++ b/packaging/enlightenment.spec @@ -81,6 +81,7 @@ BuildRequires: pkgconfig(capi-media-streamrecorder) BuildRequires: pkgconfig(libds) BuildRequires: pkgconfig(libds-tizen-tbm-server) BuildRequires: pkgconfig(libds-tizen-scaler) +BuildRequires: pkgconfig(libds-tizen-gbm-server) %if "%{LIBGOMP}" == "use" Requires: libgomp diff --git a/src/bin/e_comp_screen.c b/src/bin/e_comp_screen.c index 7affba2..9c8bb22 100644 --- a/src/bin/e_comp_screen.c +++ b/src/bin/e_comp_screen.c @@ -4,6 +4,7 @@ #include #include #include +#include #define PATH "/org/enlightenment/wm" #define IFACE "org.enlightenment.wm.screen_rotation" @@ -549,7 +550,7 @@ _e_comp_screen_del(E_Comp_Screen *e_comp_screen) } } - if (e_comp_screen->gdevice) gbm_device_destroy(e_comp_screen->gdevice); + if (e_comp_screen->gbm_server) ds_gbm_server_destroy(e_comp_screen->gbm_server); if (e_comp_screen->gdevice_fd >= 0) close(e_comp_screen->gdevice_fd); if (e_comp_screen->bufmgr) tbm_bufmgr_deinit(e_comp_screen->bufmgr); if (e_comp_screen->fd >= 0) close(e_comp_screen->fd); @@ -1774,14 +1775,15 @@ e_comp_screen_gbm_device_get(E_Comp_Screen *e_comp_screen) fd = tbm_drm_helper_get_master_fd(); EINA_SAFETY_ON_FALSE_RETURN_VAL(fd >= 0, NULL); - e_comp_screen->gdevice = gbm_create_device(fd); - if (!e_comp_screen->gdevice) + e_comp_screen->gbm_server = ds_gbm_server_create(fd); + if (!e_comp_screen->gbm_server) { - ERR("fail to create gbm device"); + ERR("fail to create gbm server"); close(fd); return NULL; } + e_comp_screen->gdevice = e_comp_screen->gbm_server->gbm_device; e_comp_screen->gdevice_fd = fd; return e_comp_screen->gdevice; diff --git a/src/bin/e_comp_screen.h b/src/bin/e_comp_screen.h index c818926..47eaebb 100644 --- a/src/bin/e_comp_screen.h +++ b/src/bin/e_comp_screen.h @@ -5,6 +5,7 @@ #define E_COMP_SCREEN_H #include +#include typedef struct _E_Comp_Screen E_Comp_Screen; typedef struct _E_Screen E_Screen; @@ -20,8 +21,10 @@ struct _E_Comp_Screen int num_outputs; tdm_display *tdisplay; tbm_bufmgr bufmgr; - void *gdevice; - int gdevice_fd; + + struct ds_gbm_server *gbm_server; + void *gdevice; + int gdevice_fd; /* for sw compositing */ const Eina_List *devices; -- 2.7.4