Mesa 26.0 增強了對 Vulkan 的支持,並為 RADV、ANV、NVK、PanVK、Venus 和其他驅動程式添加了數十個關鍵擴充。

  • RADV 的光線追蹤效能顯著提高,實際案例顯示效能提升約 8% 或更多。
  • NVIDIA 的開源驅動程式 (NVK/Nouveau) 和 Panfrost/PanVK 朝著真正取代專有驅動程式的方向邁出了重要一步。
  • 版本 26.0 的發布伴隨著一連串的修正、編譯器最佳化(ACO、NAK 等)以及程式碼的大規模內部清理。

梅薩26.0

如果你使用 Linux 進行遊戲或圖形工作一段時間了,你可能聽說過 Mesa,它是開源圖形驅動程式的基石。 到貨 de 梅薩26.0 這不僅僅是又一次更新,就像之前發生的那樣… 梅薩25.3對於 AMD、Intel、NVIDIA 和許多不太常見的 GPU 而言,這在效能、Vulkan 相容性和驅動程式的整體改進方面都是相當大的飛躍。

此版本包含非常具體的改進,從積極的優化開始 RADV中的光線追踪這包括對 ACO 和 NAK 等編譯器的廣泛改進、新的 Vulkan 擴展、HDR 和 AFBC 格式支援、視訊改進、穩定性修復以及大量的程式碼清理。所有這些,正如… 梅薩25.3.5這進一步印證了一種清晰的感覺:Linux 的開源驅動程式生態系統正在達到相當成熟的程度,對於許多用戶來說,放棄專有驅動程式現在完全是現實的。

表 26.0 的一般性更新

26.0 分支作為季度功能版本發布,並引入了廣泛的功能。 Vulkan擴展性能調整和內部變更。總體而言,版本說明重點介紹了多個驅動程式中重要擴充的引入或升級:

  • VK_KHR_維護10 已在 ANV(Intel)、NVK(開源 NVIDIA)和 RADV(AMD)中啟用,並改進了行為和進行了少量 API 更改,使現代圖形引擎的工作更加輕鬆。
  • VK_EXT_shader_uniform_buffer_unsized_array 在 ANV、HoneyKrisp(HK,Apple Metal 上的 Vulkan 驅動程式)、NVK 和 RADV 中公開,允許使用沒有固定大小的 UBO 數組,這對於具有許多動態資源的某些引擎非常有用。
  • VK_KHR_表面維護1 y VK_KHR_swapchain_maintenance1 在已經存在等效 EXT 擴展(anv、hk、lvp、nvk、radv、tu、v3dv、vn)的地方進行推廣,以便更好地控制交換錶面和鏈。
  • VK_KHR_pipeline_binary HoneyKrisp 和 PanVK 中均已啟用此功能,允許處理預先編譯的管道二進位文件,這對於減少載入時間和改善遊戲和大型應用程式的體驗至關重要。
  • VK_KHR_robustness2 它已從所有已支援它的驅動程式中的 EXT 擴充功能中提升出來:panvk v10+、HK、hasvk、NVK、Turnip、Lavapipe 和 Venus,從而增強了對超出範圍存取的穩健性。

除了對 OpenGL、Gallium3D 和數十種 GPU 的支援進行經典改進之外,Mesa 26.0 還特別強調了以下方面: 火山樹 例如 RADV、ANV、NVK、PanVK 或 Venus,它們在以下方面變得越來越重要: 遊戲環境 (Proton/Steam、Lutris、Heroic 等),以及虛擬化、模擬和專業應用。

RADV(AMD)的光線追蹤和效能得到顯著提升

這個版本的優點之一是它專注於… 適用於 AMD GPU 的光線追踪 透過 RADV 驅動程式。 Valve 和其他合作者已經對性能進行了一段時間的微調,積累的工作成果在 Mesa 26.0 中顯而易見:其中包含大量專注於性能優化的補丁。 調度 ACO 在 BVH 管理、加速結構更新以及光線追蹤著色器的打包方式中都發揮作用。

在使用者分享的真實測試中,改進之處主要體現在以下幾個方面: 光線追蹤性能提升8% 在配置要求較高的遊戲中,使用 Proton(例如,使用「Supreme」預設和 GE-Proton10-28),以及 Ryzen 5 7600、32 GB 記憶體和相對較新的 Linux 核心等硬件,效能提升顯著。 GameTechBench 等綜合基準測試顯示,效能提升接近… 特定情況下為 50%但是,這些數據始終應謹慎對待:它們可能是由於測試中的特定內部變化或不同的配置設定造成的。

