From ab08b79ef7e445f7064be67e41244b611f66e03f Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 29 Jul 2024 13:33:36 -0400 Subject: [PATCH] gbm: use driver check for dmabuf export Reviewed-by: Adam Jackson Part-of: --- src/gbm/backends/dri/gbm_dri.c | 4 +++- src/gbm/backends/dri/gbm_driint.h | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/gbm/backends/dri/gbm_dri.c b/src/gbm/backends/dri/gbm_dri.c index aa37f16d15b..56ed9a02860 100644 --- a/src/gbm/backends/dri/gbm_dri.c +++ b/src/gbm/backends/dri/gbm_dri.c @@ -898,7 +898,7 @@ gbm_dri_bo_create(struct gbm_device *gbm, format = gbm_core.v0.format_canonicalize(format); - if (usage & GBM_BO_USE_WRITE || dri->image == NULL) + if (usage & GBM_BO_USE_WRITE || !dri->has_dmabuf_export) return create_dumb(gbm, width, height, format, usage); bo = calloc(1, sizeof *bo); @@ -1243,6 +1243,8 @@ dri_device_create(int fd, uint32_t gbm_backend_version) #ifdef HAVE_DRI3 if (pscreen->get_param(pscreen, PIPE_CAP_DMABUF) & DRM_PRIME_CAP_IMPORT) dri->has_dmabuf_import = true; + if (pscreen->get_param(pscreen, PIPE_CAP_DMABUF) & DRM_PRIME_CAP_EXPORT) + dri->has_dmabuf_export = true; #endif dri->has_compression_modifiers = pscreen->query_compression_rates && pscreen->query_compression_modifiers; diff --git a/src/gbm/backends/dri/gbm_driint.h b/src/gbm/backends/dri/gbm_driint.h index 0897df79dff..14b04fe76f7 100644 --- a/src/gbm/backends/dri/gbm_driint.h +++ b/src/gbm/backends/dri/gbm_driint.h @@ -53,6 +53,7 @@ struct gbm_dri_device { bool software; /* A software driver was loaded */ bool swrast; /* this is swrast */ bool has_dmabuf_import; + bool has_dmabuf_export; bool has_compression_modifiers; __DRIscreen *screen;