From d26d2603cc0290dc06e977d5b9aa483ca4d4134b Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 29 Jul 2024 13:23:59 -0400 Subject: [PATCH] gbm: check for dmabuf import on device creation Reviewed-by: Adam Jackson Part-of: --- src/gbm/backends/dri/gbm_dri.c | 9 +++++++++ src/gbm/backends/dri/gbm_driint.h | 1 + src/gbm/meson.build | 2 +- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/gbm/backends/dri/gbm_dri.c b/src/gbm/backends/dri/gbm_dri.c index 4f041552f86..73428fece9a 100644 --- a/src/gbm/backends/dri/gbm_dri.c +++ b/src/gbm/backends/dri/gbm_dri.c @@ -50,6 +50,8 @@ #include "util/u_debug.h" #include "util/macros.h" #include "dri_util.h" +#include "pipe/p_screen.h" +#include "dri_screen.h" /* For importing wl_buffer */ #if HAVE_WAYLAND_PLATFORM @@ -1236,6 +1238,13 @@ dri_device_create(int fd, uint32_t gbm_backend_version) if (ret) goto err_dri; + struct dri_screen *screen = dri_screen(dri->screen); + struct pipe_screen *pscreen = screen->base.screen; +#ifdef HAVE_DRI3 + if (pscreen->get_param(pscreen, PIPE_CAP_DMABUF) & DRM_PRIME_CAP_IMPORT) + dri->has_dmabuf_import = true; +#endif + return &dri->base; err_dri: diff --git a/src/gbm/backends/dri/gbm_driint.h b/src/gbm/backends/dri/gbm_driint.h index fba57285b80..a804cdb55af 100644 --- a/src/gbm/backends/dri/gbm_driint.h +++ b/src/gbm/backends/dri/gbm_driint.h @@ -52,6 +52,7 @@ struct gbm_dri_device { char *driver_name; /* Name of the DRI module, without the _dri suffix */ bool software; /* A software driver was loaded */ bool swrast; /* this is swrast */ + bool has_dmabuf_import; __DRIscreen *screen; __DRIcontext *context; diff --git a/src/gbm/meson.build b/src/gbm/meson.build index 22508f6f225..5887887219b 100644 --- a/src/gbm/meson.build +++ b/src/gbm/meson.build @@ -16,7 +16,7 @@ args_gbm = [ ] deps_gbm = [] incs_gbm = [ - include_directories('main'), inc_include, inc_src, inc_loader, inc_gallium, inc_st_dri + include_directories('main'), inc_include, inc_src, inc_loader, inc_gallium, inc_st_dri, inc_gallium_aux ] # TODO: fix includes to delete this