From e128e6c08dc0a735b1a8c6cc61097eaf0f61fb83 Mon Sep 17 00:00:00 2001 From: Simon Zeni Date: Wed, 13 Jan 2021 22:49:07 -0500 Subject: render: drop egl parameters from wlr_renderer_autocreate --- render/egl.c | 5 +++++ render/wlr_renderer.c | 24 +++++++++++++++++++++--- 2 files changed, 26 insertions(+), 3 deletions(-) (limited to 'render') diff --git a/render/egl.c b/render/egl.c index 1c986e47..9fa1068f 100644 --- a/render/egl.c +++ b/render/egl.c @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include @@ -362,6 +363,10 @@ void wlr_egl_destroy(struct wlr_egl *egl) { return; } + if (egl->gbm_device) { + gbm_device_destroy(egl->gbm_device); + } + wlr_drm_format_set_finish(&egl->dmabuf_render_formats); wlr_drm_format_set_finish(&egl->dmabuf_texture_formats); diff --git a/render/wlr_renderer.c b/render/wlr_renderer.c index 377b795e..3c757430 100644 --- a/render/wlr_renderer.c +++ b/render/wlr_renderer.c @@ -1,6 +1,8 @@ #include #include #include +#include +#include #include #include #include @@ -8,6 +10,7 @@ #include #include "util/signal.h" #include "render/wlr_renderer.h" +#include "backend/backend.h" void wlr_renderer_init(struct wlr_renderer *renderer, const struct wlr_renderer_impl *impl) { @@ -247,14 +250,29 @@ bool wlr_renderer_init_wl_display(struct wlr_renderer *r, return true; } -struct wlr_renderer *wlr_renderer_autocreate(EGLenum platform, - void *remote_display) { - struct wlr_egl *egl = wlr_egl_create(platform, remote_display, NULL); +struct wlr_renderer *wlr_renderer_autocreate(struct wlr_backend *backend) { + int fd = backend_get_drm_fd(backend); + if (fd < 0) { + wlr_log(WLR_ERROR, "Failed to get DRM FD from backend"); + return NULL; + } + + struct gbm_device *gbm_device = gbm_create_device(fd); + if (!gbm_device) { + wlr_log(WLR_ERROR, "Failed to create GBM device"); + return NULL; + } + + struct wlr_egl *egl = wlr_egl_create(EGL_PLATFORM_GBM_KHR, gbm_device, + NULL); if (egl == NULL) { wlr_log(WLR_ERROR, "Could not initialize EGL"); + gbm_device_destroy(gbm_device); return NULL; } + egl->gbm_device = gbm_device; + struct wlr_renderer *renderer = wlr_gles2_renderer_create(egl); if (!renderer) { wlr_log(WLR_ERROR, "Failed to create GLES2 renderer"); -- cgit v1.2.3