Hello, I am trying to make the same thing here on my Clevo ( I have the W150HNM ).
I want to make a program to switch between cards that will stays at the menubar, but I need some guys/girls to help me, if you and someone reading this post want to help: add my msn : diacovinformatica @ yahoo com br (I write this way to avoid spam)
The thing you are forgetting is to enable the nvidia framebuffer copier: see the explanation here in this article: Optimus basics
Optimus is basically NVIDIA's answer to the Intel bus licensing dispute
, in which Intel torpedoed NVIDIA's IGP business by refusing to grant the company a license to the DMI bus that connects Intel's newest mobile processor/GPU combo chips to the I/O hub that had formerly hosted the IGP (before the IGP made the move into the CPU package). If NVIDIA had been granted a DMI bus license, the company could have made its own I/O hub containing an IGP and some I/O controller hardware, but Intel didn't, so NVIDIA couldn't.
Enter Optimus, which is an engineering-driven end-run around Intel's new IGP monopoly. Instead of replacing an Intel I/O hub and IGP combo chip with an NVIDIA part, NVIDIA just hangs its discrete GPU off of the Intel I/O hub via a x16 PCIe lane. The PCIe bus provides plenty of bidirectional bandwidth, and given that Optimus sends data to and from the main CPU socket, it needs bandwidth to work at higher resolutions.
When the system is using NVIDIA's discrete GPU, the IGP is being used only as a simple display controller that reads in data from the frame buffer and sends it to the system display port. All of the graphical heavy lifting is being done by the NVIDIA GPU, which takes in data from the CPU, does its rendering and processing, and then sends the results back to the CPU socket and to the frame buffer.
Optimus works by taking advantage of a feature of Intel's IGP that has been the source of much enthusiast griping over the years: the fact that Intel IGPs store the frame buffer in system memory, instead of in a dedicated pool of fast memory like NVIDIA's and ATI's IGPs. Intel used system memory to keep platform costs down (the extra memory chips that competitors' IGPs used boosted the price), but at the cost of some system performance—not having dedicated memory slows down 3D rendering, and it also reduces the amount of system memory available to other applications.
The software side of the Optimus platform inserts itself between the OS/app stack and the graphics hardware, and it accesses system memory to fill the frame buffer itself. Intel's IGP still reads from the frame buffer to do display output, but it's just reading and displaying frames that were generated by NVIDIA's GPU and sent to main memory.
Optimus decides which applications need the discrete GPU's help by using application-specific profiles that it gets over the Internet from an NVIDIA-hosted server. These profiles are sort of like cheat-sheets that tell the Optimus how it can best work with the IGP to help particular applications and games.
In the final reckoning, Optimus actually makes Intel's IGPs more competitive with AMD/ATI platforms by offering a way to boost its graphics performance, so Optimus is actually a net positive for Intel. Contrast this to NVIDIA's previous IGP business, which competed with Intel IGPs. But Intel has no presence in the discrete mobile GPU market, and with the Larrabee program now on ice
, it won't have a competing product for some time. Optimus, then, fills a gap in Intel's platform that desperately needs to be filled, which is why Apple is certain to announce that it will be powering the MacBook line eventually.