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) 的英特尔 ANV Vulkan 驱动程序的速度提高了高达 5000%,高通 Adreno TURNIP 驱动程序的速度也提高了约 3000%~4000%。
用于优化 Vulkan Mesa 驱动程序提交合并的代码现在正在通过 Mesa MR进行审查。
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。