mesa on darwin/x11
Jeremy Sequoia <[email protected]> Tue, 23 Jun 2026 22:54:52 -1000
| Newsgroups | gmane.comp.video.mesa3d.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi Duncan,
I haven't been paying much attention to mesa or X11 for a few years. =
I'm just now looking back since I have some free cycles on vacation. I =
see you did some work in =
https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28205 to get =
darwin/x11 to use gallium, but the way we go about it with macro =
definitions is quite confusing to me since we end up having macros that =
seem not well defined any more
Previously, GLX_USE_APPLEGL=3D1 meant "build a hacky libGL from the mesa =
sources in a mostly nonstandard way since we never got around to merging =
things together to make the implementation selectable at runtime" and =
GLX_USE_APPLEGL=3D0 meant "build a modern gallium libGL that you can use =
for swrast or IGLX but that doesn't work with hardware acceleration =
because we never got around to moving glx/apple into the modern era. =
What does GLX_USE_APPLEGL mean now?
With the introduction of GLX_USE_APPLEGL=3D1 GLX_USE_APPLE=3D1, it seems =
that we're getting gallium but with some slight differences from the =
GLX_USE_APPLEGL=3D0 case.
Relatedly, is GLX_USE_APPLEGL=3D0 GLX_USE_APPLE=3D1 expected to be a =
valid configuration? If so, what does it mean? It looks like the only =
difference between it and GLX_USE_APPLEGL=3D0 GLX_USE_APPLE=3D0 is at =
src/glx/glxext.c:1029:
#if !defined(GLX_USE_APPLE)
if (!dpyPriv->has_multibuffer && glx_accel && =
!debug_get_bool_option("LIBGL_KOPPER_DRI2", false)) {
if (glx_driver & GLX_DRIVER_ZINK_YES) {
CriticalErrorMessageF("DRI3 not available\n");
goto init_fail;
}
glx_driver &=3D ~GLX_DRIVER_ZINK_INFER;
}
#endif
which seems maybe not intentional ... ? Why would we want that for =
GLX_USE_APPLEGL=3D1 GLX_USE_APPLE=3D1 but not GLX_USE_APPLEGL=3D1 =
GLX_USE_APPLE=3D0?
So I'm confused as to why we need two variables here. I'd like to get =
us down to 0, whereby the OpenGL.framework backend is selectable at =
runtime rather than build time, and these changes you've made seem to =
make the build space a bit more complicated than they were before.
Can you walk me through the design decisions here? I'd be happy to chat =
over Webex / Zoom / whatever if that would be easier.
Thanks,
Jeremy