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

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

我的系统有一个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. 如何检查正在运行的应用程序正在使用什么渲染?

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

答案1

这里有很多问题。

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

其次,在像您这样具有两个 GPU 的系统上,可以通过集成 GPU 或专用 GPU 提供加速。这一般是不是由应用程序控制,但由内核控制,使用VGA切换器。最新版本的 GNOME 支持显式使用集成 GPU 或专用 GPU 启动应用程序;是“使用专用显卡启动”选项决定的(请参阅这篇博文了解详情)。如果您“正常”启动 OpenGL 应用程序,它将使用您的集成 (Intel) GPU 进行硬件加速;如果您使用“使用专用显卡启动”来启动它,它将使用您的专用 (AMD) GPU 进行硬件加速。

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

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

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

相关内容