this worked for me (hybrid with i915 - radeon redwood (5000), ubuntu 11.10 64, unity)
most laptop "hybrid equiped" boot with both gpu ON (could explain why batteries last so few with a fresh install of ubuntu and default GRUB settings), but with IGD (i915) connected (seems to be by default with no BIOS tweak)
Well, lets say your're allready logged in Unity (or Gnome):
Just want to power off DIS to save your batt (you'll probably gain about 30 to 40%+ time) ? issue that in a terminal
echo "OFF"|sudo tee /sys/kernel/debug/vgaswitcheroo/switch
But I can guess your're waiting for more than that... switch from IGD to DIS!
Ok, read : first logoff unity... yes, you need!
open another terminal with
CRTL-ALT-F1
login and stop lightdm (on which runs the Unity shell)
sudo service lightdm stop
connect discret gpu (right after pressing ENTER, your screen may flicker... that sounds good! or it may ... just freeze! depend your setup.
echo "DDIS"|sudo tee /sys/kernel/debug/vgaswitcheroo/switch
verify the status
sudo cat /sys/kernel/debug/vgaswitcheroo/switch
should get
0:IGD: :Off:0000:00:02.0
1:DIS:+:Pwr:0000:01:00.0
then what you need is start the lightdm-Unity GUI
sudo service lightdm start
At that point you should get a regular Ubuntu 11 login screen, if not, try pressing
CRTL-ALT-F7 and login running on the DIS GPU
if it don't work, your computer may have frozen. Try back
CRTL-ALT-F1
to get the terminal and restart.
If you succeed to connect and use your DIS GPU, you will switch back to default both gpu ON with IGD connected setting next time you'll restart...
That's a really poor hybrid GPU switch support... but it works. Should be possible to force your prefered GPU setting during boot, just after vgaswitcheroo is available and before lightdm starts.
Better could be with GRUB and menu choice... if anyone knows how to?
Greater could be a script to run inside Unity... I'm afraid it'll be hard to do, because lightdm must be restarted!
You need to install a proprietary driver by running
sudo apt-get install fglrx-updates
Then you can swithch to discrete graphics by
sudo aticonfig --px-dgpu
to integrated graphics by
sudo aticonfig --px-igpu
see status by
aticonfig --pxl
You can do it also in AMD Catlyst GUI program.
Best Answer
On my Ubuntu 18.04, I solved it this way. There is no need to edit
/etc/default/grub
file.Check that the integrated GPU is used by default by running
glxheads
Check that the discrete GPU is visible but
DynOff
Enable the discrete GPU for the
glxheads
and run it again. You can see that the renderer has changed.Additionally, while running
DRI_PRIME=1 glxheads
, in the different window check that now the discrete GPU isDynPwr
instead ofDynOff
So you need to run each application with
DRI_PRIME=1
in order to use discrete GPU. Also, you can set this environmental variable permanently https://unix.stackexchange.com/questions/117467/how-to-permanently-set-environmental-variables