当选择 iGPU 时,fglrx 在锁屏或关闭盖子时冻结

当选择 iGPU 时,fglrx 在锁屏或关闭盖子时冻结

我的系统有混合(我相信是无多路复用,即只有集成卡实际连接到显示器)图形。第一张卡是Intel HD 4400,第二张卡是AMD Radeon HD 8670M(太阳系系列,不是 OLAND)。因此,目前开源radeon驱动程序不支持该卡,我被迫使用专有fglrx驱动程序。

为什么不直接关闭没有 fglrx 的 dGPU 卡?

我不需要花哨的图形,只要它适当地已关闭,不会过热/耗电。对我来说,没有开关的选项fglrx似乎pxpress有限:我没有vgaswitcheroo开关(甚至在fglrx安装之前也没有),我只能推断这是因为radeon驱动程序尚不支持我的卡/尚未正确加载它,请参阅我的问题这里了解关于此内容和我尝试过的内容的更多信息。其他方法acpi_call被报告为最好的“概念验证”,最坏的情况是危险的,所以我宁愿不冒险使用它们。更可靠的项目只有bumbleebeenividia。

只需让 AMD 卡保持无驱动程序状态

仅依靠i915英特尔驱动程序就可以完美运行,没有错误,没有问题,但是 AMD 卡却无人认领,可能会导致过热/电池耗尽,所以我对此不太高兴。

带有 fglrx 的 Ubuntu 12.04 LTS

我从这里开始,在iGPU选择时遇到了一个错误。每当屏幕锁定、笔记本电脑盖关闭,甚至当计算机处于非活动状态xscreensaver且安装了类似的东西而没有启用锁屏时,都会出现此错误。它会导致黑屏,只有可移动的光标;切换 tty 并返回无法恢复,需要从 tty 重新启动。它不是每次都发生,但相当有规律地发生,至少每天发生一两次。所有保存的工作都会丢失。

我尝试了存储库中的版本fglrx以及 AMD 网站上的最新 13.10 版本。没有变化。

当选择 dGPU 时(从 AMD Catalyst 控制中心,或最终通过 pxpress),此错误不会发生,但我有另一个错误,我不会在这里讨论它。

带有 fglrx 的 Ubuntu 13.10

这里有一个非常相似的错误,但不那么严重。完全相同的条件,即锁屏、关闭盖子、不活动(如果正在使用 xscreensaver)。这次冻结的屏幕不是黑色,而是冻结时桌面的图片,同样带有可移动的光标。在这里我只尝试了最新的 fglrx AMD 驱动程序 13.10。

i915仅驱动程序(否)再次没有问题,fglrx并且选择再次没有问题dGPU

我尝试过的一些方法:

1) 禁用vsync。我在 compiz 设置管理器中尝试了此操作,然后aticonfig --sync-vsync=off重新启动。不用找了

Option "DPMS" "false"2)在监视器部分关闭 DPMS。xorg.conf(当然,我也将 gnome 设置更改为“不执行任何操作/不挂起”以用于电池和 AC)。不用找了

3)Option "AIGLX" "off"在服务器标志中xorg.conf不用找了

4)修改atieventsd以便它在 Ubuntu 上正常工作,请参阅我的帖子这里。还有,没有它也能跑步。不用找了

5)使用选项启动

Option      "Capabilities" "0x00000800"
Option      "KernelModuleParm" "locked-userpages=0"
Option      "NoAccel" "True"

xorg.conf设备节中。不用找了

6)使用nomodeset内核参数启动。不用找了

7)关闭acpi交互aticonfig

--acpi-services=off
--acpi-display-switch=off

不用找了

为什么它只适用于英特尔?

我不明白的一件事是为什么它只适用于英特尔i915驱动程序。我以为它pxpress会在启动时将控制权移交给该驱动程序,所以如果它单独使用i915,我本来希望它与 pxpress 选择一起使用igpu

我知道fglrx它也安装了自己的 libGl 实现,但是当选择英特尔卡时它会切换回旧的库存 MESA libGL 实现(参见/usr/lib/fglrx/switchlibGLpython 脚本)。

所以当igpu选择后,它应该fglrx与重启后的生活完全等同吗?

答案1

经过长时间的研究,我终于发现了关键点:当 fglrx/pxpress 加载英特尔驱动程序时,它会使用UXA加速方法,而默认情况下(在运行 13.10、安装 fglrx 之前的 Haswell 系统上),英特尔驱动程序会使用加速方法加载SNA

我通过xorg.conf如下方式启动进行测试:

Section "Device"
        Identifier      "Intel Graphics"
        Driver          "intel"
        Option          "AccelMethod"  "UXA" # (fglrx uses this) I can see the bug
        #Option          "AccelMethod"  "SNA" #(default) no bug!
EndSection

Section "Monitor"
           Identifier      "Configured Monitor"
EndSection

Section "Screen"
        Identifier      "Default Screen"
        Monitor         "Configured Monitor"
        Device          "Configured Video Device"
EndSection

现在,即使是英特尔,xorg.conf在关闭一两次盖子后也会出现冻结错误。然而,使用完全相同的配置文件启动,只需要

Option          "AccelMethod"  "SNA" 

无论关闭多少次盖子/锁定多少次屏幕,我都没有发现任何错误(无论如何,这是驱动程序的默认方法,这就是我感到困惑的原因,因为它欺骗了我,让我以为英特尔驱动程序一切都很好,而 fglrx 正在污染一切)。

现在我意识到这是一个英特尔驱动程序问题,谷歌搜索让我找到了解决办法。创建一个文件~/.drirc来配置 DRI 设置,其中包含

<device screen="0" driver="dri2">
        <application name="Default">
                <option name="vblank_mode" value="0"/>
        </application>
</device>

这将关闭vsync(该设置可让您的 GFX 卡与屏幕刷新率同步,而不是以其固有的帧速率加速,以避免撕裂)。注意:vsync使用 aticonfig 关闭是没有意义的,就像我的 OP 中那样,因为这只会关闭 dGPU 而不是英特尔卡。我不确定为什么我尝试使用 Compiz 设置管理器将其关闭却没有成功。

即使使用该UXA方法,通过这种方式关闭也vsync可以停止崩溃,即使对于也是如此fglrx xorg.conf

更好的办法是通过某种方式配置pxpress以使用选项加载英特尔驱动程序SNA,请参阅我的帖子这里

相关内容