Graphics 为什么VK_呈现_模式_FIFO_KHR会导致Ubuntu MATE出现灾难性的性能问题?

Graphics 为什么VK_呈现_模式_FIFO_KHR会导致Ubuntu MATE出现灾难性的性能问题?,graphics,desktop,frame-rate,vulkan,Graphics,Desktop,Frame Rate,Vulkan,根据流行的Vulkan教程(),我正在实现一个简单的Vulkan渲染器,我遇到了一个关于表示模式和桌面环境性能的有趣问题 我在Windows上编写了triangle演示,效果很好;然而,我将它移植到我的Ubuntu安装中(运行MATE 1.20.1),并在运行时发现整个桌面环境的性能有一个奇怪的问题;某些swapchain表示模式似乎彻底破坏了桌面环境 当设置Vulkan交换链并将presentMode设置为VK\u PRESENT\u MODE\u FIFO\u KHR并随后运行应用程序时,只

根据流行的Vulkan教程(),我正在实现一个简单的Vulkan渲染器,我遇到了一个关于表示模式和桌面环境性能的有趣问题

我在Windows上编写了triangle演示,效果很好;然而,我将它移植到我的Ubuntu安装中(运行MATE 1.20.1),并在运行时发现整个桌面环境的性能有一个奇怪的问题;某些swapchain表示模式似乎彻底破坏了桌面环境

当设置Vulkan交换链并将
presentMode
设置为
VK\u PRESENT\u MODE\u FIFO\u KHR
并随后运行应用程序时,只要拖动任何窗口,整个桌面环境就会停止。当拖动整个桌面上的任何窗口时,整个桌面环境都会变慢为爬行,速度大约为4-5 fps。但是,当我用
VK\u PRESENT\u MODE\u IMMEDIATE\u KHR
替换
presentMode
时,桌面环境不会受到此问题的影响,并且在拖动窗口时不会出现性能问题

当我在这里提问之前对此进行研究时,我发现一些人发现,当他们的应用程序以尽可能快的速度(而不是vsync'd)交付帧时,他们会经历这种行为,并且正确地与vsync同步解决了这种口吃。然而,就我而言,情况恰恰相反;当我使用
VK\u PRESENT\u MODE\u IMMEDIATE\u KHR
时,即不等待vsync,拖动性能是平滑的,当我使用
VK\u PRESENT\u MODE\u FIFO\u KHR
与vsync同步时,它会结巴

VK\u PRESENT\u MODE\u FIFO\u released\u KHR
产生与标准FIFO模式相同(灾难性)的结果

我试着用康普顿GPU合成器代替康皮兹;效果仍然存在(无论拖动哪个窗口,桌面仍然会变得非常慢),但比使用Compiz时稍微不明显

我已经完全实现了教程中定义的基于
VkSemaphore
的帧/图像/交换链同步方案,并且我验证了在使用
VK\u PRESENT\u MODE\u FIFO\u KHR
时,应用程序仅以每秒60帧的目标速度渲染帧。(当使用<代码>即时时,它以7700 fps的速度运行。)

最有趣的是,当我测量帧时(使用
glfwGetTime()
),在拖动窗口期间,帧时非常短。截图显示了这一点;当拖动窗口时,可以看到极短/异常的帧时间,然后在窗口静止时看到“典型”帧时间(锁定为60fps)

此外,只有在使用
VK\u PRESENT\u MODE\u FIFO\u KHR
时,当观察到这种极端的性能下降时,
Xorg
将CPU固定在一个内核上,而运行的Vulkan应用程序也使用了大量的CPU时间(73%),如下面的屏幕截图所示。此峰值仅在桌面环境中拖动窗口时观察到,如果使用
VK\u PRESENT\u MODE\u IMMEDIATE\u KHR
,则根本不会观察到

我很好奇是否有其他人经历过这种情况,以及是否有已知的窗口行为修复方法

系统信息:Ubuntu 18.04,Mate 1.20.1 w/Compiz,Nvidia专有驱动程序

编辑:似乎对某个问题有类似的描述;
VK_PRESENT_MODE_FIFO_KHR
在Nvidia专有驱动程序下会导致严重的桌面性能问题


编辑2:使用
vkcube工具中的
vkcube
可以很容易地复制此错误
vkcube
使用
--呈现模式0
呈现模式2

比较
vkcube
的桌面性能。我在Arch上使用
amdvlk
驱动程序时遇到了同样的问题:显示器会在具有特定计算负载的某些当前模式和具有不同计算负载的所有当前模式上,即使测量的帧数非常小,也会发出~5 Hz的口吃。切换到
vulkan radeon
为我解决了这个问题。我不认为有替代的Nvidia驱动程序可用。谢谢@Tau的跟进。。。Linux上的Vulkan驱动程序支持似乎还有很长的路要走,w.r.t.口吃。