Right, so it turns out I'm a moron (big surprise), and the OpenGL case wasn't working as intended because I forgot we never fixed the lack of EGL_EXT_swap_control_tear: https://github.com/FNA-XNA/FNA3D/commit/fddf4e0607db1f8ae0a46c1f8df9371809a9a066 So OpenGL and Vulkan behave the same, for the same reason. It turns out this is actually #4335 in disguise. This patch is good, it's just that Wayland screwed up _big_ time with their vsync implementation.