diff --git a/src/gallium/frontends/dri/dri_screen.c b/src/gallium/frontends/dri/dri_screen.c index 24d9096c025..cb404872f3e 100644 --- a/src/gallium/frontends/dri/dri_screen.c +++ b/src/gallium/frontends/dri/dri_screen.c @@ -618,7 +618,8 @@ dri_set_background_context(struct st_context *st, const __DRIconfig ** dri_init_screen(struct dri_screen *screen, - struct pipe_screen *pscreen) + struct pipe_screen *pscreen, + bool has_multibuffer) { screen->base.screen = pscreen; screen->base.get_egl_image = dri_get_egl_image; @@ -650,11 +651,13 @@ dri_init_screen(struct dri_screen *screen, #ifdef HAVE_LIBDRM - int dmabuf_caps = pscreen->get_param(pscreen, PIPE_CAP_DMABUF); - if (dmabuf_caps & DRM_PRIME_CAP_IMPORT) - screen->dmabuf_import = true; - if (screen->dmabuf_import && dmabuf_caps & DRM_PRIME_CAP_EXPORT) - screen->has_dmabuf = true; + if (has_multibuffer) { + int dmabuf_caps = pscreen->get_param(pscreen, PIPE_CAP_DMABUF); + if (dmabuf_caps & DRM_PRIME_CAP_IMPORT) + screen->dmabuf_import = true; + if (screen->dmabuf_import && dmabuf_caps & DRM_PRIME_CAP_EXPORT) + screen->has_dmabuf = true; + } #endif return dri_fill_in_modes(screen); diff --git a/src/gallium/frontends/dri/dri_screen.h b/src/gallium/frontends/dri/dri_screen.h index 26ad0ca1baf..74a1c626322 100644 --- a/src/gallium/frontends/dri/dri_screen.h +++ b/src/gallium/frontends/dri/dri_screen.h @@ -207,7 +207,8 @@ dri_init_options(struct dri_screen *screen); const __DRIconfig ** dri_init_screen(struct dri_screen *screen, - struct pipe_screen *pscreen); + struct pipe_screen *pscreen, + bool has_multibuffer); void dri_release_screen(struct dri_screen * screen); diff --git a/src/gallium/frontends/dri/dri_util.c b/src/gallium/frontends/dri/dri_util.c index 9dbe6794068..28eeb8d5d73 100644 --- a/src/gallium/frontends/dri/dri_util.c +++ b/src/gallium/frontends/dri/dri_util.c @@ -153,7 +153,7 @@ driCreateNewScreen3(int scrn, int fd, dri_destroy_screen(screen); return NULL; } - *driver_configs = dri_init_screen(screen, pscreen); + *driver_configs = dri_init_screen(screen, pscreen, has_multibuffer); if (*driver_configs == NULL) { dri_destroy_screen(screen); return NULL;