From 7d0a631f20dc71efb1cc7adb57b2d162523fcd37 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 28 Aug 2024 09:50:52 -0400 Subject: [PATCH] llvmpipe: export dmabuf caps for kms_swrast kms_swrast can import and export dumb buffers, so this cap must be exported in order for frontends to correctly detect support Reviewed-by: Lucas Fryzek Part-of: --- src/gallium/drivers/llvmpipe/lp_screen.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/gallium/drivers/llvmpipe/lp_screen.c b/src/gallium/drivers/llvmpipe/lp_screen.c index bd2534983cf..9a745b3ed50 100644 --- a/src/gallium/drivers/llvmpipe/lp_screen.c +++ b/src/gallium/drivers/llvmpipe/lp_screen.c @@ -123,17 +123,23 @@ llvmpipe_get_name(struct pipe_screen *screen) static int llvmpipe_get_param(struct pipe_screen *screen, enum pipe_cap param) { -#if defined(HAVE_LIBDRM) && defined(HAVE_LINUX_UDMABUF_H) +#ifdef HAVE_LIBDRM struct llvmpipe_screen *lscreen = llvmpipe_screen(screen); #endif - switch (param) { -#if defined(HAVE_LIBDRM) && defined(HAVE_LINUX_UDMABUF_H) case PIPE_CAP_DMABUF: +#ifdef HAVE_LIBDRM + if (lscreen->winsys->get_fd) + return DRM_PRIME_CAP_IMPORT | DRM_PRIME_CAP_EXPORT; +#ifdef HAVE_LINUX_UDMABUF_H if (lscreen->udmabuf_fd != -1) return DRM_PRIME_CAP_IMPORT | DRM_PRIME_CAP_EXPORT; else return DRM_PRIME_CAP_IMPORT; +#endif +#endif + return 0; +#if defined(HAVE_LIBDRM) && defined(HAVE_LINUX_UDMABUF_H) case PIPE_CAP_NATIVE_FENCE_FD: return lscreen->dummy_sync_fd != -1; #endif