我是一个致力于3D游戏引擎的团队的一员,该游戏引擎具有vulkan渲染系统。到目前为止,我们一直在测试NVIDIA显卡,如GTX 970,并且性能不错。 但是最近我们在AMD显卡上测试了一个场景并获得了非常低的fps:
例如,渲染一个sponza场景:
AMD R9 Fury:5 fps
NVIDIA GeForce GTX 970:64 fps
NVIDIA fps不是很好,但比AMD好得多。
你们有什么想法可能导致AMD卡上fps的这种差异吗? 或者你知道如何隔离导致AMD卡上低fps的原因吗?
提前感谢您的帮助。
答案 0 :(得分:1)
在每次提交时访问大量vkDeviceMemory
值时,AMD驱动程序会出现问题。这在Windows 7/8上尤其是一个问题,它没有WDDM 2.0。实际上,如果在Window 7上使用太多(~1000),则很容易重现BSOD。 Nvidia司机似乎在幕后做某事,并且不受这些限制。但是,因此,他们的驱动程序实现可能会隐藏一些用户优化的机会。
无论如何,建议汇集您的内存分配,以便从同一个分段VkImage
分配VkBuffers
和vkDeviceMemory
。有一个名为Vulkan Memory Allocater的开源库,它试图帮助实现这种行为(并且它可疑地由AMD撰写!)。