切换显卡时 GPU 挂起

切换显卡时 GPU 挂起

我有一台笔记本电脑(戴尔 Inspiron N4110),可切换显卡

$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
01:00.0 VGA compatible controller: ATI Technologies Inc NI Whistler [AMD Radeon HD 6600M Series] (rev ff)

通常情况下,我的笔记本电脑在启动时会启用两个显卡,这会导致笔记本电脑变得非常热,风扇变得非常吵。我一直在使用一个小脚本来禁用 Radeon 卡。一段时间以来,我对这种安排非常满意。

然而,我在使用英特尔卡 (IGD) 时遇到了一些问题,英特尔卡在运行 OpenGL 应用程序时经常随机挂起;所以我想再给 Radeon 卡 (DIS) 一次机会。

我从来没能切换到 Radeon 卡,但最近我发现,如果我进行“延迟切换”(DDIS):

# echo "DDIS" > /sys/kernel/debug/vgaswitcheroo/switch
root@lieryan-dell-ubuntu:/sys/kernel/debug/vgaswitcheroo# cat switch 
0:IGD:+:Pwr:0000:00:02.0
1:DIS: :Pwr:0000:01:00.0

然后我注销(即重新启动 X),屏幕切换到伪终端,然后它卡在那里冻结。在这种情况下,鼠标和键盘停止工作,所以我无法切换到另一个终端。我尝试从另一台计算机 ssh 来挽救日志(此时 dmesg) 等等;我发现,当冻结时,活动显卡是 AMD 卡:

-- this is from ssh --
# cat switch 
0:IGD: :Off:0000:00:02.0
1:DIS:+:Pwr:0000:01:00.0

但 GPU 显然挂了,查看 dmesg 显示:

...
[ 1411.649974] vga_switcheroo: client 0 refused switch
[ 1411.649985] vga_switcheroo: setting delayed switch to client 1
[ 1423.911759] vga_switcheroo: processing delayed switch to 1
[ 1424.006564] fbcon: Remapping primary device, fb1, to tty 1-63
[ 1424.006799] i915: switched off
[ 1424.840351] [drm:drm_mode_getfb] *ERROR* invalid framebuffer id
[ 1425.718088] [drm:drm_mode_getfb] *ERROR* invalid framebuffer id
[ 1426.622377] [drm:drm_mode_getfb] *ERROR* invalid framebuffer id
[ 1427.355683] [drm:drm_mode_getfb] *ERROR* invalid framebuffer id
[ 1428.193549] [drm:drm_mode_getfb] *ERROR* invalid framebuffer id
... the invalid framebuffer id error is repeated for many times over ...

通过切换回 Intel 卡并从 ssh 重新启动 X,我能够成功恢复;这表明只有 Radeon 卡在切换时存在问题。

系统信息:

$ uname -a
Linux lieryan-dell-ubuntu 3.0.0-14-generic #23-Ubuntu SMP Mon Nov 21 20:28:43 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 11.10
Release:    11.10
Codename:   oneiric

笔记本电脑也没有在 BIOS 中设置显卡的选项,专有驱动程序 fglrx 也从未工作过;当我通过 jockey(“附加驱动程序”)安装它时,glxinfo 显示它仍然由 Mesa 渲染,/sys/kernel/debug/vgaswitcheroo 目录已丢失,如果我使用 xorg.conf 告诉 X 使用 fglrx,驱动程序会崩溃并出现回溯。

有人知道是否可以将此 AMD 卡与 radeon 或 fglrx 驱动程序一起使用吗?

日志:

答案1

答案2

@Exas 难以置信它终于起作用了!至于记录,这是我的设置。

$ lspci|删除 VGA

00:02.0 VGA 兼容控制器:英特尔公司第二代酷睿处理器系列集成图形控制器(rev 09) 01:00.0 VGA 兼容控制器:Advanced Micro Devices [AMD] nee ATI Seymour [Radeon HD 6400M 系列]

@TomBrossman 是的 /sys/kernel/debug/vgaswitcheroo/ 不见了,但安装 Catalyst 驱动程序后总是会丢失。如果它能正常工作,那应该会是个问题。

严格按照ubuntu论坛。但是我下载了 catalyst 12.4 二进制文件。完成上述链接中的步骤 2 后,重新启动后,您可以检查以下内容以查看您的 ATI 卡是否已启用。

$ aticonfig --pxl

PowerXpress:独立 GPU 处于活动状态(高性能模式)。

$ fglrxinfo

显示::0 屏幕:0 OpenGL 供应商字符串:Advanced Micro Devices, Inc. OpenGL 渲染器字符串:AMD Radeon HD 6400M 系列 OpenGL 版本字符串:4.2.11631 兼容性配置文件上下文

$ fgl_glxgears

使用 GLX_SGIX_pbuffer

5.0 秒内 1100 帧 = 220.000 FPS

5.0 秒内 1286 帧 = 257.200 FPS

你不会再遇到那些燃烧的风扇了。不过要注意的一点是,它可能不会提供与集成显卡一样多的电池性能,因此你可能需要更换显卡以获得高性能和电池。请参阅该帖子的第 3 步以了解如何更换显卡。

切换到集成硬盘 3000(sudo aticonfig --px-igpu)并注销并登录后,发现以下输出

$ glxgears

与垂直刷新同步运行。帧速率应与显示器刷新率大致相同。5.0 秒内 303 帧 = 60.457 FPS

$ fgl_glxgears

使用 GLX_SGIX_pbuffer 5.0 秒内 245 帧 = 49.000 FPS 5.0 秒内 300 帧 = 60.000 FPS

如果您想启动集成显卡而不是独立 AMD 显卡,您可以考虑在 /etc/rc.local 中写入切换命令

干杯!!

相关内容