如何检查应用程序正在使用基于硬件或软件的显示渲染?

Abh*_*ose 2 performance hardware gpu

我的系统有一个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]
Run Code Online (Sandbox Code Playgroud)

我从“如何检查我的系统是否支持硬件加速?是在CPU上还是主板上?”中了解到的内容 是它是一个决定是否使用基于硬件或软件的渲染的应用程序。

Google Chrome可以选择关闭硬件渲染这一事实支持了这一点。

但是,在从所有应用程序启动应用程序时,gnome 3都可以选择使用专用图形启动。

所以,我有两个问题

  1. 谁决定使用什么渲染(启动器Gnome 3或仅应用程序或其他)?
  2. 如何检查正在运行的应用程序正在使用什么渲染?

对此的任何解释都受到高度赞赏。

Ste*_*itt 6

这里有很多问题。

\n\n

首先,应用程序可以支持多种渲染方法,例如OpenGL和软件渲染。如果应用程序以软件方式呈现,则根本不会使用硬件加速(或最少使用,例如用于位图传输操作等);当您在支持软件渲染的应用程序(Chrome、许多旧游戏)中选择软件渲染时,通常会发生这种情况。如果应用程序使用 OpenGL 或类似的东西进行渲染,加速将取决于可用的硬件以及是否安装了适当的驱动程序和库。在大多数情况下,您\xe2\x80\x99将获得硬件加速,特别是如果您\xe2\x80\x99正在使用GNOME 3,因为这需要硬件加速(因此,如果GNOME 3以非经典模式启动,您\xe2\x80\x99将确保某种形式的硬件加速可用)。

\n\n

其次,在像您这样具有两个 GPU 的系统上,可以通过集成 GPU 或专用 GPU 提供加速。这通常不是由应用程序控制,而是由内核使用VGA switcheroo控制。最新版本的 GNOME 支持显式使用集成 GPU 或专用 GPU 启动应用程序;\xe2\x80\x99s由\xe2\x80\x9cLaunch using Dedicated Graphics Card\xe2\x80\x9d 选项决定(有关详细信息,请参阅此博客文章)。如果您启动 OpenGL 应用程序 \xe2\x80\x9c,通常 \xe2\x80\x9d,它将使用您的集成 (Intel) GPU 进行硬件加速;如果您使用 \xe2\x80\x9cLaunch 使用专用显卡 \xe2\x80\x9d 启动它,它将使用您的专用 (AMD) GPU 进行硬件加速。

\n\n

要确定正在运行的应用程序是否正在使用硬件渲染,至少在使用非专有驱动程序时,可以找到 application\xe2\x80\x99s 进程 id 然后运行

\n\n
lsof -p ${pid} | grep /dev/dri\n
Run Code Online (Sandbox Code Playgroud)\n\n

(替换${pid}为适当的值)。如果输出的行包含类似 的内容/dev/dri/card0,则应用程序正在使用硬件渲染运行(并且卡号将告诉您使用 \xe2\x80\x94 与/dev/dri/by-pathPCI 标识符中的值匹配的 GPU\xe2\x80\x99);否则,\xe2\x80\x99 就不是。

\n