aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2020-04-08 14:57:20 +0200
committerScott Anderson <scott@anderso.nz>2020-04-09 00:16:03 +0000
commitd10f8a98ec171791cd81de807e1c400af25b1e2b (patch)
tree0634fa1f6699bcff8efa273590bbfd16fb9c9d84
parent4a1015faff7fb620779dedf473cedfef77f938c6 (diff)
render: only expose linux-dmabuf if EGL extension is supported
Only expose linux-dmabuf extension if EGL_EXT_image_dmabuf_import_ext is supported. Closes: https://github.com/swaywm/wlroots/issues/2076
-rw-r--r--render/gles2/renderer.c10
-rw-r--r--render/wlr_renderer.c7
2 files changed, 10 insertions, 7 deletions
diff --git a/render/gles2/renderer.c b/render/gles2/renderer.c
index 523c5bd5..cba338a1 100644
--- a/render/gles2/renderer.c
+++ b/render/gles2/renderer.c
@@ -10,6 +10,7 @@
#include <wlr/render/interface.h>
#include <wlr/render/wlr_renderer.h>
#include <wlr/types/wlr_matrix.h>
+#include <wlr/types/wlr_linux_dmabuf_v1.h>
#include <wlr/util/log.h>
#include "render/gles2.h"
@@ -364,6 +365,15 @@ static bool gles2_init_wl_display(struct wlr_renderer *wlr_renderer,
} else {
wlr_log(WLR_INFO, "EGL_WL_bind_wayland_display is not supported");
}
+
+ if (renderer->egl->exts.image_dmabuf_import_ext) {
+ if (wlr_linux_dmabuf_v1_create(wl_display, wlr_renderer) == NULL) {
+ return false;
+ }
+ } else {
+ wlr_log(WLR_INFO, "EGL_EXT_image_dma_buf_import is not supported");
+ }
+
return true;
}
diff --git a/render/wlr_renderer.c b/render/wlr_renderer.c
index b12f4b3a..9a126706 100644
--- a/render/wlr_renderer.c
+++ b/render/wlr_renderer.c
@@ -4,7 +4,6 @@
#include <wlr/render/gles2.h>
#include <wlr/render/interface.h>
#include <wlr/render/wlr_renderer.h>
-#include <wlr/types/wlr_linux_dmabuf_v1.h>
#include <wlr/types/wlr_matrix.h>
#include <wlr/util/log.h>
#include "util/signal.h"
@@ -182,12 +181,6 @@ bool wlr_renderer_init_wl_display(struct wlr_renderer *r,
}
}
- if (r->impl->texture_from_dmabuf) {
- if (wlr_linux_dmabuf_v1_create(wl_display, r) == NULL) {
- return false;
- }
- }
-
if (r->impl->init_wl_display) {
if (!r->impl->init_wl_display(r, wl_display)) {
return false;