egl/surfaceless: Select kopper based on dri2_dpy->kopper

This also cleanly separates kopper and swrast extensions

Reviewed-by: Adam Jackson <ajax@redhat.com>
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36014>
This commit is contained in:
Faith Ekstrand 2025-07-08 17:34:09 -04:00 committed by Marge Bot
parent e9a7585700
commit 67ae5ba7b2

View file

@ -208,14 +208,17 @@ static const __DRIimageLoaderExtension image_loader_extension = {
static const __DRIextension *image_loader_extensions[] = {
&image_loader_extension.base, &image_lookup_extension.base,
&background_callable_extension.base,
&kopper_pbuffer_loader_extension.base, NULL,
&background_callable_extension.base, NULL,
};
static const __DRIextension *swrast_loader_extensions[] = {
&swrast_pbuffer_loader_extension.base, &image_loader_extension.base,
&image_lookup_extension.base,
&kopper_pbuffer_loader_extension.base, NULL,
&image_lookup_extension.base, NULL,
};
static const __DRIextension *kopper_loader_extensions[] = {
&kopper_pbuffer_loader_extension.base, &image_lookup_extension.base,
&image_lookup_extension.base, NULL,
};
static bool
@ -286,7 +289,9 @@ surfaceless_probe_device(_EGLDisplay *disp, bool swrast, bool zink)
if (dri2_dpy->driver_name) {
dri2_detect_swrast(disp);
if (swrast || zink)
if (dri2_dpy->kopper)
dri2_dpy->loader_extensions = kopper_loader_extensions;
else if (swrast)
dri2_dpy->loader_extensions = swrast_loader_extensions;
else
dri2_dpy->loader_extensions = image_loader_extensions;
@ -356,7 +361,10 @@ surfaceless_probe_device_sw(_EGLDisplay *disp)
dri2_detect_swrast(disp);
dri2_dpy->loader_extensions = swrast_loader_extensions;
if (dri2_dpy->kopper)
dri2_dpy->loader_extensions = kopper_loader_extensions;
else
dri2_dpy->loader_extensions = swrast_loader_extensions;
dri2_dpy->fd_display_gpu = dri2_dpy->fd_render_gpu;