← Back to team overview

hybrid-graphics-linux team mailing list archive

Re: Macbook Pro graphics switching

 

Hi Andreas,

vga_switcheroo is a supported method since Bumblebee 3.0, but I assumed that
it would not be used for the nvidia driver. If you wish to use the nvidia
blob with
switcheroo, you have to recompile Bumblebee and apply commit
85636d1f21b0644e7dd47e3931479860c55b7a05 (or use the develop branch). The
next version will have this change too.

One shortcoming of vga_switcheroo now is that the state is messed up after
suspend: switcheroo remembered that the card was off, but in reality the
card
is on. The module bbswitch worked around this by enabling the card before
suspend and disabling the card on resume.

In some cases, while the card was turned off with switcheroo caused the
machine
to lock when the card is tried to be accessed. If switcheroo is not an
option for
Bumblebee, you can write your own switching code. See the src/switch/
directory
for examples.

Regards,
Peter
(Bumblebee and bbswitch developer)

On Tue, Feb 28, 2012 at 3:16 PM, Andreas Heider <andreas@xxxxxxxx> wrote:

> Hello everybody,
>
> I'm developing a vga_switcheroo driver for the Apple Macbook Pro models
> with switchable graphics and have a few questions about how to integrate
> it with the current linux hybrid graphics infrastructure.
>
>
> Apple implemented the switching using a "chip" dubbed the
> "gmux" (probably short for graphics multiplexer or something similar).
> The gmux can power down the external graphics card, switch the DDC,
> internal and external display connections (individually) between both
> cards and set the backlight brightness. Unlike most newer laptops with
> hybrid graphics, Apple's Macbook Pros use a physical mux.
>
> Luckily the gmux has remained mostly the same between all models with
> switchable graphics, so it should be possible to develop one driver that
> supports all of them.
>
>
> This driver has actually been lying around in unfinished state for some
> time now, until Seth Forshee from Canonical recently rewrote it into a
> clean, backlight-only driver that will hopefully find it's way into
> mainline soon.
>
> My goal is to use Seth's work as a base and add the other features back
> again and make it work well. A first version is already working and up
> at https://github.com/ah-/gmux
>
> This driver supports all vga_switcheroo operations (discrete power
> on/off, display switching) and they all work on my MBP 6,2 using the
> intel and nouveau drivers.
>
> But unfortunately, it doesn't work with bumbleebee and/or the proprietary
> nvidia driver yet.
>
>
> Because I'm using CUDA in other projects, getting the proprietary NVIDIA
> driver running well is very interesting to me. The setup bumblebee plus
> intel + nvidia_current without power management works well on my laptop
> if I switch to the intel card in grub. (It's just three outbs). But that
> breaks suspend and uses 10W more power than necessary.
>
> Does/should bumblebee work with a vga_switcheroo driver just for ON/OFF?
>
> One thing I stumbled upon is a patch for the proprietary NVIDIA
> driver originally written by "Kayo <kayo@xxxxxxxxxxxx>" which adds
> some kind of vga_switcheroo support to it. I modified it to just register
> with switcheroo (patch is attached), and that part works well. Turning
> off the card works, but turning it on afterwards doesn't. Any Ideas?
>
>
> Ultimately I'd like to get two scenarios/workflows to work well:
>
> 1. Real switching, by disabling one card completely and only using
> the other one, requiring a logout/login.
> Preferably using the NVIDIA driver.
>
> 2. Bumblebee switching with working power management when the NVIDIA
> GPU is not in usw.
>
>
> I'd appreciate any comments and thoughts on how to implement this and
> how to integrate it with the current hybrid graphics environment.
>
> Cheers,
> Andreas
>
> _______________________________________________
> Mailing list: https://launchpad.net/~hybrid-graphics-linux
> Post to     : hybrid-graphics-linux@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~hybrid-graphics-linux
> More help   : https://help.launchpad.net/ListHelp
>
>

Follow ups

References