Vulkan triple buffering doesn't work on Linux

When frame rate ingame drops below 60 FPS due to GPU limitation, I have only 30 FPS. When the CPU is a bottleneck, the frame rate is not truncated to half refresh rate.

I have 60Hz regular 4k LCD display. VSync on, flipping enabled. Graphics API Visual Indicator reports that flipping is working, no compositor is used at all.

Currently I use NVIDIA 418.56, but on NVIDIA 415.22.05 Vulkan Beta triple-buffering worked as expected. Also NVIDIA Windows drivers (exclusive full screen) and Linux Mesa drivers (Intel/AMD) - triple-buffering is working as expected.

Test condition (pseudocode):

VkSwapchainCreateInfoKHR::presentMode = VK_PRESENT_MODE_FIFO_KHR
VkSwapchainCreateInfoKHR::minImageCount = VkSurfaceCapabilitiesKHR::minImageCount + 1

“minImageCount” contains value of “3”. When it is “2”, triple-buffering doesn’t work also on NVIDA Windows drivers, Linux Mesa drivers, and Linux NVIDIA 415.22.05 Vulkan Beta (as expected).

It’d be nice to have this feature (again, as in NVIDIA 415.22.05 Vulkan Beta) in Linux drivers :)
nvidia-bug-report.log.gz (952 KB)

Can you please try the 430.09 beta and see whether it works there?

Thank you for the reply. Unfortunately, 430.09 beta doesn’t fix the issue.

Hi, I’m experiencing this issue as well.

I’m on 418.56 and in-game frame rate tanks to stable 35FPS when it drops below 70FPS (on my 70Hz display).

I wasn’t aware it was working in 415.22.05 Vulkan Beta, but I tested 430.09 beta and it doesn’t work.

440.31 and still doesn’t work as expected…

Does that at least still work in the current Vulkan beta 435.27.03?

Does that at least still work in the current Vulkan beta 435.27.03?

No, it doesn’t work. But works on old 415.22.05.


I tested Shadow of The Tomb Raider, Linux Vulkan native game, tests on the same scene, 3840x2160, V-Sync ON, Highest details, GTX 1080Ti:

435.27.03:

  • blit + OpenGL compositor - 41 FPS
  • flip (compositor is suspended) - 30 FPS

415.22.05:

  • blit + OpenGL compositor - 41 FPS (notes: mouse lag is notable)
  • flip (compositor is suspended) - 46 FPS (notes: mouse lag is negligible)

