dri: pass has_multibuffers through from the loader

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30619>
This commit is contained in:
Mike Blumenkrantz 2024-08-01 08:35:13 -04:00 committed by Marge Bot
parent 576015f735
commit af6d3fdf6e
7 changed files with 15 additions and 9 deletions

View file

@ -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");

View file

@ -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;

View file

@ -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,

View file

@ -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;

View file

@ -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");

View file

@ -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");

View file

@ -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");