/ sys / kernel / debug中没有vga / vgaswitcheroo(Ubuntu 13.10)

我知道这个问题的一些其他线程,但我尝试了那些没有成功的选项:

sudo su cat /sys/kernel/debug/vgaswitcheroo/switch 

 cat: /sys/kernel/debug/vgaswitcheroo/switch: No such file or directory 

可能是因为我的xorg.conf只设置了intel设备吗?

/sys/kernel/debug似乎已挂载,我没有任何古怪的启动选项:

 cat /proc/cmdline BOOT_IMAGE=/boot/vmlinuz-3.11.0-15-generic.efi.signed root=UUID=8a15962e- ad4d-4eb0-96af-37d167313e92 ro quiet splash vt.handoff=7 

对于modeset,我有:

 cat /sys/module/i915/parameters/modeset -1 

不确定这是不是问题? 但我也尝试使用i915.modeset=1 radeon.modeset=1选项启动,并validation模式集确实是1.我还检查了mount | grep /sys/kernel/debug mount | grep /sys/kernel/debug显示

 none on /sys/kernel/debug type debugfs (rw) 

所以这是正确安装的。

lshw -C display显示:

  *-display description: VGA compatible controller product: Haswell-ULT Integrated Graphics Controller vendor: Intel Corporation physical id: 2 bus info: pci@0000:00:02.0 version: 09 width: 64 bits clock: 33MHz capabilities: msi pm vga_controller bus_master cap_list rom configuration: driver=i915 latency=0 resources: irq:60 memory:f0000000-f03fffff memory:e0000000-efffffff ioport:5000(size=64) *-display description: Display controller product: Sun XT [Radeon HD 8670A/8670M/8690M] vendor: Advanced Micro Devices, Inc. [AMD/ATI] physical id: 0 bus info: pci@0000:06:00.0 version: 00 width: 64 bits clock: 33MHz capabilities: pm pciexpress msi bus_master cap_list rom configuration: driver=radeon latency=0 resources: irq:65 memory:d0000000-dfffffff memory:f0400000-f043ffff ioport:3000(size=256) memory:f0440000-f045ffff 

我的内核似乎是用适当的选项编译的:

 grep -i switcheroo /boot/config-* /boot/config-3.11.0-12-generic:CONFIG_VGA_SWITCHEROO=y /boot/config-3.11.0-15-generic:CONFIG_VGA_SWITCHEROO=y 

那么为什么vgaswitcheroo会丢失?

我找到了这个

 There are two versions of hybrd graphics: MUXed and MUX-less. MUXed have a display MUX to switch the displays between the discrete and integrated cards. MUXed systems can be switched using vgaswitcheroo. MUX-less do not have a display MUX and the displays are only connected to the integrated card. On MUX-less systems, the discrete card is solely for rendering, not display. X Server 1.14 is required to support rendering and display from different cards. Most new laptops (2011+) are MUX-less. 

所以我认为很可能我的系统(作为一台非常新近的笔记本电脑)没有MUX-less (即只有Intel卡实际连接到显示器),虽然我可以通过AMD Catalyst Control Centre “切换”(我应该勇敢/愚蠢地安装fglrx )这实际上只相当于:“高性能” – >将硬图形计算外包给dGPU然后通过iGPU重新路由显示,“低性能/良好电池” – >在iGPU上进行计算,然后直接发送到显示器。 我也无法在BIOS中切换GPU,这也表明MUX-less

因此,我可能永远无法使用VGA切换器。

另一个考虑因素是radeon驱动程序尚未正式支持我的卡(8670M代号为Mars XT太阳系系列,不要与OLAND混淆)。 因此,当我使用开源驱动程序启动时,我会收到消息,例如No screens found radeon的No screens found 。 鉴于switcheroo需要radeon和intel两者,它可能会以某种方式失败,因为radeon驱动程序不支持我的卡。

如果这是真的,则会导致在无MUX-less系统中如何在ATI / Intel卡(没有fglrx )之间切换的问题。


根据这个


MUXLESS SYSTEMS

您需要做的第一件事是打开你的独立GPU,如果它还没有打开:

 # echo ON > /sys/kernel/debug/vgaswitcheroo/switch 

通过再次发出此命令validation这是否有效:

 # cat /sys/kernel/debug/vgaswitcheroo/switch 

现在,我们必须知道xrandr分配给您的卡的ID。 再次以普通用户身份执行此操作,而不是root:

 $ xrandr --listproviders Providers: number : 3 Provider 0: id: 108 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 3 outputs: 4 associated providers: 2 name:Intel Provider 1: id: 69 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 6 outputs: 0 associated providers: 2 name:radeon Provider 2: id: 69 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 6 outputs: 0 associated providers: 2 name:radeon 

在我的情况下,3张卡被列出。 请注意,提供1和2都具有相同的ID。 在这种情况下,我的离散卡有id 69,我的集成卡有id 108。

最后我们需要它告诉X使用你的独立GPU进行渲染:

 $ xrandr --setprovideroffloadsink 69 108 

第一个数字是您的离散卡,第二个是您的集成卡。 要validation这是否有效:

 $ DRI_PRIME=1 glxinfo | grep renderer OpenGL renderer string: Gallium 0.4 on AMD TURKS 

你应该得到Gallium 0.4作为你的渲染器。 从现在开始,所有3D应用程序都将在您的ATI卡上呈现,无需重新启动X.

使用kubuntu 13.10在我的lenovo u400上工作。