435.27.06 - doesn’t work :(

435.27.08 and 440.36 still don’t work.

NVIDIA: how long must I wait for the fix, I know that you are able to fix it, because one of your beta driver worked properly (415.22.05)?? I borrowed Radeon 5700 XT to test and I had no issues with frame rate drops to half of refresh rate - every Vulkan game worked properly without stupid compositor workarounds. Do you support Linux or not? Why it works PROPERLY on Windows (exclusive full screen, FIFO mode)?

Moreover FreeSync support on NVIDIA is broken - my monitor turns black very often on NVIDIA cards - it works properly on AMD GPUs. On NVIDIA and Windows the situation is much better (but not perfect, at least games are playable), why your Linux support is so poor?


Possibly my next card will be from AMD. Most Linux users should do the same. I paid for NVIDIA card to avoid potential problems with AMD cards and I’ve got other stupid problems, IMHO more annoying. Dissatisfied customer :/


Question: NVIDIA, do you fix it? If not - why? Why you don’t answer even if you don’t want to improve this?

Still the case with driver 440.59. With DXVK, you can force the length of vsync backbuffer queue to 3 and it still doesn’t work on Nvidia (while of course it does with radv/anv, where it just works ootb) -> Every game in DXVK falls back to frame rate = half refresh rate when dipping slightly below the maximum refresh rate.

Triple buffering hasn’t been working for months, on top of that as mentioned G-Sync is pretty unusable on Linux due to the blanking.

Only option is to use no syncing and not mind the tearing.

Still doesn’t work with Vulkan developer driver 440.58.1.
Can instantly reproduce this with the native Linux version of Shadow of the Tomb Raider on my GTX 1070 and Linux 5.5.3 (KWin compositing disabled).
no vsync: 61fps in the menu, 100% GPU load
vsync enabled: 37.5fps (half of my 75Hz refresh rate), 60% GPU load

Any update on this @aplattner?

I found a temporary solution for Vulkan apps which is to use MangoHud: https://github.com/flightlessmango/MangoHud

Using the config file set Vsync to ‘2’ (which is Mailbox presentation mode) and cap your fps.

Of course this is only for Vulkan apps (dxvk/wine being probably the majority), for OGL it won’t work as MangoHUD is a Vulkan layer.

Well, that was interesting. MangoHUD is a nice project for sure.

I can confirm the workaround works but with a caveat: Mailbox mode only works for fullscreen mode. In windowed mode I get very visible tearing, so I have to revert to conventional Vsync - and tinkering with individual apps’ settings so the FPS never drops from the monitor refresh number else it’s cut in half…

NVIDIA devs, this thread is 10 months old, with multiple people confirming the problem, plus you got the last driver before the regression pinpointed (415.22.05 Vulkan Beta).

Can we at least have a update please?

This shows soft stutter as it’s not perfect display sync.

440.66.03 - still doesn’t work :( But finally alt-tab is fast and doesn’t display glitches :D

@aufkrawall You can also try my qdre-compositor (qdre-git from AUR, works best with openbox) and configure “exclusive-full-screen” for your needs in dconf-editor - maybe it will sync better, but performace can be lower and higher mouse lag.

Sorry for late response.
I tried to reproduce issue today with driver 440.66.03 but not able to replicate it. Below is my configuration setup -

DELL Precision T7610 + Ubuntu 18.04.4 LTS + kernel 4.15.0-99-generic + GeForce RTX 2080 + Driver 440.66.08 + KDE Environment
Below nvidia settings were applied -

  1. Force Full Composition Pipeline
    2)Enabled sync to Vblank and Allow Flipping

Launched the game with VSYNC enabled on; display resolution at 3840 x 2160; frequency at 60 MHz and played for 30-45 minutes.
Graphics API Visual Indicator reports that flipping is working and frame rate observed at 60 FPS which never went down by 55 FPS on my setup.

Let me know if I missed any game setting and if possible, please share repro video and nvidia bug report with driver 440.66.03.

Apologizing again for the delayed response.

I was able to reproduce issue locally and have given the same logs / setup to engineering team for debugging purpose.

HP-Z420-Workstation + Ubuntu 18.04.4 LTS + 5.3.0-51-generic + Driver 440.66.08 + GeForce GTX 750

Repro Steps -

  1. Installed Game ShadowOfTheTombRaider
  2. Set display resolution as 1920 x 1080 ; frequency as 60 Hz and enabled vsync from game settings
  3. Enabled Force Full Composition Pipeline and Allowed sync to Vblank and Allow Flipping from nvidia-settings
  4. Issue is also reproducible w/o Full Composition Pipeline
  5. Launched game and observed that FPS drops to value of 30 during game play and when there is casting or story being displayed, it returns to 60 fps for that moment

Please let me know if your observation differs from my setup.

Thanks for testing this!

Enabling “Force (Full) Composition Pipeline” doesn’t change the behavior, the most important thing is to use the “Flipping” mode (full screen app and X11 compositor disabled or bypassed).

If NVIDIA wants to fors lower delay of displaying image even if 3 buffers are requested (IMHO also a good idea for some apps/games), please add properly-working triple-buffering into envvar and/or into an application profiles.

Triple-buffering in Vulkan FIFO mode works properly on Mesa (Intel, AMD) drivers and also works properly on NVIDIA Windows drivers (exclusive full screen mode), so I don’t understand why it is not implemented on Linux/X11.

Also OpenGL apps on NVIDIA don’t have this issue with X11 config: Option "TripleBuffer" "1".


For long term, please consider adding MAILBOX present mode to prevent tearing without limiting the frame rate by the driver.


“Force (Full) Composition Pipeline” causes mouse cursor lag on the entire desktop and GPU usage on idle so I don’t recommend using it - it is better to use good-working X11 compositor (e.g. Marco WM doesn’t have a good compositor and tears on NVIDIA, but qdre-compositor, KWin or maybe Gnome [not tested by me] should be ok).