Collabora 开发了一个插件,用于在 DirectX 之上运行 OpenCL 和 OpenGL

合作公司 提交 Mesa 的新 Gallium 驱动程序,它在支持 DirectX 1.2 (D3.3D12) 的驱动程序之上实现了一个用于组织 OpenCL 3 和 OpenGL 12 API 工作的层。 代码 发表 在麻省理工学院的许可下。

建议的驱动程序允许您在本身不支持 OpenCL 和 OpenGL 的设备上使用 Mesa,并且还可以作为移植 OpenGL/OpenCL 应用程序以在 D3D12 上运行的起点。 对于 GPU 制造商来说,只要有支持 D3D12 的驱动程序可用,该子系统就可以提供对 OpenCL 和 OpenGL 的支持。

近期计划包括全面通过 OpenCL 1.2 和 OpenGL 3.3 的兼容性测试、检查与应用程序的兼容性以及将开发纳入 Mesa 的主要构成中。 与微软工程师共同开发 开放 工具 D3D11On12 用于将游戏从 D3D11 传输到 D3D12 和库 D3D12翻译层,它在 D3D12 之上实现标准图形基元。

该实现包括 Gallium 驱动程序、OpenCL 编译器、OpenCL 运行时和 NIR-to-DXIL 着色器编译器,它将 Mesa 中使用的 NIR 着色器的中间表示转换为 DXIL(DirectX 中间语言)二进制格式,受 DirectX 12 支持并基于LLVM 3.7 位码(DirectX着色器编译器 来自 Microsoft 的本质上是 LLVM 3.7 的扩展分支)。 OpenCL编译器是基于LLVM项目和工具的开发而编写的 SPIRV-LLVM.

使用 clang 将具有 OpenCL 扩展的源代码编译为 LLVM 中间伪代码 (LLVM IR),然后将其转换为 SPIR-V 格式的 OpenCL 内核的中间表示。 SPIR-V 表示形式的核心被传递到 Mesa,转换为 NIR 格式,经过优化并传递到 NIR-to-DXIL,以生成 DXIL 格式的计算着色器,适合使用基于 DirectX 12 的运行时在 GPU 上执行。
提出了新的 OpenCL 运行时,而不是 Mesa 中使用的 OpenCL 实现 Clover,允许更直接地转换为 DirectX 12 API。

Collabora 开发了一个插件,用于在 DirectX 之上运行 OpenCL 和 OpenGL

OpenCL 和 OpenGL 驱动程序是使用 Mesa 中提供的 Gallium 接口来准备的,它允许您创建驱动程序而无需深入了解 OpenGL 特定的细节,并将 OpenGL 调用本质上转换为更接近现代 GPU 运行的图形基元。 Gallium 驱动程序,接受 OpenGL 命令以及使用 NIR 到 DXIL 转换器时
生成使用 D3D12 驱动程序在 GPU 上执行的命令缓冲区。

来源: opennet.ru

添加评论