RadeonSI Semaphore Begins Hitting Mesa Git, Needed By SteamVR On Linux
Andres Rodriguez working for Valve as part of their Linux graphics driver team has begun landing his work around OpenGL semaphores for Mesa/Gallium3D and following through with the necessary bits for RadeonSI with the EXT_semaphore work being needed by SteamVR.
This OpenGL semaphore extension is part of OpenGL's memory object support that was introduced in 2017 for bringing the memory objects / semaphores synchronization concepts from Vulkan to OpenGL. SteamVR makes use of the semaphore extension for synchronizing access to shared surfaces between Vulkan and OpenGL.
In Mesa Git is now a lot of the semaphore work by Andres Rodriguez though as of writing he hasn't marked EXT_semaphore or EXT_semaphore_fd (importing a semaphore from a POSIX file descriptor) off the TODO list. But the code that landed today did do the necessary plumbing to the Gallium3D Mesa state tracker and implements semaphore_server_signal so any remaining pieces should be aligned in Git shortly.
This code does rely upon the DRM synchronization object bits that were added during Linux 4.13~4.14, so you'll need a newer kernel, but if using Radeon for SteamVR you will want to be using the latest kernel anyways for generally the best performance and also the DRM leasing, HTC Vive DRM quirking, and other recent kernel additions in general for improving the open-source AMD Linux gaming experience.
This OpenGL semaphore extension is part of OpenGL's memory object support that was introduced in 2017 for bringing the memory objects / semaphores synchronization concepts from Vulkan to OpenGL. SteamVR makes use of the semaphore extension for synchronizing access to shared surfaces between Vulkan and OpenGL.
In Mesa Git is now a lot of the semaphore work by Andres Rodriguez though as of writing he hasn't marked EXT_semaphore or EXT_semaphore_fd (importing a semaphore from a POSIX file descriptor) off the TODO list. But the code that landed today did do the necessary plumbing to the Gallium3D Mesa state tracker and implements semaphore_server_signal so any remaining pieces should be aligned in Git shortly.
This code does rely upon the DRM synchronization object bits that were added during Linux 4.13~4.14, so you'll need a newer kernel, but if using Radeon for SteamVR you will want to be using the latest kernel anyways for generally the best performance and also the DRM leasing, HTC Vive DRM quirking, and other recent kernel additions in general for improving the open-source AMD Linux gaming experience.
10 Comments