对于Mesa的Gallium3D架构,有不同的状态跟踪器,如VA-API和OpenGL,这些状态跟踪器又运行在不同的Gallium3D硬件驱动程序之上,目的是实现公共代码重用,并最大限度地利用每个驱动程序的功能。对于Mesa的Vulkan驱动程序,由于Vulkan的底层API方法,代码共享/重用的程度并不是很高,但现在有人提出了一个想法,即Mesa Vulkan驱动程序是否可能受益于更像Gallium3D的运行时。
Faith Ekstrand和Collabora今天在Mesa邮件列表上提出了这个想法,关于Mesa Vulkan驱动程序的当前开发模式是否实用,或者更像Gallium3D的方法是否更适合。当Vulkan刚开始的时候,驱动程序要薄得多,级别也低得多,但随着时间的推移,Vulkan API功能集已经建立起来。随着时间的推移,Mesa增加了不同的层和Vulkan驱动程序之间的代码共享方式。
最新的是来自Ekstrand的补丁,用于实现具有ext_shader_Object和图形流水线库(GPL)支持的NVK驱动程序,同时为运行时引入通用框架,使这项工作更容易向前推进。中解释了合并请求(MR):
我的目的是让这位mr作为通用Vulkan运行时代码的mr。我将把一堆NVK位提取到单独的mr中,并提前合并它们,在这一点上,我将重新设置这位mr的基址。我还可能尝试单独安装一些更清理类型的Vulkan运行时补丁,将着色器对象框架的大部分留在这里。
在邮件列表建议书Ekstrand承认,这将是MESA中Vulkan运行时工作方式的一个相当根本的转变,而且开源NVIDIA(NVK)Vulkan驱动程序可能是这项工作的第一个受益者。这种焦点的改变将主要是关于Vulkan驱动程序成为Vulkan运行时的后端,而不是选择性地成为公共代码/运行时的用户。
Some interesting ideas were raised by Faith on the mailing list and it will be interesting to see over the weeks ahead how this will ultimately influence future development of the Mesa Vulkan drivers from Intel ANV to Radeon RADV to the new NVK driver as well as the various smaller Vulkan drivers within the Mesa codebase plus any future Vulkan drivers that may in turn have an easier time being brought up if these changes are implemented.