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. 權利:您可以隨時限制,恢復和刪除您的信息。