直接渲染管理器
直接渲染管理器(英語:Direct Rendering Manager,通常縮寫為DRM ) 是Linux 內核的一個子系統,負責與現代顯卡的GPU接口。 DRM 向用戶空間公開了API ,程序可以使用該 API 向 GPU 發送命令和數據並執行配置顯示器模式設置等操作。 DRM 最初是作為X Server直接渲染基礎設施[1]的內核空間組件開發的,但從那時起,它已被其他圖形堆棧替代方案(例如Wayland)以及獨立應用程序和庫(例如SDL2和Kodi)使用。
用戶空間程序可以使用DRM API來命令GPU進行硬件加速的3D渲染和視頻解碼,以及GPGPU計算。
概述
[編輯]Linux 內核已經有一個名為fbdev的API ,用於管理圖形適配器的幀緩衝區[2] ,但它無法滿足現代 GPU 的 3D 加速需求。此類設備通常需要在專用的顯存中設置和管理命令隊列,並將命令分派到 GPU,並且還需要管理該內存中的緩衝區和可用空間。 [3]最初,用戶空間程序(例如X Server)直接管理這些資源,但它們通常假定它們是唯一訪問這些資源的程序。當兩個或多個程序試圖同時控制同一硬件並以自己的方式配置其資源時,大多數情況下都會導致災難性的後果。 [3]
DRM 旨在允許多個程序協作使用視頻硬件資源。 [4] DRM 獲得對 GPU 的獨占訪問權限,並負責初始化和維護命令隊列、內存和任何其他硬件資源。希望使用 GPU 的程序向 DRM 發送請求,DRM 充當仲裁者並避免衝突。
多年來,DRM 的範圍不斷擴大,涵蓋了以前由用戶空間程序處理的更多功能,例如幀緩衝區管理和模式設置、內存共享對象和內存同步。 [5] [6]其中一些擴展被賦予了特定的名稱,例如圖形執行管理器(GEM)或內核模式設置(KMS),並且當它們提供的功能被特別提及時,術語將占主導地位。但它們實際上是整個內核 DRM 子系統的一部分。
在計算機中包含雙 GPU(一個獨立 GPU 和一個集成 GPU )的趨勢導致了GPU 切換等新問題,這些問題也需要在 DRM 層解決。為了匹配Nvidia Optimus技術,DRM提供了GPU卸載能力,稱為PRIME。 [7]
另見
[編輯]參考
[編輯]- ^ Linux kernel/drivers/gpu/drm/README.drm. kernel.org. [2014-02-26]. (原始內容存檔於2014-02-26).
- ^ Uytterhoeven, Geert. The Frame Buffer Device. Kernel.org. [28 January 2015]. (原始內容存檔於2022-12-10).
- ^ 3.0 3.1 White, Thomas. How DRI and DRM Work. [22 July 2014]. (原始內容存檔於2023-05-25).
- ^ Faith, Rickard E. The Direct Rendering Manager: Kernel Support for the Direct Rendering Infrastructure. 11 May 1999 [12 May 2016]. (原始內容存檔於2016-05-24).
- ^ Corbet, Jonathan. Memory management for graphics processors. LWN.net. 6 November 2007 [23 July 2014]. (原始內容存檔於2023-04-12).
- ^ Packard, Keith; Anholt, Eric. GEM - the Graphics Execution Manager. dri-devel mailing list. 13 May 2008 [23 July 2014]. (原始內容存檔於2023-04-09).
- ^ Airlie, Dave. GPU offloading - PRIME - proof of concept. 12 March 2010 [10 February 2015]. (原始內容存檔於10 February 2015).
外部連結
[編輯]- DRM 主頁 (頁面存檔備份,存於網際網路檔案館)
- Linux GPU 驅動程序開發人員指南 (頁面存檔備份,存於網際網路檔案館)(以前稱為Linux DRM 開發人員指南)
- 嵌入式 Linux 會議 2013 - YouTube上的Embedded Linux Conference 2013 - Anatomy of an Embedded KMS driver