NVK Vulkan驱动程序Lands Shader对象和图形流水线库

2024年 2月 28日 90.9k 0


Mesa代码库中的开源NVIDIA“NVK”Vulkan驱动程序合并了对重要的VK_EXT_SHADER_OBJECT和VK_EXT_GRAPHICS_PIPELINE_LIBRARY扩展的支持。此外,作为支持这些新扩展的一部分,本文向MESA引入了通用Vulkan运行时的代码。

早在一月份,你可能还记得Faith Ekstrand提出的梅萨Vulkan驱动程序将更像Gallium3D并开始编写可在Mesa Vulkan驱动程序之间共享的通用Vulkan运行时代码。合并了VK_EXT_SHADER_OBJECT和VK_EXT_GRAPHICS_PIPELINE_LIBRARY支持后,此公共运行时代码的早期部分已经落地。Ekstrand在合并请求中解释说:

“这个MR为NVK实现了VK_EXT_SHADER_OBJECT和VK_EXT_GRAPHICS_PIPELINE_LIBRARY。它还向运行时添加了一个通用框架,这使得实现着色器对象以及所有管道的变体变得非常容易。使用这个框架,一切看起来都像VK_EXT_SHADER_OBJECT,除了可以在着色器编译时提供一个结构VK_GRAPHICS_PIDELINE_STATE,在这种情况下,驱动程序可以自由地将状态烘焙到着色器中,只要它还在vk_driver_shader_ops::hash_graphics_pipeline_state().中散列所述状态

我的目的是让这位MR充当通用Vulkan运行时代码的MR。我将把一些NVK位提取到单独的mr中,并提前合并它们,在这一点上,我将对这位先生进行重新定位。我还可能尝试单独安装一些更干净的Vulkan运行时补丁,而将着色器对象框架的大部分留在这里。

所以此合并在开始允许更多的Vulkan驱动程序代码在MESA中共享以及为NVK驱动程序实现重要的ESO和GPL功能方面,这是一个双赢。

VK_EXT_SHADER_OBJECT引入了用于表示单个编译的着色器后台文件的VkShaderEXT对象类型。Vulkan着色器对象旨在比Vulkan管道对象更灵活根本性的变化以解决在Vulkan的原始设计中出现的管道抽象问题。

VK_EXT_GRAPHICS_PIPELINE_LIBRARY扩展允许更灵活地编译图形流水线,并根据需要/可用单独编译阶段,而不是完整的流水线状态对象。这对于游戏引擎来说是有用的,可以减少绘制时间搭便车和其他实际好处。

It's great seeing NVK quickly catch-up in supporting all of the important Vulkan extensions along with the ongoing Nouveau kernel driver improvements to yield better performance for the NVIDIA open-source driver stack. These new extensions and common Vulkan runtime code will be part of next quarter's Mesa 24.1 release.

相关文章

塑造我成为 CTO 之路的“秘诀”
“人工智能教母”的公司估值达 10 亿美金
教授吐槽:985 高校成高级蓝翔!研究生基本废了,只为房子、票子……
Windows 蓝屏中断提醒开发者:Rust 比 C/C++ 更好
Claude 3.5 Sonnet 在伽利略幻觉指数中名列前茅
上海新增 11 款已完成登记生成式 AI 服务

发布评论