我的系统有一个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
所有应用程序启动应用程序时,可以选择使用专用图形启动。
所以,我有两个问题
- 谁来决定使用什么渲染(启动器
Gnome 3
或应用程序单独或其他)? - 如何检查正在运行的应用程序正在使用什么渲染?
对此的任何解释都将受到高度赞赏。
这里有很多问题。
首先,应用程序可以支持多种渲染方法,例如OpenGL和软件渲染。如果应用程序以软件呈现,则根本不会使用硬件加速(或最低限度,例如用于 blitting 操作等);当您在支持它的应用程序(Chrome,许多旧游戏)中选择软件渲染时,通常会发生这种情况。如果应用程序使用 OpenGL 或类似的东西进行渲染,加速将取决于可用的硬件以及是否安装了适当的驱动程序和库。在大多数情况下,您将获得硬件加速,尤其是在您使用 GNOME 3 时,因为这需要硬件加速(所以如果 GNOME 3 在非经典模式下启动,您肯定可以使用某种形式的硬件加速)。
其次,在像您这样具有两个 GPU 的系统上,可以通过集成 GPU 或专用 GPU 提供加速。这通常不是由应用程序控制的,而是由内核使用VGA switcheroo控制的。最新版本的 GNOME 支持明确地使用集成 GPU 或专用 GPU 启动应用程序;这就是“使用专用显卡启动”选项确定的内容(有关详细信息,请参阅此博客文章)。如果您“正常”启动 OpenGL 应用程序,它将使用您的集成(英特尔)GPU 进行硬件加速;如果您使用“使用专用显卡启动”启动它,它将使用您的专用 (AMD) GPU 进行硬件加速。
要确定正在运行的应用程序是否正在使用硬件渲染,至少在使用非专有驱动程序时,您可以找到应用程序的进程 id 然后运行
(替换
${pid}
为适当的值)。如果这输出包含类似 的行/dev/dri/card0
,则应用程序正在使用硬件渲染运行(并且卡号将告诉您它正在使用哪个 GPU — 将值/dev/dri/by-path
与 PCI 标识符匹配);否则,它不是。