直接渲染管理器

直接渲染管理器(英語:Direct Rendering Manager,通常縮寫為DRM ) 是Linux 內核的一個子系統,負責與現代顯示卡GPU介面。 DRM 向用戶空間公開了API ,程式可以使用該 API 向 GPU 傳送命令和數據並執行組態顯示器模式設置等操作。 DRM 最初是作為X Server直接渲染基礎設施[1]內核空間組件開發的,但從那時起,它已被其他圖形堆疊替代方案(例如Wayland)以及獨立應用程式和庫(例如SDL2Kodi)使用。

用戶空間程式可以使用DRM API來命令GPU進行硬件加速的3D渲染和影片解碼,以及GPGPU計算

概述

Linux 內核已經有一個名為fbdev的API ,用於管理圖形配接器幀緩衝區[2] ,但它無法滿足現代 GPU 的 3D 加速需求。此類裝置通常需要在專用的影像記憶體中設置和管理命令佇列,並將命令分派到 GPU,並且還需要管理該主記憶體中的緩衝區和可用空間。 [3]最初,用戶空間程式(例如X Server)直接管理這些資源,但它們通常假定它們是唯一訪問這些資源的程式。當兩個或多個程式試圖同時控制同一硬件並以自己的方式組態其資源時,大多數情況下都會導致災難性的後果。 [3]

沒有 DRM 的情況
有 DRM 的情況
DRM允許多個程式同時訪問3D顯示卡,避免衝突

DRM 旨在允許多個程式協同運作使用影片硬件資源。 [4] DRM 獲得對 GPU 的獨佔訪問權限,並負責初始化和維護命令佇列、主記憶體和任何其他硬件資源。希望使用 GPU 的程式向 DRM 傳送請求,DRM 充當仲裁者並避免衝突。

多年來,DRM 的範圍不斷擴大,涵蓋了以前由用戶空間程式處理的更多功能,例如幀緩衝區管理和模式設置、主記憶體共用對象和主記憶體同步。 [5] [6]其中一些擴充被賦予了特定的名稱,例如圖形執行管理器(GEM)或內核模式設置(KMS),並且當它們提供的功能被特別提及時,術語將佔主導地位。但它們實際上是整個內核 DRM 子系統的一部分。

在電腦中包含雙 GPU(一個獨立 GPU 和一個整合 GPU )的趨勢導致了GPU 切換等新問題,這些問題也需要在 DRM 層解決。為了匹配Nvidia Optimus技術,DRM提供了GPU解除安裝能力,稱為PRIME。 [7]

另見

參考

  1. ^ Linux kernel/drivers/gpu/drm/README.drm. kernel.org. [2014-02-26]. (原始內容存檔於2014-02-26). 
  2. ^ Uytterhoeven, Geert. The Frame Buffer Device. Kernel.org. [28 January 2015]. (原始內容存檔於2022-12-10). 
  3. ^ 3.0 3.1 White, Thomas. How DRI and DRM Work. [22 July 2014]. (原始內容存檔於2023-05-25). 
  4. ^ Faith, Rickard E. The Direct Rendering Manager: Kernel Support for the Direct Rendering Infrastructure. 11 May 1999 [12 May 2016]. (原始內容存檔於2016-05-24). 
  5. ^ Corbet, Jonathan. Memory management for graphics processors. LWN.net. 6 November 2007 [23 July 2014]. (原始內容存檔於2023-04-12). 
  6. ^ Packard, Keith; Anholt, Eric. GEM - the Graphics Execution Manager. dri-devel mailing list. 13 May 2008 [23 July 2014]. (原始內容存檔於2023-04-09). 
  7. ^ Airlie, Dave. GPU offloading - PRIME - proof of concept. 12 March 2010 [10 February 2015]. (原始內容存檔於10 February 2015). 



外部連結