程式碼展示了為改進 ACO 編譯器所做的巨大努力:新增並修正了最佳化標籤,並改進了模式。 fma最小值/最大值運算、合併運算和向量化過程都進行了重新組織,並且改進了暫存器讀取/寫入衝突、NOP 使用和延遲控制等方面。所有這些改進都是為了減少不必要的著色器工作。 更好地利用硬件 後來的 RDNA 和 GCN 系列。

另一個重要因素是實施 高壓限流器 RADV 利用通用 Vulkan 層中的高性能 LBVH/BVH 優化來改進 TLAS/BLAS 構建,減小結構的有效大小,並提升完整構建和 BVH 更新的性能。節點數量已進行調整,並且節點已整合。 box16 在適當情況下,對於非活動基元的情況,可以更好地進行控制,並且這些變更會與 RRA(Radeon 光線追蹤分析器)支援相結合,以進行診斷。

RADV 和影片中出現的 Vulkan 擴展

除了光線追蹤之外,Mesa 26.0 還擴展了以下功能清單: RADV 支援的 Vulkan 擴展 與視訊和高級工作流程相關:

  • VK_VALVE_video_encode_rgb_conversion它支援 RGB 轉換的視訊編碼,這對於某些多媒體流程非常有用。
  • VK_EXT_custom_resolve它允許實現自訂顏色/深度分辨率,對於微調其 MSAA 路由和後製效果的現代引擎來說,這是一個非常有趣的附加功能。
  • 支持力道整體上有所提高 Vulkan 視頻 在 H.264/H.265/AV1 等編解碼器中,存在大量補丁。 radv/視頻 y radeonsi/vcn:DPB 大小、對齊方式、參考管理、非對齊解析度、無 DPB 的僅幀內模式、組合寫入、視訊影像混疊模式、量化映射、螢幕內容工具等等。

這一系列影片作品都伴隨著部分內容​​的變化 VA-API 前端它分離並清理了編碼/解碼和後處理邏輯,重用輔助結構(radeon_bitstream)作為標頭和表格,並移除了各種驅動程式中對 MPEG4 等舊格式的支持,專注於目前使用的 H.264、H.265 或 AV1 等編解碼器。

英特爾 ANV 和 Iris:維護10、URB 和性能

在英特爾方面,Mesa 26.0 為 Vulkan 驅動程式帶來了大量結構性改進。 ANV 以及在 OpenGL 驅動程式中 鳶尾重點關注新擴充功能和複雜功能(網格著色器、光線查詢、視訊等)的穩定性。

ANV 也支持 VK_KHR_維護10這意味著支援新的解析標誌,並對以下內容進行微調: 附件 在動態渲染過程中,以及對狀態的更好控制,例如 HDR解析度 或處理具有特殊傳輸功能的附件。該擴充功能也已實現。 VK_EXT_shader_uniform_buffer_unsized_array將驅動程式與 RADV 和 NVK 對齊。

已被廣泛討論的一點是向系統性使用過渡 近紅外光譜中的固有URB (載入/儲存統一返回緩衝區)同時適用於 TCS/TES(細分控制和評估)以及網格/任務著色器。 URB(統一返回緩衝區)訪問路徑的大部分被重寫,Xe2 及後續級別的位元組偏移量被計算,細分級別的槽位分配被重新排序,輸入/輸出映射被通用化,並應用了後續的偏移優化。 nir_opt_offsets.

Iris 本身也受益於這些最佳化,但同時也引入了一些特定的改進,例如曝光控制。 GL_KHR_shader_subgroup_* 在 Gfx ≥ 9 版本中,盡可能地修復了執行單元 (EU) 驗證問題,調整了合併裝置上的臨時 ID,並對綁定表和推送常數進行了內部重構。此外,也加強了[更多詳情]工具的功能。 PERFETTO 以及效能測量(intel_measure、perf、pps),具有更短的最小採樣週期,並擴展支援新一代晶片,如 Xe2 和 Xe3。

開啟 NVIDIA:NVK、NAK 和 Turing/Blackwell 驅動程式

在 NVIDIA 開源生態系統中,Mesa 26.0 帶來了許多新功能。 NVK (Vulkan驅動程式)和編譯器 NAK此外,還改進了 Nouveau 堆疊,並整合了 gfxstream 和虛擬環境。

一方面,NVK 獲得了對重要擴展的支持,例如: VK_EXT_discard_rectangles這允許在管線層級丟棄幀緩衝區中的任意區域,以及 VK_KHR_維護10 y VK_EXT_shader_uniform_buffer_unsized_array同時宣布將提供支持 VK_KHR_pipeline_binary與 PanVK 和 HoneyKrisp 一樣,能夠儲存和重複使用管道二進位檔案。

已引入重要細節,例如包括 管線/二進位快取中的晶片組 UUID在某些影像匯入/匯出情況下停用壓縮,使用最新版本的 Nouveau(例如 Nouveau 1.4.2)重新啟用壓縮,將最大緩衝區儲存範圍調整為最大緩衝區大小,並在 Tegra 中正確處理 sRGB 和 ASTC 格式等等。

