From 3294cad34159bd5317e3dfb0cb4e0ba5caca9f77 Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Fri, 4 Jul 2025 15:50:10 -0400 Subject: [PATCH] egl: Rename dri2_detect_swrast() and also detect kopper This is exactly the same kopper check we had before, it's just moved to the detect helper so we can do it dynamically in the future. Reviewed-by: Adam Jackson Reviewed-By: Mike Blumenkrantz Part-of: --- src/egl/drivers/dri2/egl_dri2.c | 4 ++-- src/egl/drivers/dri2/egl_dri2.h | 2 +- src/egl/drivers/dri2/platform_android.c | 4 ++-- src/egl/drivers/dri2/platform_device.c | 4 ++-- src/egl/drivers/dri2/platform_drm.c | 2 +- src/egl/drivers/dri2/platform_surfaceless.c | 4 ++-- src/egl/drivers/dri2/platform_wayland.c | 4 ++-- src/egl/drivers/dri2/platform_x11.c | 3 ++- 8 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index 7efe0e807e3..31155b1a20c 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -584,10 +584,11 @@ const __DRIimageLookupExtension image_lookup_extension = { }; void -dri2_detect_swrast(_EGLDisplay *disp) +dri2_detect_swrast_kopper(_EGLDisplay *disp) { struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp); + dri2_dpy->kopper = disp->Options.Zink && !debug_get_bool_option("LIBGL_KOPPER_DISABLE", false); dri2_dpy->swrast = (disp->Options.ForceSoftware && !dri2_dpy->kopper && strcmp(dri2_dpy->driver_name, "vmwgfx")) || !dri2_dpy->driver_name || strstr(dri2_dpy->driver_name, "swrast"); dri2_dpy->swrast_not_kms = dri2_dpy->swrast && (!dri2_dpy->driver_name || strcmp(dri2_dpy->driver_name, "kms_swrast")); @@ -1043,7 +1044,6 @@ dri2_display_create(_EGLDisplay *disp) dri2_dpy->fd_render_gpu = -1; dri2_dpy->fd_display_gpu = -1; dri2_dpy->multibuffers_available = true; - dri2_dpy->kopper = disp->Options.Zink && !debug_get_bool_option("LIBGL_KOPPER_DISABLE", false); disp->DriverData = (void *)dri2_dpy; return dri2_dpy; diff --git a/src/egl/drivers/dri2/egl_dri2.h b/src/egl/drivers/dri2/egl_dri2.h index abf03b8b51e..2436ffb872b 100644 --- a/src/egl/drivers/dri2/egl_dri2.h +++ b/src/egl/drivers/dri2/egl_dri2.h @@ -441,7 +441,7 @@ extern const __DRIswrastLoaderExtension swrast_pbuffer_loader_extension; extern const __DRIkopperLoaderExtension kopper_pbuffer_loader_extension; void -dri2_detect_swrast(_EGLDisplay *disp); +dri2_detect_swrast_kopper(_EGLDisplay *disp); /* Helper for platforms not using dri2_create_screen */ void diff --git a/src/egl/drivers/dri2/platform_android.c b/src/egl/drivers/dri2/platform_android.c index 31127918bc0..7db9f6bccb6 100644 --- a/src/egl/drivers/dri2/platform_android.c +++ b/src/egl/drivers/dri2/platform_android.c @@ -1041,7 +1041,7 @@ droid_load_driver(_EGLDisplay *disp, bool swrast) } dri2_dpy->loader_extensions = droid_image_loader_extensions; - dri2_detect_swrast(disp); + dri2_detect_swrast_kopper(disp); return true; @@ -1195,7 +1195,7 @@ dri2_initialize_android(_EGLDisplay *disp) dri2_dpy->loader_extensions = droid_swrast_image_loader_extensions; dri2_dpy->fd_render_gpu = -1; dri2_dpy->pure_swrast = true; - dri2_detect_swrast(disp); + dri2_detect_swrast_kopper(disp); if (!dri2_create_screen(disp)) { err = "DRI2: Failed to create swrast screen"; diff --git a/src/egl/drivers/dri2/platform_device.c b/src/egl/drivers/dri2/platform_device.c index 142e3caf234..e6ec4d5ee46 100644 --- a/src/egl/drivers/dri2/platform_device.c +++ b/src/egl/drivers/dri2/platform_device.c @@ -293,7 +293,7 @@ device_probe_device(_EGLDisplay *disp) } } - dri2_detect_swrast(disp); + dri2_detect_swrast_kopper(disp); dri2_dpy->loader_extensions = image_loader_extensions; return true; @@ -316,7 +316,7 @@ device_probe_device_sw(_EGLDisplay *disp) return false; /* HACK: should be driver_swrast_null */ - dri2_detect_swrast(disp); + dri2_detect_swrast_kopper(disp); dri2_dpy->loader_extensions = swrast_loader_extensions; return true; diff --git a/src/egl/drivers/dri2/platform_drm.c b/src/egl/drivers/dri2/platform_drm.c index 8cbd7219796..11ff7a73037 100644 --- a/src/egl/drivers/dri2/platform_drm.c +++ b/src/egl/drivers/dri2/platform_drm.c @@ -632,7 +632,7 @@ dri2_initialize_drm(_EGLDisplay *disp) dri2_dpy->driver_name = strdup(dri2_dpy->gbm_dri->driver_name); - dri2_detect_swrast(disp); + dri2_detect_swrast_kopper(disp); dri2_dpy->dri_screen_render_gpu = dri2_dpy->gbm_dri->screen; dri2_dpy->driver_configs = dri2_dpy->gbm_dri->driver_configs; diff --git a/src/egl/drivers/dri2/platform_surfaceless.c b/src/egl/drivers/dri2/platform_surfaceless.c index 9df753f1c15..87b6888ee24 100644 --- a/src/egl/drivers/dri2/platform_surfaceless.c +++ b/src/egl/drivers/dri2/platform_surfaceless.c @@ -288,7 +288,7 @@ surfaceless_probe_device(_EGLDisplay *disp, bool swrast, bool zink) } if (dri2_dpy->driver_name) { - dri2_detect_swrast(disp); + dri2_detect_swrast_kopper(disp); if (dri2_dpy->kopper) dri2_dpy->loader_extensions = kopper_loader_extensions; else if (swrast) @@ -359,7 +359,7 @@ surfaceless_probe_device_sw(_EGLDisplay *disp) if (!dri2_dpy->driver_name) return false; - dri2_detect_swrast(disp); + dri2_detect_swrast_kopper(disp); if (dri2_dpy->kopper) dri2_dpy->loader_extensions = kopper_loader_extensions; diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c index 8b1b79d526c..e4b4b7140ac 100644 --- a/src/egl/drivers/dri2/platform_wayland.c +++ b/src/egl/drivers/dri2/platform_wayland.c @@ -2620,7 +2620,7 @@ dri2_initialize_wayland_drm(_EGLDisplay *disp) goto cleanup; } - dri2_detect_swrast(disp); + dri2_detect_swrast_kopper(disp); dri2_dpy->loader_extensions = dri2_dpy->kopper ? kopper_loader_extensions : dri2_loader_extensions; @@ -3126,7 +3126,7 @@ dri2_initialize_wayland_swrast(_EGLDisplay *disp) goto cleanup; dri2_dpy->driver_name = strdup(disp->Options.Zink ? "zink" : "swrast"); - dri2_detect_swrast(disp); + dri2_detect_swrast_kopper(disp); dri2_dpy->loader_extensions = dri2_dpy->kopper ? kopper_loader_extensions : swrast_loader_extensions; diff --git a/src/egl/drivers/dri2/platform_x11.c b/src/egl/drivers/dri2/platform_x11.c index 47bbbdeea01..18d2ba6a152 100644 --- a/src/egl/drivers/dri2/platform_x11.c +++ b/src/egl/drivers/dri2/platform_x11.c @@ -1313,7 +1313,8 @@ dri2_initialize_x11(_EGLDisplay *disp) return EGL_FALSE; } #endif - dri2_detect_swrast(disp); + + dri2_detect_swrast_kopper(disp); if (dri2_dpy->kopper) return dri2_initialize_x11_kopper(disp, force_zink);