Vulkan:为什么 1080 Ti 在 arch 上的 maxMemoryAllocationCount 为 4294967296 而在 Windows 上只有 4096?

Vulkan: Why does the 1080 Ti have a maxMemoryAllocationCount of 4294967296 on arch but only 4096 on Windows?

我目前正在用 C++ 构建一个使用 vulkan 进行渲染的游戏引擎。在实现地形渲染器时,我达到了硬件限制,maxMemoryAllocationCount 限制了分配的内存块的数量。我检查了 https://vulkan.gpuinfo.org/ 以查看不同 GPU 上的该值有多高。查看 "GeForce GTX 1080 Ti" 时,windows 的值为 4096,而 arch/manjaro 的值为 4294967296。为什么这些操作系统之间存在差异,而这确实 应该 是硬件限制?

为什么“应该”是硬件限制?

除了 4 个例外,每个 Windows 实施限制为 4096 次分配。这些例外要么是开源 RADV 在 Windows 上被黑到 运行,要么是返回虚假值的早期驱动程序。

很明显,Windows 作为 OS 施加了此限制。毕竟,OS 拥有 GPU,必须参与任何内存分配。

OS 有权防止进程发生病态行为。 Windows 似乎认为进行大量 GPU 分配是病态的(他们并没有错),因此 WDDM 模型对 GPU 分配施加了一个低但合理的限制。