From af6d3fdf6ed64b581d92382a42d3f0336d7e9808 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 1 Aug 2024 08:35:13 -0400 Subject: [PATCH] dri: pass has_multibuffers through from the loader MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Marek Olšák Part-of: --- src/egl/drivers/dri2/egl_dri2.c | 4 ++-- src/gallium/frontends/dri/dri_util.c | 3 ++- src/gallium/frontends/dri/dri_util.h | 3 ++- src/gbm/backends/dri/gbm_dri.c | 2 +- src/glx/dri2_glx.c | 3 ++- src/glx/dri3_glx.c | 6 ++++-- src/glx/drisw_glx.c | 3 ++- 7 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index 1c35d5c0997..45937214c53 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -799,7 +799,7 @@ dri2_create_screen(_EGLDisplay *disp) if (strcmp(dri2_dpy->driver_name, driver_name_display_gpu) == 0) { dri2_dpy->dri_screen_display_gpu = driCreateNewScreen3( 0, dri2_dpy->fd_display_gpu, dri2_dpy->loader_extensions, - type, &dri2_dpy->driver_configs, false, disp); + type, &dri2_dpy->driver_configs, false, dri2_dpy->multibuffers_available, disp); } free(driver_name_display_gpu); } @@ -814,7 +814,7 @@ dri2_create_screen(_EGLDisplay *disp) } dri2_dpy->dri_screen_render_gpu = driCreateNewScreen3( 0, screen_fd, dri2_dpy->loader_extensions, type, - &dri2_dpy->driver_configs, false, disp); + &dri2_dpy->driver_configs, false, dri2_dpy->multibuffers_available, disp); if (dri2_dpy->dri_screen_render_gpu == NULL) { _eglLog(_EGL_WARNING, "egl: failed to create dri2 screen"); diff --git a/src/gallium/frontends/dri/dri_util.c b/src/gallium/frontends/dri/dri_util.c index 140e5fa65d5..6d32e44b32d 100644 --- a/src/gallium/frontends/dri/dri_util.c +++ b/src/gallium/frontends/dri/dri_util.c @@ -102,7 +102,8 @@ __DRIscreen * driCreateNewScreen3(int scrn, int fd, const __DRIextension **loader_extensions, enum dri_screen_type type, - const __DRIconfig ***driver_configs, bool driver_name_is_inferred, void *data) + const __DRIconfig ***driver_configs, bool driver_name_is_inferred, + bool has_multibuffer, void *data) { struct dri_screen *screen; diff --git a/src/gallium/frontends/dri/dri_util.h b/src/gallium/frontends/dri/dri_util.h index 5009a6e5c9a..25fb412632c 100644 --- a/src/gallium/frontends/dri/dri_util.h +++ b/src/gallium/frontends/dri/dri_util.h @@ -107,7 +107,8 @@ PUBLIC __DRIscreen * driCreateNewScreen3(int scrn, int fd, const __DRIextension **loader_extensions, enum dri_screen_type type, - const __DRIconfig ***driver_configs, bool driver_name_is_inferred, void *data); + const __DRIconfig ***driver_configs, bool driver_name_is_inferred, + bool has_multibuffer, void *data); PUBLIC __DRIcontext * driCreateContextAttribs(__DRIscreen *psp, int api, const __DRIconfig *config, diff --git a/src/gbm/backends/dri/gbm_dri.c b/src/gbm/backends/dri/gbm_dri.c index eceace61a5e..2411868901e 100644 --- a/src/gbm/backends/dri/gbm_dri.c +++ b/src/gbm/backends/dri/gbm_dri.c @@ -255,7 +255,7 @@ dri_screen_create_for_driver(struct gbm_dri_device *dri, char *driver_name, bool dri->screen = driCreateNewScreen3(0, swrast ? -1 : dri->base.v0.fd, dri->loader_extensions, type, - &dri->driver_configs, driver_name_is_inferred, dri); + &dri->driver_configs, driver_name_is_inferred, true, dri); if (dri->screen == NULL) goto fail; diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c index 174f552050e..20cfff77e5c 100644 --- a/src/glx/dri2_glx.c +++ b/src/glx/dri2_glx.c @@ -898,7 +898,8 @@ dri2CreateScreen(int screen, struct glx_display * priv, bool driver_name_is_infe psc->base.driverName = driverName; psc->driScreen = driCreateNewScreen3(screen, psc->fd, loader_extensions, DRI_SCREEN_DRI3, - &driver_configs, driver_name_is_inferred, psc); + &driver_configs, driver_name_is_inferred, + priv->has_multibuffer, psc); if (psc->driScreen == NULL) { ErrorMessageF("glx: failed to create dri2 screen\n"); diff --git a/src/glx/dri3_glx.c b/src/glx/dri3_glx.c index 7457d8c83b9..66890f6de7f 100644 --- a/src/glx/dri3_glx.c +++ b/src/glx/dri3_glx.c @@ -748,7 +748,8 @@ dri3_create_screen(int screen, struct glx_display * priv, bool driver_name_is_in psc->driScreenDisplayGPU = driCreateNewScreen3(screen, psc->fd_display_gpu, loader_extensions, DRI_SCREEN_DRI3, - &driver_configs, driver_name_is_inferred, psc); + &driver_configs, driver_name_is_inferred, + priv->has_multibuffer, psc); } free(driverNameDisplayGPU); @@ -758,7 +759,8 @@ dri3_create_screen(int screen, struct glx_display * priv, bool driver_name_is_in psc->driScreenRenderGPU = driCreateNewScreen3(screen, psc->fd_render_gpu, loader_extensions, DRI_SCREEN_DRI3, - &driver_configs, driver_name_is_inferred, psc); + &driver_configs, driver_name_is_inferred, + priv->has_multibuffer, psc); if (psc->driScreenRenderGPU == NULL) { ErrorMessageF("glx: failed to create dri3 screen\n"); diff --git a/src/glx/drisw_glx.c b/src/glx/drisw_glx.c index 207931633e0..e42dc19256f 100644 --- a/src/glx/drisw_glx.c +++ b/src/glx/drisw_glx.c @@ -863,7 +863,8 @@ driswCreateScreen(int screen, struct glx_display *priv, enum glx_driver glx_driv psc->driScreen = driCreateNewScreen3(screen, -1, loader_extensions_local, glx_driver ? DRI_SCREEN_KOPPER : DRI_SCREEN_SWRAST, - &driver_configs, driver_name_is_inferred, psc); + &driver_configs, driver_name_is_inferred, + priv->has_multibuffer, psc); if (psc->driScreen == NULL) { if (!glx_driver || !driver_name_is_inferred) ErrorMessageF("glx: failed to create drisw screen\n");