Collabora开发人员为Mesa展示了新的镓控制器

协同控制器

最近 Collabora开发人员发布 通过博客文章, 用于Mesa的新型镓控制器, 它实现了一个中间层 组织OpenCL 1.2和OpenGL 3.3 API 有关支持DirectX 12(D3D12)的驱动程序,以及其源代码是根据MIT许可证发布的。

拟议的控制器将 允许您在设备上使用Mesa 最初不兼容 与OpenCL和OpenGL 并作为移植OpenGL / OpenCL应用程序以在D3D12上运行的起点。 对于GPU制造商,该子系统允许提供对OpenCL和OpenGL的支持,其驱动程序仅支持D3D12。

在他们的博客文章中,开发人员分享:

在过去的几个月中,我们一直在Collabora开展两个激动人心的新项目,现在终于可以与世界分享有关它们的信息了……

近期计划,可以观察到对测试的完全认可 OpenCL 1.2和OpenGL 3.3支持,验证与应用程序的兼容性以及在Mesa的主要组成部分中包含最佳做法。

关于新控制器

新控制器的开发是与Microsoft工程师共同完成的 开发D3D11传递工具包和D12D3 D11D3TranslationLayer库的D12D3On12工具,以及在D3D12之上的标准图形基元实现。

实施 包括镓驱动程序,OpenCL编译器,OpenCL运行时和NIR-to-DXIL着色器编译器,该编译器将Mesa中使用的NIR着色器的中间表示转换为二进制DXIL格式(DirectX中间语言),与DirectX 12兼容并且基于位码LLVM 3.7(Microsoft DirectX Shader Compiler本质上是LLVM 3.7的扩展分支。 OpenCL编译器是根据LLVM项目和SPIRV-LLVM工具包的经验编写的。

这项工作建立在许多以前的工作的基础上。 首先,我们使用Mesa 3D构建此库,其中Gallium接口是OpenGL层的基础,而NIR是OpenCL编译器的基础。 我们还将LLVM和Khronos SPIRV-LLVM转换器用作编译器。

此外,我们利用Microsoft在创建其D3D12转换层方面的经验以及我们在开发Zink方面的经验。

OpenCL源代码使用clang编译为中间LLVM伪代码(LLVM IR),然后将其转换为SPIR-V格式的OpenCL内核的中间表示形式。

SPIR-V表示中的核心已转移到Mesa, 转换为NIR格式,进行优化,然后传输到NIR-to-DXIL,以生成合适的DXIL计算着色器 使用基于DirectX 12的运行时执行GPU。 提出了一个新的OpenCL运行时,而不是在OpenCL Mesa实现中使用Clover,它可以更直接地转换为DirectX 12 API。

OpenCL和OpenGL驱动程序是使用Gallium接口准备的 Mesa中提供的功能,可让您在创建驱动程序时绕过OpenGL详细信息,并将OpenGL调用转换为更接近现代GPU操作的图形基元的实体。

Gallium驱动程序接受OpenGL命令,并在NIR到DXIL转换器的参与下,使用D3D12驱动程序构建在GPU上运行的命令缓冲区。

最后, 开发人员提到这是早期工作 并且他们希望控制器会随着时间的推移而改进:

这仅仅是公告,还有很多工作要做。 目前,在某些情况下,我们有一些可行的方法,但我们才刚刚开始摸索。

首先,我们需要达到我们想要的功能级别。 我们目前的目标是通过针对OpenCL 1.2和OpenGL 3.3的一致性测试。 我们还有很长的路要走,但是经过一番努力和汗水,我相信我们一定会实现的。

如果您有兴趣了解更多信息, 您可以在中查看原始注释 以下链接 或对于那些有兴趣查看源代码的人可以这样做 从这个链接。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责资料:AB Internet Networks 2008 SL
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。