關於 NAK 編譯器,我們進行了顯著的清理和改進工作:新增了以下內容: ShaderModelInfo 為了封裝著色器模型訊息,Ampere 及後續架構改進了 HMMA 和 CS2R 等指令延遲技術。 預先通過調度器 此外,還延遲了跨越基本區塊,複製並傳播了無綁定處理程序,利用了硬體支援的每個 SM 的最大 warp 數,並在 Blackwell、Ada 和 Ampere 等系列之間協調了行為。

此外,對於 Turing GPU(RTX 20),NVK 驅動程式中整合了一項與 NAK 編譯器相關的特定改進:驅動程式現在切換到 使用每個SM的最大扭曲值。 每款機型均支援此功能,能夠更好地調整每個多處理器上的活動執行緒數。這意味著更有效率的硬體利用率,尤其適用於計算密集型工作負載(例如遊戲、3D引擎和其他高要求應用)。雖然官方數據尚未公佈,但可以合理預期能夠達到 更高的穩定性和流動性 在某些負載下,即使 FPS 的提升並非在所有情況下都很顯著。

Nouveau 和 NVIDIA 開源驅動程式的穩定發展

更廣泛的背景是, NVIDIA 開源驅動程式 Nouveau 和 NVK 的發展速度都比幾年前快得多。 Mesa 26.0 繼續增加一些小功能:修正 drm-shim,支援 NVIDIA 的新 DRM 修改器,改進狀態擷取/回放,相容於現代影像壓縮技術(例如,各種驅動程式(包括 Tegra/NVK 部分)中的 VK_EXT_texture_compression_astc_hdrdr 支援的持續改進 HDR),以及同步功能同步功能以及同步功能。

最近的對比測試已經表明,使用開放式驅動程式的效能開始顯現出優勢。 認真對待在某些情況下,它甚至優於專有驅動程式。人們已經將它與 GTX 980 等顯示卡、中間幾代顯示卡,甚至與目前的 AMD 硬體進行了比較。雖然仍有改進空間,但差距正在縮小,對於許多 Linux 用戶來說,開源驅動程式要么已經足夠好用,要么已經非常接近完美。

PanVK 和 Panfrost:ARM 上的 Vulkan、AFBC 和快取改進

在 ARM GPU 方面(Mali),該系列 泛凍土/泛VK Mesa 26.0 正在進行大量開發工作。首先是 PanVK,接下來將添加對以下功能的支援:

  • VK_EXT_image_drm_format_modifier 在 v7 中,對於更好地與 DRM 整合以及處理帶有修飾符的格式(AFBC、特殊平舖等)至關重要。
  • VK_KHR_sampler_ycbcr_conversion v7 版本新增了對 YUV 紋理和更複雜視訊串流的使用。
  • VK_EXT_multisampled_render_to_single_sampled與 Turnip(高通)類似,允許將紋理直接多重取樣到單一樣本。
  • 支持 稀疏映像(sparseResidencyImage2D 和 sparseResidencyStandard2DBlockShape) 在 v10+ 中,具備了部分綁定、行/層對齊和特定稀疏駐留查詢的所有基礎架構。
  • VK_KHR_pipeline_binary 並且記憶體和磁碟上都有快取系統,這降低了重新運行遊戲或應用程式時重新編譯著色器和管線的成本。

Panfrost 則增加了對新的 AFBC 格式(包括 16 位元和 4:2:2)的兼容性,並添加了諸如以下格式: R16G16_R16B16_UNORM它支援更多紋素緩衝區(包括三分量格式),並改進了圖塊緩衝區大小的計算。此外,也引入了一些內在特性。 像素本機儲存(PLS) 並且已實施 GL_EXT_shader_pixel_local_storage Panfrost v6+ 允許在像素級別保存和檢索數據,而無需訪問主內存,這對於某些高級效果來說非常有趣。

Bifrost (pan/bi) 編譯器展現了深刻的重構:8 位指令的向量化、向量 phi 處理方面的改進、將許多 NIR 過程轉移到一種統一的「後處理」以及將編譯器清晰地分離成一個公共庫。 libpanfrost_compiler這一切不僅提高了效能,而且還有助於維護和整合 v12+ 等新架構。

維納斯、HoneyKrisp 和其他特殊司機

