meson: allow DRI on darwin to enable Zink + EGL builds
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run

Mesa already sets `with_dri_platform = 'apple'` when the host system is
darwin (line 412), but the gating on `with_dri` itself only enables DRI
when `system_has_kms_drm` is true (or for the kgsl/Zink combo). Darwin
has no KMS/DRM, so DRI ends up disabled and Zink targeting EGL surfaceless
cannot be built.

Extend the existing `kgsl + zink` exception to also cover darwin: enable
DRI on darwin only when zink is the gallium driver in use. This factors
the exception under the `with_gallium_zink` umbrella, which leaves the
old appledri X11 / GLX path completely untouched on darwin builds that
do not enable zink.

Validated on macOS 15.2 / Apple Silicon with Mesa 26.x targeting Zink
over the KosmicKrisp Vulkan ICD: OpenGL 4.6 surfaceless contexts work
end to end.

Suggested-by: QwertyChouskie
Signed-off-by: Louis Montagne <louis@askem.eu>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41359>
This commit is contained in:
Louis Montagne 2026-05-05 12:29:45 +02:00 committed by Marge Bot
parent d15e1fd108
commit 04055256ec

View file

@ -355,7 +355,7 @@ with_vdrm = [
].contains(true)
with_dri = false
if with_gallium and (system_has_kms_drm or (freedreno_kmds.contains('kgsl') and with_gallium_zink))
if with_gallium and (system_has_kms_drm or (with_gallium_zink and (freedreno_kmds.contains('kgsl') or host_machine.system() == 'darwin')))
_glx = get_option('glx')
_egl = get_option('egl')
if _glx == 'dri' or _egl.enabled() or (_glx == 'disabled' and _egl.allowed())