ATENÇÃO: Esse artigo utiliza como distro o Ubuntu 10.10, mas pode ser adaptado com facilidade a qualquer distro que utilize o kernel 2.6.35 ou superior com debug habilitado, ou mesmo uma versão anterior que tenha o módulo vga_switchroo compilado e o debug habilitado.
O script aqui apresentado considera um computador com processador da linha Core-i e uma placa gráfica discreta da ATI. Placas gráficas Nvidia ainda não são suportadas.
No início do segundo semestre de 2010, uma série de notebooks baseados nos novos processadores Core-i da Intel fizeram sua entrada no mercado nacional, em especial os da linha dv4 da HP. Esses notebooks utilizam-se de uma tecnologia recente para GPUs (unidades de processamento gráfico, ou placas de vídeos) conhecida por "Hybrid Card", cuja função é tentar otimizar o uso da energia no computador.
A tecnologia Hibryd Card consiste de uma GPU discreta (offbord), em geral da série HD 4000 da ATI, combinada a uma GPU integrada (onbord) localizada no próprio processador da linha Core-i. A ideia é que, quando se estiver utilizando aplicações menos exigentes graficamente, ou mesmo quando o notebook estiver funcionando sem cabo de força conectado, a GPU integrada, que tem um consumo de energia dramaticamente menor e um desempenho gráfico também inferior, seja utilizada. E, no momento em que se necessitar de mais poder gráfico, ou quando o notebook estiver conectado a tomada, a GPU discreta seja utilizada.
No Windows, a própria ATI providencia junto com seu driver um software que realiza a mudança tanto automaticamente, baseando-se no fato do notebook estar ou não conectado a tomada, quanto manualmente, caso o usuário queira mudar de GPU independente desse fator. A mudança é imediata e não há necessidade de reiniciar o computador ou mesmo de sair do ambiente gráfico.
Já no
Linux, e consequentemente no Ubuntu, não há solução para realizar a mesma tarefa. Esse artigo propõe uma solução para realizar a alternância de GPU no Linux Ubuntu da forma mais próxima possível a que ela acontece no Windows.
O módulo vga_switcheroo
Até o kernel 2.6.33, não havia maneira de se realizar alternância entre GPUs a não ser através da seleção da placa padrão na BIOS, solução que não funcionava para os notebooks HP (e outros) devido ao bloqueio da mesma pelo fabricante.
Isso acontecia por não haver suporte no kernel pra essa ação. A partir do kernel 2.6.34 foi criado um módulo, o vga_switcheroo, que podia ser adicionado ao kernel e futuramente estaria presente por padrão no kernel 2.6.35, que visa permitir a troca a quente de GPU, ou seja, com o sistema rodando e sem necessidade de alteração nas configurações da BIOS. E é esse modulo que iremos utilizar.