NVK 和 Zink 透過 NVIDIA GPU 的開放驅動程式顯著改善了這種情況

Collabora 宣布已推出適用於 NVIDIA 顯示卡的開放式 NVK 驅動程序,可供廣大用戶日常使用,並已在開發圖形標準的 Khronos 聯盟中對該驅動程序進行了認證。該驅動程式被認為完全相容於 Vulkan 1.3 規範,已成功通過 CTS(Khronos 一致性測試套件)的所有測試,並包含在經過認證的驅動程式清單中。

基於Turing微架構(GeForce GTX 16xx、RTX 20xx和Quadro RTX系列)、Ampere(GeForce RTX 30xx和RTX A2000/4000/5000/6000系列)和Ada(GeForce RTX 4xxx、RTX 4000 SFF)已完成的認證、RTX 4xxx/5000/6000 Ada)。測試在Linux核心6.5和6.8rc1的環境中進行。取得該憑證可以讓您正式聲明與圖形標準的兼容性並使用相關的 Khronos 商標。這些變更已被 Mesa 程式碼庫接受,並將成為 Mesa 24.1 版本的一部分。

除了 NVK 的改進之外,在為 NVIDIA 顯示卡提供 OpenGL 支援方面也取得了重大進展。 Mesa 進行了一項更改,允許使用Zink 驅動程式在配備新系列NVIDIA 顯示卡(從GeForce RTX 4.6xx 開始)的系統上提供對OpenGL 20 的支持,這可能會在庫存Nouveau OpenGL 驅動程式(NVC0) 中遇到問題。要在 Mesa 0 中啟用 Zink 而不是 NVC24.1,只需設定環境變數「NOUVEAU_USE_ZINK=1」。

對 Mesa 所做的更改還提供了使用 Zink 在其他驅動程式中支援 OpenGL 的能力,作為 Mesa 原生 OpenGL 驅動程式不支援的 GPU 的後備方案。例如,類似的方法已被用於在 Qualcomm Adreno 700 GPU 的 freedreno 驅動程式和基於 Rogue 微架構的 Imagination PowerVR GPU 的 powervr 驅動程式中提供 OpenGL 支援。

Zink 在 Vulkan 之上提供了 OpenGL 實現,讓您在僅支援 Vulkan API 的裝置上獲得硬體加速的 OpenGL。在 Mesa 的下一個版本中,建置時將預設啟用 Zink 驅動程式。 Zink 的性能接近原生 OpenGL 實現的性能,這使得不必浪費資源維護單個 OpenGL 驅動程序,而是專注於對 Vulkan API 的高品質支持,並在 Vulkan 之上實現 OpenGL 支援。

目前還沒有計劃刪除舊的 Nouveau OpenGL 驅動程序,但以目前的形式,Zink + NVK 組合在許多測試中表現出了更高的性能。在目前的開發階段,當運行許多遊戲時,Zink + NVK 組合可以讓你在新的GPU 型號上實現60 FPS 或更高的性能,但仍然存在一些未解決的問題和未優化的區域,這些問題將隨著時間的推移而解決。

還值得注意的是穩定 NVK 驅動程式之上的 DXVK 層工作的工作,該驅動程式提供了 Direct3D 9、10 和 11 的實現,透過對 Vulkan API 呼叫的轉換進行工作。尚未保證所有 D3D11 遊戲都能與 Mesa 未經修改的 NVK+DXVK 組合配合使用,但基本功能已可用,且已識別的缺陷正在逐漸消除。同樣,NVK 與 VKD3D-Proton 的連接正在開發中,以提供對 D3D12 的支持,但其狀態仍落後於 NVK+DXVK,並且需要實現一些缺失的功能。

NVK 驅動程式是由一個團隊從頭開始建造的,其中包括Karol Herbst(紅帽的Nouveau 開發人員)、David Airlie(紅帽的DRM 維護人員)和來自Collabora 的Jason/Faith Ekstrand(活躍的Mesa 開發人員) 。在創建驅動程式時,開發人員使用了 NVIDIA 發布的官方頭檔和開放核心模組。 NVK程式碼在某些地方使用了Nouveau OpenGL驅動程式的一些基本元件,但由於NVIDIA頭檔中的名稱與Nouveau中的逆向工程名稱的差異,直接借用程式碼在很大程度上是困難的很多事情都必須重新思考並從頭開始實施。

開發的目的是為 Mesa 創建一個新的參考 Vulkan 驅動程序,在創建其他驅動程式時可以藉用該驅動程式的程式碼。 為此,在開發 NVK 驅動程式時,他們嘗試考慮開發 Vulkan 驅動程式的所有現有經驗,以最佳形式維護程式碼庫,並最大限度地減少來自其他 Vulkan 驅動程式的程式碼傳輸,盡其所能最佳和高品質的工作,而不是盲目複製其他驅動程式的工作方式。 該驅動程式已包含在 Mesa 中,並且對 Nouveau DRM 驅動程式 API 的必要變更包含在 Linux 6.6 核心中。

來源: opennet.ru

添加評論