FUTEX2 Spun Up A Fifth Time For This Linux Interface To Help Windows Games
FUTEX2 continues to be worked on by Collabora as part of their work with Valve on enhancing Linux gaming support. With FUTEX2 the work is driven about enhancing the support for Windows games running on Linux with the likes of Steam Play.
FUTEX2 has been in the works for more than one year now with an aim of improving the existing FUTEX system call. The main FUTEX2 design objective is the ability to wait on multiple futexes to better match the behavior of Windows. This interface can be used by Proton that powers Steam Play to implement Windows' WaitForMultipleObjects interface in a performant manner. While designed with Proton / Windows games in mind, native Linux game engines stand to potentially benefit as well.
Besides FUTEX2 allowing to wait on multiple futexes, the new interface also allows variable-sized futexes (8, 16, 32, and 64-bit futexes) in a performant manner as well as providing NUMA-awareness.
The new "v5" patches to FUTEX2 make for greater re-use of existing futex code and also cleaned up the cover letter summing up the changes.
These latest FUTEX2 patches can be found on the kernel mailing list. It's too late for the 5.14 cycle but perhaps by the time 5.15 rolls around later this year it will be deemed finally ready for mainline and in turn helping Proton (Steam Play) and other software.