VK_PRESENT_MODE_FIFO_KHR on saschawillems triangle demo

I think this was mostly fixed last year [1], but it looks like VK_PRESENT_MODE_FIFO_KHR has unusual stutters when the application generates frames very quickly.

Steps to reproduce:

  1. System: Intel(R) Core(TM) i7-5930K CPU
  3. OS: Linux Mint 18
  4. Driver: Tested on 375.39 and 375.27.14
  5. Clone and build https://github.com/saschawillems/vulkan
  6. Modify base/vulkanswapchain.hpp to replace if (!vsync) with if (0 && !vsync), forcing the app to use VK_PRESENT_MODE_FIFO_KHR.
    // The VK_PRESENT_MODE_FIFO_KHR mode must always be present as per spec
    // This mode waits for the vertical blank ("v-sync")
    VkPresentModeKHR swapchainPresentMode = VK_PRESENT_MODE_FIFO_KHR;
    // If v-sync is not requested, try to find a mailbox mode
    // It's the lowest latency non-tearing present mode available
    if (0 && !vsync)
  7. Rebuild
  8. Run bin/triangle

Expected results:
Frame times remain very close to 16 ms.

Actual results:
This vktrace shows frame times jumping to 66 ms. This was captured with driver 375.39.



[1] This comment seems to indicate a bugfix was made around August 2016 / driver version 370 which made VK_PRESENT_MODE_FIFO_KHR better: https://github.com/Novum/vkQuake/issues/61#issuecomment-240520054

Same results here. Hardware: GTX 1070, Driver version: 388.19. Frameworks: GLFW, C++11 (MSVC), OS: Windows 10 Home.

VK_PRESENT_MODE_FIFO_KHR and VK_PRESENT_MODE_MAILBOX_KHR must cap FPS like “V-Synk ON” in Nvidia Control Panel or not?
Anyone can say for sure?