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

添加評論