圖形處理器
圖形處理器 (graphics processing unit, GPU) 是計算機中負責生成顯示器所顯示畫面的硬體,也經常(不嚴謹地)稱為顯卡 (graphics card)。存在兩種類型的設備:集成顯卡 (integrated GPU, iGPU) 和獨立顯卡 (discrete GPU, dGPU)。在中文語境下,有時集成顯卡也會不嚴謹地稱為「核顯」。
由於 GPU 擅長並行計算,因此催生了通用圖形處理器 (GPGPU)。
安裝
Linux 內核中已經包含了用於硬體加速幀緩衝的顯卡驅動。然而,OpenGL、Vulkan、硬體視頻加速和 Xorg 的 2D 加速仍然需要用戶空間驅動支持。
首先,識別設備型號(輸出中的第一行以及 Subsystem 一項顯示了具體型號):
$ lspci -v -nn -d ::03xx
::03 表示「顯示控制器 PCI 設備類」,並且 xx 表示「該類的任何子類」。您可以在安裝 hwdata包 後,在 /usr/share/hwdata/pci.ids 文件中搜索 Display controller 查看。然後,安裝所需的顯卡驅動。參閱下方三個品牌的表格。
對於 32 位軟體,需要啟用 multilib 倉庫並安裝以 lib32- 為前綴的用戶空間驅動,例如 lib32-mesa包、lib32-vulkan-radeon包、lib32-nvidia-utils包 等等。
對於 X11,其它 Device Dependent X (DDX) 驅動可以在 xorg-drivers包組 中找到,或者可以搜索 xf86-video。大部分情況下,您不需要安裝任何 DDX 驅動;詳情參閱 Xorg#驅動安裝。
AMD
AMD 支持開源驅動。曾經提供過一個專有驅動,但已經不再打包了。[1][2]
有關各個 GPU 家族對 VA-API 的支持情況,參閱硬體視頻加速#對照表了解詳情。
| 文檔 | GPU 家族 | DRM 驅動 | OpenGL | Vulkan | VA-API |
|---|---|---|---|---|---|
| AMDGPU | GCN 3 及更新(如 RDNA 1-4) | 包含在 Linux 中 | mesa包 | vulkan-radeon包 | mesa包 |
| AMDGPU1 / ATI | GCN 1&2 | 取決於選擇的驅動 | |||
| ATI | TeraScale 1-3 | 無 | |||
| R300 到 R500 | 無 | ||||
| R100 & R200 | mesa-amber包 | ||||
| Rage 4 及更舊 | 無可用驅動 [3][4] | ||||
- 自從 linux包≥6.19 以來默認啟用,但其餘版本也可以手動選擇驅動
Intel
Intel 提供並支持開源驅動,除了舊的基於 PowerVR 的顯卡(GMA 3600 系列)不支持以外。
有關各個 GPU 家族對 VA-API 的支持情況,參閱硬體視頻加速#對照表了解詳情,下面只列出了軟體包。
| 文檔 | GPU 家族 | DRM 驅動 | OpenGL | Vulkan | VA-API |
|---|---|---|---|---|---|
| Intel 圖形處理器 | Gen 12.1 及更新 | 包含在 Linux 中 | mesa包 | vulkan-intel包1 | intel-media-driver包 |
| Gen 8 到 11 |
intel-media-driver包 或舊版 libva-intel-driver包 |
||||
| Gen 7 & 7.5 | libva-intel-driver包 | ||||
| Gen 5 & 6 | 無 | ||||
| Gen 3 到 4.5 | 無 | ||||
| Gen 2 | mesa-amber包 | ||||
| Gen 1 | 無可用驅動 [5] | ||||
- Gen 7 和 7.5 只有不完整的支持,Gen 8 被限制在 Vulkan 1.3。
NVIDIA
NVIDIA 不支持完全開源的驅動。他們從 2022 年起改為使用一種混合方案(開源內核 DRM 驅動和閉源用戶空間驅動)。
參閱硬體視頻加速#NVIDIA以了解支持哪些 API,並參閱硬體視頻加速#VDPAU 驅動了解各個 GPU 家族的支持詳情。
| 許可 | 文檔 | GPU 家族 | DRM 驅動 | OpenGL | Vulkan |
|---|---|---|---|---|---|
| 開源 | Nouveau1 | Kepler (NVE0/GKXXX) 及更新 | 包含在 Linux 中 | mesa包 | vulkan-nouveau包 |
| Rankine (NV30) 到 Fermi (NVC0/GF1XX) | 無 | ||||
| Fahrenheit (NV04/05) 到 Kelvin (NV20) | mesa-amber包 | ||||
| 開源 DRM 驅動、專有用戶空間驅動 | NVIDIA1 | Turing (NV160/TUXXX) 及更新 | nvidia-open包 | nvidia-utils包 | |
| 專有 |
Maxwell (NV110/GMXXX) 到 Ada Lovelace (NV190/ADXXX) |
nvidia-580xx-dkmsAUR | nvidia-580xx-utilsAUR | ||
| Kepler (NVE0/GKXXX) | nvidia-470xx-dkmsAUR | nvidia-470xx-utilsAUR | |||
| Fermi (NVC0/GF1XX) | nvidia-390xx-dkmsAUR | nvidia-390xx-utilsAUR | 無 | ||
| Tesla (NV50/G80-90-GT2XX) | nvidia-340xx-dkmsAUR | nvidia-340xx-utilsAUR | |||
| Curie (NV40/G70) 及更舊 | 不再打包 | ||||
- 對於同時使用集成顯卡和獨立顯卡、且啟用了 NVIDIA Optimus 的筆記本電腦,參閱 NVIDIA Optimus。
加載
大部分驅動的內核模塊會在系統啟動時自動加載。
如果沒有自動加載,那麼:
監控
監控 GPU 的工具經常用於查看 GPU 的溫度、核心和顯存 (VRAM) 使用率、以及 P-state。
CLI
- amdgpu_top — 顯示 AMDGPU 使用率的工具
- nvtop — 支持 AMD、Intel 和 NVIDIA 的 GPU 進程監視器
- radeontop — GPU 使用率查看器,支持顯示總體的活動百分比和各個部分的使用情況。支持 ATI R600 或更新的顯卡,以及使用 AMDGPU 驅動的顯卡。
- nvidia-smi — NVIDIA 專有驅動捆綁的命令行監控工具,支持 Fermi 或更新的 NVIDIA GPU
GUI
- amdgpu_top — 顯示 AMDGPU 使用率的工具
- AmdGuid — 一個基礎的風扇控制 GUI,完全使用 Rust 編寫
- Radeon Profile — 用於讀取和更改 AMD Radeon 顯卡當前時鐘頻率的 Qt5 工具
- TuxClocker — 基於 Qt5 的監控和超頻工具
- Plasma System Monitor — 一個顯示系統傳感器、進程信息和其它系統資源的界面。捆綁在 KDE Plasma 中。
- LACT — 在 Linux 系統上控制您的 AMD、Nvidia 或 Intel GPU