When using vk_poll_commands, the nvidia driver will busy wait and cause CPU to spike. No other vulkan driver seems to do this. This can negatively affect applications that rely on vk_poll_commands, such as using interpolation in mpv. See relevant mpv bug report here: https://github.com/mpv-player/mpv/issues/6738
I talked with the libplacebo devs about this, but apparently I misunderstood some things, I just spoke with them again and got a better picture of what’s happening:
vk_poll_commands() polls each command with vk_cmd_polls()
vk_cmd_polls() is a simple wrapper vkWaitForFences()
For my issue, interpolation requires heavy use of vk_poll_commands() which causes heavy use of vkWaitForFences(). That function is implemented as a busy wait loop which artificially spikes CPU. The libplacebo devs have previously tracked down this issue and identified this behavior with vkWaitForFences() as an issue. Basically, no other driver implements vkWaitForFences() as a busy wait. Simply increasing the timeout for vk_poll_commands() causes a drop in CPU usage.