diff --git a/src/gallium/drivers/radeonsi/si_get.c b/src/gallium/drivers/radeonsi/si_get.c index a194b28cb80..e32cc9e3e8c 100644 --- a/src/gallium/drivers/radeonsi/si_get.c +++ b/src/gallium/drivers/radeonsi/si_get.c @@ -16,6 +16,7 @@ #include "util/u_video.h" #include "vl/vl_video_buffer.h" #include +#include "drm-uapi/drm.h" /* The capabilities reported by the kernel has priority over the existing logic in si_get_video_param */ @@ -1148,6 +1149,11 @@ void si_init_screen_caps(struct si_screen *sscreen) caps->cl_gl_sharing = true; caps->call_finalize_nir_in_linker = true; + /* Fixup dmabuf caps for the virtio + vpipe case (when fd=-1, u_init_pipe_screen_caps + * fails to set this capability). */ + if (sscreen->info.is_virtio) + caps->dmabuf |= DRM_PRIME_CAP_EXPORT | DRM_PRIME_CAP_IMPORT; + caps->fbfetch = 1; /* Tahiti and Verde only: reduction mode is unsupported due to a bug diff --git a/src/gallium/drivers/radeonsi/si_pipe.c b/src/gallium/drivers/radeonsi/si_pipe.c index 374c553077d..e324af79b9f 100644 --- a/src/gallium/drivers/radeonsi/si_pipe.c +++ b/src/gallium/drivers/radeonsi/si_pipe.c @@ -1664,6 +1664,8 @@ struct pipe_screen *radeonsi_screen_create(int fd, const struct pipe_screen_conf #ifdef HAVE_AMDGPU_VIRTIO if (strcmp(version->name, "virtio_gpu") == 0) { rw = amdgpu_winsys_create(fd, config, radeonsi_screen_create_impl, true); + } else if (debug_get_bool_option("AMD_FORCE_VPIPE", false)) { + rw = amdgpu_winsys_create(-1, config, radeonsi_screen_create_impl, true); } else #endif {