Search code examples
ubuntuopenglglxwayland

How come GLX-based applications can be run on Wayland on Ubuntu?


So GLX is the graphics context creation and management system for OpenGL on X11. But by design, Wayland is not X11-compatible and implements EGL for OpenGL context management rather than GLX. So how is it that on Wayland-based sessions on Ubuntu 17.10 I can still run applications that create their contexts using GLX (e.g. glxinfo and glxgears)? Is there some transparent GLX emulation going on?

Also (as this is probably related to the the question above) how come that when run on Wayland, these GLX-based application cannot use MSAA (e.g. glxinfo does not return any context types that support MSAA) - at least on the Intel GPUs that I tested them on - while MSAA works fine for the same applications, GPUs and Ubuntu version when running on X.org instead of Wayland?


Solution

  • So based on the link @genpfault provided:

    • XWayland is a part of XOrg that's providing an X server on top of Wayland. Any application that's linked against X11 libs and running under Wayland will automatically use XWayland as its backend. So the GLX part of XWayland is the mechanism that allows GLX-based OpenGL applications to run on Wayland.
    • Not being able to use MSAA in GLX-based applications seems to be a known bug of XWayland, at least for Intel and AMD GPUs (cf. https://bugs.freedesktop.org/show_bug.cgi?id=98272 ). But I couldn't find any additional information on the matter.