Mesa 20.3 Picks Up New Capabilities To Help With Display Presentation Jitter, Stuttering
Being merged today to Mesa 20.3-devel were some improvements aiming to help with display presentation jitter and hopefully avoid stuttering in the frame-rate.
Adam Jackson of Red Hat has been working on supporting GLX_EXT_swap_control/GLX_EXT_swap_control_tear for Mesa's GLX implementation and on the Vulkan side support for VK_PRESENT_MODE_FIFO_RELAXED_KHR.
GLX_EXT_swap_control_tear allows a negative value for glXSwapIntervalEXT to allow for late swaps without synchronization to the video frame. Making use of this is intended to reduce visual stutter on late frames and reducing the stall on subsequent frames. This GLX extension has been around for nearly a decade and was devised by NVIDIA engineers.
VK_PRESENT_MODE_FIFO_RELAXED_KHR is similar albeit on the Vulkan windowing system integration rather than GLX. With VK_PRESENT_MODE_FIFO_RELAXED_KHR set, it allows updating the current image if the vertical blanking period has already passed rather than waiting for the next period. This should help with reducing stuttering but can lead to potential tearing.
The code is now in place for Mesa 20.3-devel to begin enjoying these presentation improvements. But it's also possible this will expose some issues within the X.Org drivers, so be aware the possibility of bugs in the near-term while any issues are addressed.
This code is now in Git ahead of the Mesa 20.3 stable release next quarter.
Adam Jackson of Red Hat has been working on supporting GLX_EXT_swap_control/GLX_EXT_swap_control_tear for Mesa's GLX implementation and on the Vulkan side support for VK_PRESENT_MODE_FIFO_RELAXED_KHR.
GLX_EXT_swap_control_tear allows a negative value for glXSwapIntervalEXT to allow for late swaps without synchronization to the video frame. Making use of this is intended to reduce visual stutter on late frames and reducing the stall on subsequent frames. This GLX extension has been around for nearly a decade and was devised by NVIDIA engineers.
VK_PRESENT_MODE_FIFO_RELAXED_KHR is similar albeit on the Vulkan windowing system integration rather than GLX. With VK_PRESENT_MODE_FIFO_RELAXED_KHR set, it allows updating the current image if the vertical blanking period has already passed rather than waiting for the next period. This should help with reducing stuttering but can lead to potential tearing.
The code is now in place for Mesa 20.3-devel to begin enjoying these presentation improvements. But it's also possible this will expose some issues within the X.Org drivers, so be aware the possibility of bugs in the near-term while any issues are addressed.
This code is now in Git ahead of the Mesa 20.3 stable release next quarter.
12 Comments