I, too, "value your privacy" but unlike most I think it is priceless and fundamental. Privacy Policy

non-XOrg Wayland

2022-05 note: It's getting really rare for something to not work unless it's stuck to X11 or it's badly linking to OpenGL, consider that most things "Just Works", unless I described a problem and it's still there.

Warning: This is Wayland without any of libX11 or related (ie. libGL.so instead of libOpenGL.so) in the system, this also removes the XWayland compatibility layer as it's an xorg-server component.
You can find this kind of similar setup in embedded systems (ie. SailfishOS), as X11 makes no sense outside of keyboard+mouse setups, but I don't expect it until a bunch of years for regular desktops (say when X.Org will have died), I'm doing this right now to avoid having to rush to get rid of X11 with having to push the End-of-Life date way back it's upstream date (that happened with python-2 because it wasn't much prepared until the last year or two).
It's also the kind of setup that I expect soon in security-oriented systems because Wayland addresses a number of design flaws.

Testing is done on Gentoo Linux with USE="-X -XWayland" and -DEGL_NO_X11 into the C(XX)FLAGS(fixed via patching libglvnd). And launched into the Sway compositor.

Reminder:

static linking
(LDFLAGS="-static") some of the library is copied in the executable
shared linking
(LDFLAGS="-shared") system library like ld-linux-x86-64.so.2 loading the libraries before execution
dynamic linking loading
(dlopen()) loading a library during the execution

NoVidya reminder §

Do not ask Libre software developers for support of the NVidia proprietary driver, specially when they already refused, the driver being proprietary means that any bug found has to be worked around, which often isn't possible without compromising performance and stability.

Also, in terms of history:

Buildsystems §

I've yet to see one work correctly out of the box for this. The snippets in this section Abandons all copyrights if it could even begin to be copyrightable, as I can't assign to the Public Domain in France, they are distributed under any OSI/FSF-approuved license including CC-0, WTFPL, Unlicense and BSD-0.

CMake

  1. Replace find_package(OpenGL REQUIRED) to something like find_package(OpenGL COMPONENTS OpenGL REQUIRED). This allows to not error out when libGL.so isn't found but libOpenGL.so is.
  2. Replace OPENGL_gl_LIBRARY to OPENGL_opengl_LIBRARY. This will allow to use libOpenGL.so over libGL.so when possible.

Auto*hell

Either use AX_CHECK_GL from autoconf-archive with patch #10369: ax_check_gl.m4: Fallback to libOpenGL, or use something like the following:

AC_CHECK_HEADER(
	[GL/gl.h],
	AC_SEARCH_LIBS(glVertex3f, [opengl32 GL GL2 OpenGL], [test $ac_cv_search_glVertex3f = "none required" || GL_LIBS="$ac_cv_search_glVertex3f $GL_LIBS"], [AC_MSG_ERROR(*** OpenGL library not found on system!)]),
	[AC_MSG_ERROR(*** OpenGL headers not found on system!)]
)

meson

Nice fail of an otherwise nice mainly declarative buildsystem there… (meson#3679)

gl_dep = dependency('gl', required: false)
if not gl_dep.found()
  # libglvnd fallback for libX11-less wayland systems
  gl_dep = dependency('opengl')
endif

GL API coverage §

All of this is tested on a "AMD Ryzen 5 PRO 3500U w/ Radeon Vega Mobile Gfx" aka "AMD Radeon(TM) Vega 8 Graphics (RAVEN)" aka:

06:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Picasso (rev d2)
06:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Raven/Raven2/Fenghuang HDMI/DP Audio Controller
06:00.2 Encryption controller: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 10h-1fh) Platform Security Processor
06:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Raven USB 3.1
06:00.4 USB controller: Advanced Micro Devices, Inc. [AMD] Raven USB 3.1
06:00.5 Multimedia controller: Advanced Micro Devices, Inc. [AMD] Raven/Raven2/FireFlight/Renoir Audio Processor
06:00.6 Audio device: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 10h-1fh) HD Audio Controller

Librairies §

Entirely works out of the box

Needs more testing

Needs workarounds / Incomplete support

Doesn't Works

Web Browsers §

Games §

Entirely works out of the box

Light temporary workaround caused by dependency

Just needs SDL-1.2 compatibility library §

Needs workarounds / Incomplete support

Almost

Doesn't works

Multimedia §

Emulator / Compat-layer §

Misc §

See Also

Own Gentoo Pull Requests