It's disappointing to hear about the 'dumb' switching Apple seems to be using. Because it's based on API calls, it sounds like it automatically kicks it into using the 330M as soon as anything requests to use a GPU and it won't switch back until that application quits. I can only assume this was done to simplify things so the user never has to know what is happening.
It's quite concerning to hear that if you load up a quicktime video in the browser, it will switch to the 330M and will only go back to the Intel graphics when you quit the browser entirely rather than stopping the video or closing/switching the tab.
I've seen demos of nVidia's Optimus technology on Windows and it looks like it works much better there. With flash video (yes, it's hardware accelerated on Windows, you have Apple to thank for the poor performance on OSX) it will activate the dedicated GPU for playback and when you switch/close the tab, it instantly goes back to the integrated graphics without having to close the entire browser. You are also able to set an application list as well if you want to force it to use the GPU or disable it with some applications where the Intel graphics will handle things just fine.
I would have thought the best solution would be to have the autodetection it uses now, but allow the user to override it. Ideally I would like to see:
- A global override setting that can be set in the energy saver preferences. This would let you choose Auto/Intel/nVidia depending on whether it is running off the mains or battery power. It would be nice to have quick access to this via the menu bar - add it as a sub menu to the battery status.
- Per-application settings. I'm imagining a preference pane similar to the spaces preferences. This would still let you take advantage of the automatic GPU switching, but let you force it off for applications that are 'misbehaving' and enabling the GPU when you don't want/need it, or give you the option to force it on when you do. (though it seems like the main problem is that it's too eager to use the 330M when it may not be necessary)
- It would also be good if this preference could be set based on whether the application is in the foreground or background. You shouldn't have to quit applications to go back to the Intel graphics. (I tend to leave Photoshop/Lightroom open all the time because they take a while to open for example) Or is this a bigger problem where you can't take programs 'off' the nVidia GPU once they're using it?
What I
hope is the case, is that Apple have given developers the ability to set whether or not their program uses the integrated graphics even if it uses API calls that would trigger the 330M but does not do anything the Intel graphics can't handle, and that we will see updates to programs that will fix this. It would also be nice if updated programs will be able to tell OSX whether or not they still need to use the GPU when they are in the background. Something using the GPU for video encoding would still need it for example, but other applications may only need it when they are active.
At the very least, I hope Apple will add a manual override to the energy saver preferences and its menu bar item. On the battery, you may want to force Intel graphics to extend battery life, even if it means degraded performance.