Performance

如何檢查應用程序是否使用基於硬體或軟體的顯示渲染?

  • March 5, 2018

我的系統有一個GPU和一個共享的影片記憶體。我正在使用 Fedora 27。lspci輸出中的一些重要行如下。

00:02.0 VGA compatible controller: Intel Corporation Haswell-ULT Integrated Graphics Controller (rev 0b)
0a:00.0 Display controller: Advanced Micro Devices, Inc. [AMD/ATI] Sun LE [Radeon HD 8550M / R5 M230]

我從“如何檢查我的系統是否支持硬體加速?是在 CPU 上還是主機板上?”中了解到的。是它是一個決定是使用基於硬體還是基於軟體的渲染的應用程序。

Google Chrome可以選擇關閉硬體渲染的事實支持了這一點。

但是,在從gnome 3所有應用程序啟動應用程序時,可以選擇使用專用圖形啟動。

所以,我有兩個問題

  1. 誰來決定使用什麼渲染(啟動器Gnome 3或應用程序單獨或其他)?
  2. 如何檢查正在執行的應用程序正在使用什麼渲染?

對此的任何解釋都將受到高度讚賞。

這裡有很多問題。

首先,應用程序可以支持多種渲染方法,例如OpenGL和軟體渲染。如果應用程序以軟體呈現,則根本不會使用硬體加速(或最低限度,例如用於 blitting 操作等);當您在支持它的應用程序(Chrome,許多舊遊戲)中選擇軟體渲染時,通常會發生這種情況。如果應用程序使用 OpenGL 或類似的東西進行渲染,加速將取決於可用的硬體以及是否安裝了適當的驅動程序和庫。在大多數情況下,您將獲得硬體加速,尤其是在您使用 GNOME 3 時,因為這需要硬體加速(所以如果 GNOME 3 在非經典模式下啟動,您肯定可以使用某種形式的硬體加速)。

其次,在像您這樣具有兩個 GPU 的系統上,可以通過集成 GPU 或專用 GPU 提供加速。這通常不是由應用程序控制的,而是由核心使用VGA switcheroo控制的。最新版本的 GNOME 支持明確地使用集成 GPU 或專用 GPU 啟動應用程序;就是“使用專用顯卡啟動”選項確定的內容(有關詳細資訊,請參閱此部落格文章)。如果您“正常”啟動 OpenGL 應用程序,它將使用您的集成(英特爾)GPU 進行硬體加速;如果您使用“使用專用顯卡啟動”啟動它,它將使用您的專用 (AMD) GPU 進行硬體加速。

要確定正在執行的應用程序是否正在使用硬體渲染,至少在使用非專有驅動程序時,您可以找到應用程序的程序 id 然後執行

lsof -p ${pid} | grep /dev/dri

(替換${pid}為適當的值)。如果這輸出包含類似 的行/dev/dri/card0,則應用程序正在使用硬體渲染執行(卡號將告訴您它正在使用哪個 GPU — 將值/dev/dri/by-path與 PCI 標識符匹配);否則,它不是。

引用自:https://unix.stackexchange.com/questions/428197