NVIDIA Optimus - Truly Seamless Switchable Graphics and ASUS UL50Vf
by Jarred Walton on February 9, 2010 9:00 AM ESTOptimus: Recognizing Applications
Beyond addressing the problems with switching between IGP and dGPU, the Optimus driver has also been re-architected to provide an extensible framework that allows NVIDIA to support new applications with minimal effort. We've seen application profiling in graphics drivers for a while now, but Optimus adds a new type of profiling. Whereas gaming profiles are generally designed to get optimal performance out of the graphics hardware, Optimus is intended to provide an ideal platform for a variety of tasks. If an application can benefit from running on a discrete GPU, the Optimus driver will route the necessary calls to the dGPU. Likewise, if an application doesn't need any extra performance/features, the calls get routed to the IGP for rendering. The idea is that Optimus will use the GPU if there's a performance, quality, and/or power saving benefit.
At present, Optimus recognizes applications based on the executable file name. In some cases, the recognition goes a little deeper. For example, surfing the Internet generally won't benefit from the dGPU; however, if you happen to be viewing a Flash video (and you have the Flash 10.1 beta installed for your browser), Optimus will power up the GPU and begin routing calls through the video processing engine. Close the Flash video website and the GPU can turn off again. Similarly, if you load up a media player application, the GPU won't be necessary if you're dealing SD content but it would be enabled for HD content (and this can be changed depending on the hardware if necessary). Optimus should activate the dGPU any time a user requires DXVA, DirectX (OpenGL), or CUDA features.
The big change in application profiling is that the profiles are now separate from the main graphics driver. NVIDIA has created a robust infrastructure to deal with automatically downloading and updating the profiles, with user customizable options directing how frequently this should occur. This means that unlike SLI support, where a fully functional profile might require one or two releases before it's integrated into the standard NVIDIA drivers, NVIDIA can add applications that can benefit from a GPU to the Optimus profile list within days or perhaps even hours.
What's more, it's possible to add an application yourself if necessary. As an example, our Steam version of Batman: Arkham Asylum wasn't enabling the dGPU initially; we added a profile pointing at the Steam Batman EXE and the problem was solved. Ideally, we shouldn't have had to do that, and if "only 1%" of users ever manually switch between IGP and dGPU before, we suspect far less than 1% would be willing to manually add an application to the Optimus profile list. Hopefully NVIDIA will be able to push out regular profile updates for such omissions quickly.
The automatic updating of Optimus profiles also raises the possibility of using automatic updates for other areas. The big one is going to be SLI profile support, and while it isn't part of the current program it sounds as though NVIDIA intends to add that feature down the road. Once the infrastructure is in place and the drivers support a separate profile download, it should be relatively easy to get SLI profiles in a similar manner. It would also be interesting to see NVIDIA allow users to "suggest" applications for Optimus support through the drivers—i.e., anything that a user has manually added could be uploaded to the server, and if an application name gets enough hits NVIDIA would be more likely to enable support. Naturally, there would be some privacy concerns with such a scheme and some users wouldn't want to participate in such a program, but it might be useful.
As an aside, we've wanted AMD/ATI to enable manual user profiling of games for CrossFire for some time. They still haven't done that, and now NVIDIA has taken things a step further and separated the profiles from the main drivers. This is definitely an improvement over previous profiling schemes and it's something we hope to see more of in the future—from both AMD as well as NVIDIA.
49 Comments
View All Comments
jkr06 - Saturday, February 27, 2010 - link
From all the articles I read, one thing is still not clear to me. I have a laptop with core i5(which has IGP) and nvidia 330M. So can I utilize the optimus solution with just SW. Or the laptop manufacturers specifically need to add something to truly make it work.JonnyDough - Friday, February 19, 2010 - link
was a wasted effort. Seems sort of silly to switch between two GPU's when you can just use one powerful one and shut off parts of it.iwodo - Thursday, February 18, 2010 - link
First, the update, they should definitely set up something like Symantec or Panda Cloud Database, where users input are stored and shared and validated worldwide. The amount of games that needs to be profiled is HUGE. Unless there is a certain simple and damn clever way of catching games. Inputting every single games / needed apps running exe names sounds insane to me. There has to be a much better way to handle this.I now hope Intel would play nice, and gets a VERY power efficient iGPU inside SandyBridge to work with Optimus, Instead of botching even more transistors for GPU performance.
secretanchitman - Saturday, February 13, 2010 - link
any chance of this going to the macbook pros? im hoping when they get updated (soon i hope), it will have some form of optimus inside. if not, something radeon based.strikeback03 - Thursday, February 11, 2010 - link
As I don't need a dGPU, I would like to see a CULV laptop with the Turbo33 feature but without any dGPU in order to save money. Maybe with Arrandale.jasperjones - Wednesday, February 10, 2010 - link
Jarred,As you imply, graphics drivers are complex beasts. It doesn't make me happy at all that now Optimus makes them even more complex.
Optimus will likely require more software updates (I don't think it matters whether they are called "driver" or "profile" updates).
That puts you even more at the mercy of the vendor. Even prior to Optimus, it bothered me that NVIDIA's driver support for my 3 1/2 year old Quadro NVS 110m is miserable on Win 7. But, with Optimus, it is even more critical to have up-to-date software/driver support for a good user experience! Furthermore, software solutions are prone to be buggy. For example, did you try to see if Optimus works when you run virtual machines?
Also, I don't like wasting time installing updates. Why can't GPUs just work out of the box like CPUs?
Lastly, these developments are completely contrary to what I believe are necessary steps towards more platform independence. Will NVIDIA ever support Optimus on Linux? While I suspect the answer is yes, I imagine it will take a year and a half at the very least.
obiwantoby - Wednesday, February 10, 2010 - link
I think it is important to note, that the demo video, even though it is a .mov, works in Windows 7's Windows Media Player. It works quite well, even with hardware acceleration.Keep encoding videos in h.264, it works on both platforms in their native players.
No need for Quicktime on Windows, thank goodness.
dubyadubya - Wednesday, February 10, 2010 - link
"Please note that QuickTime is required" FYI Windows 7 will play the mov file just fine so no need for blowtime. Why the hell would anyone use a codec that will not run on XP or Vista without Blowtime is beyond me. For anyone wanting to play mov files on XP or Vista go get Quicktime alternative.beginner99 - Wednesday, February 10, 2010 - link
Did I read that right, HD video is always decoded on the dGPU even if the (Intel) IGP could deal with it?I mean it sounds nice but is there also an option prevent certain apps from using de dGPU?
Or preventing the usage of dGPU completely like when one really needs the longest battery time possible? -> some users like to have control themselves.
intel IGP might offer worse quality with their videao decode feature (but who really sees that on laptop lcd?) but when travelling the whole day and watching movies, I would like to use as little power as possible.
JarredWalton - Wednesday, February 10, 2010 - link
It sounds like this is really just a case of the application needing a "real profile". Since I test x264 playback using MPC-HC, I had to create a custom profile, but I think that MPC-HC detected the GMA 4500MHD and decided that was perfectly acceptable. I couldn't find a way to force decoding of an .mkv x264 video within MPC-HC, but other video playback applications may fare better. I'll check to see what happens with WMP11 as well tomorrow (once I install the appropriate VFW codec).