summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier Fourdan <ofourdan@redhat.com>2018-06-05 19:38:42 +0200
committerAdam Jackson <ajax@redhat.com>2018-06-21 10:54:10 -0400
commit48f037a27c45b571c9750ac812977ac0a33ab12b (patch)
treec518d72238c8ee2ea88f246085b37becf84db243
parentf2fcb4877e976d078b0eb4755177170467341484 (diff)
xwayland: move EGL backend init to glamor
Move EGL backends initialization to its own function in xwayland-glamor.c Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
-rw-r--r--hw/xwayland/xwayland-glamor.c17
-rw-r--r--hw/xwayland/xwayland.c16
-rw-r--r--hw/xwayland/xwayland.h2
3 files changed, 21 insertions, 14 deletions
diff --git a/hw/xwayland/xwayland-glamor.c b/hw/xwayland/xwayland-glamor.c
index 72995de00..3792dfa8c 100644
--- a/hw/xwayland/xwayland-glamor.c
+++ b/hw/xwayland/xwayland-glamor.c
@@ -162,6 +162,23 @@ glamor_egl_fd_name_from_pixmap(ScreenPtr screen,
return 0;
}
+void
+xwl_glamor_init_backends(struct xwl_screen *xwl_screen, Bool use_eglstream)
+{
+#ifdef XWL_HAS_EGLSTREAM
+ if (use_eglstream) {
+ if (!xwl_glamor_init_eglstream(xwl_screen)) {
+ ErrorF("xwayland glamor: failed to setup EGLStream backend\n");
+ use_eglstream = FALSE;
+ }
+ }
+#endif
+ if (!use_eglstream && !xwl_glamor_init_gbm(xwl_screen)) {
+ ErrorF("xwayland glamor: failed to setup GBM backend, falling back to sw accel\n");
+ xwl_screen->glamor = 0;
+ }
+}
+
Bool
xwl_glamor_init(struct xwl_screen *xwl_screen)
{
diff --git a/hw/xwayland/xwayland.c b/hw/xwayland/xwayland.c
index 806d45675..8c02c02f8 100644
--- a/hw/xwayland/xwayland.c
+++ b/hw/xwayland/xwayland.c
@@ -992,20 +992,8 @@ xwl_screen_init(ScreenPtr pScreen, int argc, char **argv)
}
#ifdef XWL_HAS_GLAMOR
- if (xwl_screen->glamor) {
-#ifdef XWL_HAS_EGLSTREAM
- if (use_eglstreams) {
- if (!xwl_glamor_init_eglstream(xwl_screen)) {
- ErrorF("xwayland glamor: failed to setup EGLStream backend\n");
- use_eglstreams = FALSE;
- }
- }
-#endif
- if (!use_eglstreams && !xwl_glamor_init_gbm(xwl_screen)) {
- ErrorF("xwayland glamor: failed to setup GBM backend, falling back to sw accel\n");
- xwl_screen->glamor = 0;
- }
- }
+ if (xwl_screen->glamor)
+ xwl_glamor_init_backends(xwl_screen, use_eglstreams);
#endif
/* In rootless mode, we don't have any screen storage, and the only
diff --git a/hw/xwayland/xwayland.h b/hw/xwayland/xwayland.h
index 191f1b297..304484ccc 100644
--- a/hw/xwayland/xwayland.h
+++ b/hw/xwayland/xwayland.h
@@ -423,6 +423,8 @@ Bool xwl_shm_destroy_pixmap(PixmapPtr pixmap);
struct wl_buffer *xwl_shm_pixmap_get_wl_buffer(PixmapPtr pixmap);
#ifdef XWL_HAS_GLAMOR
+void xwl_glamor_init_backends(struct xwl_screen *xwl_screen,
+ Bool use_eglstream);
Bool xwl_glamor_init(struct xwl_screen *xwl_screen);
Bool xwl_screen_set_drm_interface(struct xwl_screen *xwl_screen,