Mesa 26.0 還包含針對特定環境中一些鮮為人知但非常重要的驅動程式的改進。 Venus用於在 virtio-gpu(廣泛用於虛擬化和容器環境)上使用 Vulkan 的 Vulkan 轉換驅動程式新增了對以下功能的支援:

  • VK_KHR_合作_矩陣, VK_KHR_shader_bfloat16, VK_EXT_shader_float8 y VK_EXT_shader_uniform_buffer_unsized_array與現代計算和機器學習能力保持一致。
  • VK_EXT_mesh_shader這使得網格/任務著色器能夠在虛擬化環境中運行,這在幾年前聽起來幾乎像是科幻小說裡的內容。
  • 非同步功能已實現,支援隊列 僅稀疏改進了與 present wait/present id 的集成,並對 dmabufs 處理、AHB blob 和隱式同步進行了微調。

司機 HoneyKrisp (HK) 為 Apple 環境中的 Metal 提供 Vulkan 功能,此次更新包含多項修復。 全點積的性質增加了對以下功能的支持 VK_KHR_present_id/present_id2 y VK_KHR_present_wait/present_wait2已宣布 VK_EXT_shader_uniform_buffer_unsized_array已啟用 VK_KHR_pipeline_binary 並對主機映像副本詳細資訊和 ASTC 格式中的 HIC 相容性進行了調整,此外還有許多其他細微的變更。

其他司機,例如 PowerVR(PVR), v3dv/v3d (樹莓派) Virtio/Virgl, 熔岩管 (CPU 端 Vulkan) D3D12/打 他們還會收到大量的修復、程式碼清理和新擴充(例如,pvr_storage_class,或 gfxstream 中的 VK_EXT_blend_operation_advanced 和 VK_EXgfxstream 中的 VK_EXT_blend_operation_advanced 和 VK_EXgfxstream_boundary)。

對 OpenGL、Gallium 和編譯器(NIR、ACO 等)的改進

儘管 Vulkan 備受關注,但 Mesa 26.0 也整合了大量其他協議。 對 OpenGL、Gallium 和 NIR 編譯器的改進多個最佳化過程(常數折疊、代數、複製傳播、DCE、CSE)被重新構建,標誌被合併。 fp_math_control 清理了每個指令(包括正確處理有符號零、NaN 和無限大)以及 RADV、Radeonsi、Intel 或 Broadcom 等驅動程式中冗餘傳遞的使用。

在近紅外光譜中,引入了新的固有特性,例如 像素本地儲存新增浮點轉換操作碼(f2f16_ru/rd)、統一子群輔助函數、更穩健的未定義行為處理(例如,在位元域提取、整數除法和飽和運算中),以及一套用於循環、擴散、發散和向量分析的實用工具。系統也得到了增強。 自動化單元測試 對於代數模式,根據 nir_opt_algebraic 的定義產生測試。

後端編譯器,例如 ACO(AMD) 英特爾後端利用所有這些工作,產生更短的著色器,並優化指令管線和暫存器利用率。暫存器分配 (RA) 過程、呼叫處理(ACO 的一項重要新特性,它對函數呼叫和保留暫存器的溢位提供了一致的支援)、延遲分佈以及混合指令的使用(例如,具有不同舍入模式的 fma_mix16)都得到了改進。

測試環境、持續整合和穩定性

一個不太顯眼但至關重要的方面是大量的工作 持續測試基礎設施(CI)Mesa 26.0 包含更新的 CI 容器、測試核心(例如 Linux 6.17.3 及更高版本)、與 ci-tron、mupuf、broadcom、freedreno、Valve 等叢集的集成,以及測試套件的協調更新: VKCTS, GL/GLES CTS, 豬利特, ANGLE 以及其他一些程序,例如 vkd3d。

xfails 清單已調整並記錄。 著名的薄片硬體陣列不斷擴展(從樹莓派到 AMD GFX12 GPU,包括 Adreno A750 和 Mali G52/G610/G720,甚至還有像 Lavapipe 這樣基於 CPU 的後端)。所有這些都體現在變更日誌中,大量的提交記錄標記了修復的測試、現在穩定的測試,或涵蓋先前未測試場景的新夜間建置工作。

工具,例如 PERFETTOpps、u_trace 以及 Intel、AMD 和其他供應商的各種測量集成,從長遠來看,這會導致發現和改進越來越細微的瓶頸。

總體而言,Mesa 26.0 不僅帶來了無數的新擴展和內部更改,而且還鞏固了近年來的發展趨勢: 性能日益強大的開放式驅動Vulkan 和 OpenGL 的持續改進,AMD 的光線追蹤優化在實際遊戲中已經顯現,NVIDIA 的開源協定堆疊(NVK/Nouveau)也取得了顯著進展,此外,透過 Metal 技術,ARM、虛擬化和 macOS 等非傳統平台的效能也得到了大幅提升。對於那些每天使用 Linux 進行遊戲或圖形密集型工作的用戶來說,這個版本值得安裝並隨時測試,因為每個版本都在不斷進步。

司機表
相關文章:
Mesa 23.1.0 帶來了 OpenCL Rusticl 改進、對 Vulkan Video 的初始支持等