Мне известны некоторые другие темы по этой проблеме, но я пробовал варианты, найденные в тех, которые безуспешно:
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
и проверил, что modeset действительно равен 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
отсутствовать?
Я нашел этот
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, что также предполагает MUX-less
.
Таким образом, я, вероятно, никогда не смогу использовать VGA switcheroo.
Еще одно соображение заключается в том, что драйвер radeon
официально еще не поддерживает мою карту (кодовое название 8670M для солнечной системы Mars XT, не путать с OLAND). Таким образом, когда я загружаюсь с драйверами с открытым исходным кодом, я получаю сообщения типа No screens found
для Radeon. Учитывая, что switcheroo
для этого нужны Radeon и Intel, может произойти сбой, потому что драйвер Radeon не поддерживает мою карту.
Если это так, то возникает вопрос о том, как переключаться между картами ATI / Intel (без fglrx
) в системе MUX-less
.
Согласно это
MUXLESS SYSTEMS
Первое, что вам нужно сделать, это включить дискретный графический процессор если он еще не включен:
# echo ON > /sys/kernel/debug/vgaswitcheroo/switch
Убедитесь, что это сработало, выполнив эту команду еще раз:
# cat /sys/kernel/debug/vgaswitcheroo/switch
Теперь нам нужно узнать идентификаторы, которые xrandr присвоил вашим картам. Сделайте это снова как обычный пользователь, а не 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 имеют одинаковый идентификатор. В этом случае моя дискретная карта имеет идентификатор 69, а моя встроенная карта - идентификатор 108.
Последнее, что нам нужно, это сказать X, чтобы использовать ваш дискретный графический процессор для рендеринга:
$ 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.