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

/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只设置了英特尔设备?

似乎/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

对于模式集我有:

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

不太确定这是否是个问题?但我也尝试过使用这些i915.modeset=1 radeon.modeset=1选项进行启动,并验证了模式集确实是 1。我还检查了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失踪呢?

答案1

我发现

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(即只有英特尔卡实际连接到显示器),尽管我可以通过“切换” AMD Catalyst Control Centre(我应该勇敢/愚蠢地安装fglrx)但这实际上只是:“高性能”->将硬图形计算外包给dGPU,然后通过iGPU重新路由它们进行显示,“低性能/电池好”->在iGPU上进行计算,然后直接发送到显示器。我也没有能力在BIOS中切换GPU,这也表明MUX-less

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

另一个考虑因素是radeon驱动程序尚未正式支持我的显卡(8670M 代号 Mars XT 太阳系系列,不要与 OLAND 混淆)。因此,当我使用开源驱动程序启动时,我收到类似No screens foundradeon 的消息。考虑到switcheroo需要 radeon 和 intel 才能使用,这可能是因为 radeon 驱动程序不支持我的显卡而导致的。

如果这是真的,就会引起一个问题:如何fglrx在系统中在 ATI/Intel 卡之间切换(无需)MUX-less

答案2


根据


无复用系统

您需要做的第一件事就是打开独立 GPU(如果尚未打开):

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

通过再次发出此命令来验证其是否有效:

# 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

第一个数字是您的独立卡,第二个数字是您的集成卡。要验证此操作是否有效:

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

您应该使用 Gallium 0.4 作为渲染器。从现在起,您的所有 3D 应用程序都将在 ATI 卡上渲染,无需重新启动 X。

在我的 lenovo u400 上安装 kubuntu 13.10。

相关内容