Mike Blumenkrantz
Valve一流的Linux图形驱动程序团队
,实现了另一项令人印象深刻的壮举,即进一步优化Mesa Vulkan驱动程序代码,使多个驱动程序/硬件供应商受益。
Blumenkrantz最近开始探索Mesa对Vulkan排队的处理方式,以及它是如何变得相当缓慢的。他最终分析的是Vulkan API如何允许同时执行一系列命令缓冲区提交,尽管Mesa当前的vkQueueSubmit处理将分批提交拆分,并仍然单独提交每个提交,而不是同时提交整个提交阵列。反过来,这种当前的单独提交方式意味着增加了开销,也增加了内存分配开销。
通过重新编写Vulkan队列提交代码,添加线程等待,并在可能的情况下合并队列提交以减少同步开销,这是一个巨大的效率优势。更令人兴奋的是,这发生在Mesa的通用Vulkan运行时代码中,而不是特定于驱动程序的代码。
随着一些vkOverhead基准测试案例中悬而未决的改进,RDNA3 GPU上的RADV驱动程序提交命令的速度可以提高约1000%,Lavapipe软件驱动程序在某些情况下提高了1000~3000%,带有Arc Graphics(DG2)的Intel ANV Vulkan驱动程序的速度提高了5000%,高通Adreno TURNIP驱动程序的得分也提高了约3000~4000%。
用于优化Vulkan Mesa驱动程序提交合并的代码现在正在通过
这位梅萨MR
。有关Blumenkrantz不懈优化工作的更多详细信息,请访问
此博客文章
.