Vulkan驅動程序現在使用Valve的ACO構建後端

在用於形成Mesa 20.2版本的代碼庫中, RADV驅動程序, 適用於AMD芯片的Vulkan 切換到後端 默認編譯 Valve開發的»ACO«著色器 替代LLVM著色器編譯器。

此指定的更改 最終是為了提高遊戲的生產率 並縮短了發佈時間。

改變 從RADV控制器到新後端 與舊的AMD開發的後端在ACO功能方面達到同等水平之後, 適用於AMDGPU驅動程序,該驅動程序繼續在RadeonSI OpenGL驅動程序中使用。

Valve進行的測試表明,ACO的運行速度幾乎是AMDGPU著色器構建編譯器的兩倍,並且在某些帶有RADV驅動程序的系統上運行時,表明FPS有所提高。

AMD OpenGL和Vulkan驅動程序當前使用的著色器編譯器是LLVM上游項目的一部分。 該項目非常龐大,並且有許多不同的目標,而遊戲著色器的在線編譯只是其中之一。 

這可能會導致開發權衡,在這種情況下,改進遊戲特定功能的難度比以前要困難得多,或者遊戲特定功能通常被從事其他工作的LLVM開發人員意外破壞。

的後端 ACO旨在確保以最佳方式生成代碼 可能適用於遊戲應用著色器,並具有很高的編譯速度。

ACO 它是用C ++編寫的, 開發時要牢記JIT編譯的適用性, 並使用快速迭代遍歷數據結構, 避免使用def等基於指針的結構(如鍊表和字符串)。 代碼的中間表示完全基於SSA(單一靜態分配),並且可以分配記錄,並基於著色器精確地計算記錄。

代碼的中間表示完全基於SSA(單一靜態分配),並且可以分配記錄,並基於著色器精確地計算記錄。

目前僅支持像素 (片段) 並在分立的AMD GPU上計算著色器 (dGPU VI +)。 但是,ACO已經為所有經過測試的遊戲正確收集了著色器,包括《古墓麗影》和《德軍總部II》中的複雜著色器。

擬議的ACO原型 為了測試 它幾乎是AMDGPU著色器編譯器的兩倍 並演示了在帶有RADV控制器的系統上運行時某些遊戲中FPS的增加。

為了進一步了解採用Valve的代碼的相關性,重要的是 目的是保證盡可能最佳的代碼生成 適用於遊戲應用著色器以及很高的編譯速度。

Mesa中可用的著色器編譯器使用LLVM組件, 不允許達到所需的編譯速度,並且不能完全控制控制流,因為過去這已經造成了嚴重的錯誤。

另外, 避免使用LLVM可以實施更積極的分析 差異和更好的日誌負載管理,從而可以更高效地生成可執行文件。

最後,它也是 重要的是要注意,目前ACO僅適用於Mesa RADV Vulkan控制器。 但是ACO開發人員已經確認,他們的下一步將是開始擴展ACO的功能以支持OpenGL RadeonSI驅動程序,以便在將來以及對於該驅動程序,ACO可以替換默認的LLVM著色器編譯器。 。

多少 那些喜歡繼續使用先前使用的後端的人 從LLVM著色器編譯器,他們可以返回它,他們只需要更改一個變量。

提供用於進行此更改的環境變量是 “ RADV_DEBUG = llvm”。


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。

  1.   瓦里·哈維(VaryHeavy) 他說:

    用戶如何選擇與哪個後端一起運行遊戲? 它必須修改哪些文件?