Não vga / vgaswitcheroo em / sys / kernel / debug (Ubuntu 13.10)

3

Estou ciente de alguns dos outros tópicos sobre este problema, mas tentei as opções encontradas naqueles sem sucesso:

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

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

Poderia ser porque meu xorg.conf está apenas configurando o dispositivo intel?

O /sys/kernel/debug parece estar montado e não tenho opções de inicialização peculiares:

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

Para o modeset eu tenho:

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

Não tem certeza se isso é um problema ou não? Mas eu também tentei inicializar com as opções i915.modeset=1 radeon.modeset=1 , e verifiquei que o modeset é de fato 1. Eu também verifiquei mount | grep /sys/kernel/debug mostrou

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

, então isso está montado corretamente.

lshw -C display mostra:

  *-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

Meu kernel parece estar compilado com as opções adequadas:

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

Então, por que vgaswitcheroo estaria faltando?

    
por fpghost 20.01.2014 / 14:37

2 respostas

4

Eu encontrei este

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.

Portanto, é altamente provável que meu sistema (sendo um laptop recente) seja MUX-less (ou seja, apenas a placa Intel esteja realmente conectada ao monitor) e embora eu possa "alternar" através do AMD Catalyst Control Centre ( devo ser corajoso / tolo o suficiente para instalar fglrx ) isso realmente apenas equivale a: "Alto desempenho" - > terceirizar cálculos gráficos rígidos para dGPU, em seguida, redirecioná-los de volta através do iGPU para exibição, "Baixo desempenho / boa bateria" - > faça cálculos no iGPU e envie diretamente para exibição. Eu também não tenho capacidade de alternar GPUs no BIOS, o que também sugere MUX-less .

Assim, provavelmente nunca poderei usar o switcheroo VGA.

Uma outra consideração é que o driver radeon ainda não suporta oficialmente o meu cartão (o nome de código 8670M da série do sistema solar Mars XT, não deve ser confundido com o OLAND). Assim, quando inicializo com drivers de código aberto, recebo mensagens como No screens found para o radeon. Dado que switcheroo precisa de radeon e intel tanto para lá, poderia ser de alguma forma falhando porque o driver radeon não suporta meu cartão.

Se isso for verdade, isso leva à questão de como se alterna entre cartões ATI / Intel (sem fglrx ) em um sistema MUX-less .

    
por fpghost 22.01.2014 / 09:41
1

De acordo com este

MUXLESS SYSTEMS

A primeira coisa que você precisa fazer é ativar sua GPU discreta, caso ainda não esteja ativada:

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

Verifique se isso funcionou emitindo este comando novamente:

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

Agora, temos que saber os IDs que xrandr atribuiu aos seus cartões. Faça isso como o usuário regular novamente, não como 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

No meu caso, 3 cartões são listados. Observe que ambos fornecem 1 e 2 possuem o mesmo id. Neste caso, o meu cartão discreto tem o id 69 e o meu cartão integrado tem o id 108.

Por fim, precisamos que o X use sua GPU para renderização:

$ xrandr --setprovideroffloadsink 69 108

Onde o primeiro número é o seu cartão discreto e o segundo é o seu cartão integrado. Para verificar isso funcionou:

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

Você deve obter o Gálio 0,4 como seu renderizador. A partir de agora, todos os seus aplicativos 3D serão renderizados na sua placa ATI, sem a necessidade de reiniciar o X.

Trabalhei na minha Lenovo U400 com o Kubuntu 13.10.

    
por Pablo R 02.03.2014 / 21:30