Hybrid ATI/ATI - Intel/ATI solution: small switcheroo how to
First of all, this "how to" is intended to people like me with almost no knowledge about compiling and patching kernels. Also to people that may want to share their experience using the switcheroo patch from David Airlie with their own machines with switchable graphics.
Notes:
GNU/Linux used: Fedora 12 with all updates
Machine: ASUS M51Ta
Graphic card configuration:
- Integrated: 01:05.0 VGA compatible controller: ATI Technologies Inc RS780M/RS780MN [Radeon HD 3200 Graphics]
- Discrete: 02:00.0 VGA compatible controller: ATI Technologies Inc Mobility Radeon HD 3650
(0) Downloads:
http://www.kernel.org/pub/linux/kern...33-rc7.tar.bz2 and untar it to: /usr/src/
http://people.freedesktop.org/~airli...ation-v6.patch and copy it to: /usr/src/
http://people.freedesktop.org/~airli...ondition.patch and copy it to: /usr/src/
(1) Patch kernel & compile kernel:
su
cd /usr/scr/linux-2.6.33-rc7/
patch -p1 <../0001-vga_switcheroo-initial-implementation-v6.patch
patch -p1 <../0002-vga-switch-hi-my-name-is-race-condition.patch
make mrproper
cp /boot/config-"kernel" .config # in my case: "kernel" = 2.6.31.12-174.2.3.fc12.x86_64
yum install qt3-devel gcc-c++ libXi-devel # install development tools (just in case)
make xconfig # make changes and save before quitting
make
make modules_install
cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.33-rc7
cp System.map /boot/System.map-2.6.33-rc7
install mkinitrd
new-kernel-pkg -v --mkinitrd --depmod --install 2.6.33-rc7
gedit /boot/grub/menu.lst # edit grub to add the new compiled kernel
(2) Run the new kernel and test:
su
mount -t debugfs none /sys/kernel/debug
cd /sys/kernel/debug/vgaswitcheroo
cat switch # to see which card is active
echo DDIS > switch # to go to discrete card (log off and then log in after this command)
echo DIGD > switch # to go to integrated card (log off and then log in after this command)
echo OFF > switch # to just poweroff the card you aren't using
(3) My tests:
[root@FEDORA12x64test vgaswitcheroo]# cat switch
0:+:Pwr:0000:01:05.0
1: :Off:0000:02:00.0
[root@FEDORA12x64test vgaswitcheroo]# glxgears
1918 frames in 5.0 seconds = 383.455 FPS
2090 frames in 5.0 seconds = 417.909 FPS
2147 frames in 5.0 seconds = 429.261 FPS
[root@FEDORA12x64test vgaswitcheroo]# cat switch
0: :Off:0000:01:05.0
1:+:Pwr:0000:02:00.0
[root@FEDORA12x64test vgaswitcheroo]# glxgears
1683 frames in 5.0 seconds = 336.440 FPS
1618 frames in 5.0 seconds = 323.554 FPS
1735 frames in 5.0 seconds = 346.940 FPS
In my case there was no 3D acceleration with this kernel, even if I installed "mesa-dri-drivers-experimental". I think it is because the firmware R600_rlc.bin was missing in /lib/firmware/radeon. Anyway, the switcheroo works great. May be with the next stable kernel all will work with 3D acceleration. Special thanks to David Airlie that explained me how to use his switcheroo.
update with kernel-2.6-git 2010-02-12
Yesterday I made exactly the same process but this time I used kernel-2.6-git instead of using kernel linux-2.6.33-rc7:
su
cd /usr/src/
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
cd linux-2.6-git/
patch -p1 <../0001-vga_switcheroo-initial-implementation-v6.patch
patch -p1 <../0002-vga-switch-hi-my-name-is-race-condition.patch
make mrproper
(...)
This time 3D acceleration works great!! I tested with a software to visualize and manipulate 3D images. It works perfect. Compiz also works faster and the computer is not as hot as before.
desktop launchers for hybrid switch ASUS M51Ta
# first of all, to use these two launchers you will need this program:
$ yum install beesu
These two desktop launchers can be used to switch graphics when the computer is iniciated. They work great on my laptop ASUS M51Ta. Like both cards are on when the computer is turned on, to use HD3200 card (integrated one) I just have to turn off the HD3650; so this launcher is used:
# this should be copied on an "file.desktop" (you sould give it execute permission):
[Desktop Entry]
Version=1.0
Encoding=UTF-8
Name=HD3200 switch
Exec=beesu 'mount -t debugfs none /sys/kernel/debug ; cd /sys/kernel/debug/vgaswitcheroo/ ; echo OFF > switch'
Type=Application
Categories=Other;
Icon=media-flash
Terminal=false
And to use the discrete card (HD3650), it must switch and logout with this other launcher, then you login and the switch is made:
[Desktop Entry]
Version=1.0
Encoding=UTF-8
Name=HD3650 switch
Exec=beesu 'mount -t debugfs none /sys/kernel/debug ; cd /sys/kernel/debug/vgaswitcheroo ; echo DDIS > switch ; killall -u USERNAME'
Type=Application
Categories=Other;
Icon=media-flash
Terminal=false
# change USERNAME -> your user name
I hope this helps to others trying to use hybrid graphics in their laptops. Don't hesitate to write to
hybrid-graphics-linux@lists.launchpad.net
https://launchpad.net/~hybrid-graphics-linux