I own a ASUS N64VM it has a Ivy Bridge CPU and a nVidia GeForce 630M
When I bought it, I didn't knew Optimus existed... and thought that it was a GeForce laptop... so the first thing I did was attempt to make DGPU work by default.
Currently it is set in nVidia Control panel to default to DGPU, all games are also set to high-performance, I used nVidia Inspector to set Optimis SHIM to default to DGPU (some games don't work without nVidia Inspector), and disabled Secure Boot in the bios
(Age of Decadence and some other Torque3D and Ogre3D games break with nVidia Optimus if Secure Boot is enabled, I have no idea why).
So right now most games work with the DGPU as expected, but games that use DX1 to 8 doesn't properly.
In SimCity 4 case, it actually fires up the GPU, and seemly some (not all) draw requests are passed to it, but any information requests return the Intel GPU instead, thus the game breaks (ie: it attempts to use extensions, texture comrpession model, and
whatnot, designed for the intel card, without realizing nVidia Card is helping).
Some other games (but I don't recall particular ones now) also do that.
Mind you, it is not a bug only of DGPU failure to work, but of the drivers (or DX, dunno who is the culprit) returning wrong data.
SimCity 4 has a very useful feature: it dumps the data it got from the Windows APIs when it launches.
here is what mine dumped:
driverName = nvumdshim.dll
driverVersion = 10.18.13.5560, GUID: D7B78E66-4226-11CF-F373-7734A6C2CD35
cardName = Intel(R) HD Graphics 4000
cardVersion = Vendor: 8086, Device: 0166, Board: 14771043, Chipset: 0009
cardIdentity = Intel(R) HD Graphics 4000
cpuSpeed = 2294
memory = 1024
freeMemory = 1024
screenWidth = 1280
screenHeight = 1024
screenBPP = 16
videoMemory = 32
textureMemory = 32
textureStages = 4
bogoFPS = 0
bogoMPPS = 0
The CPUSPEED came from RDTSC, and is wrong (when SimCity 4 launched, RDTSC counted CPU Cycles, Microsoft + Intel decided to create invariant RDTSC that return a arbitrary count, and created no "legacy" mode, thus all games taht expect RDTSC to count cycles
get wrong data, my cpu actual speed is 3.3ghz)
memory is incorrect (it is 8gb, but since this is a 32bit app it should get 3gb at least...)
free memory also incorrect.
screen width and height, is correct (I set my desktop on purpose to the resolution that the game supports, to make it run less buggy).
screenBPP incorrect (should be 32... Windows 8 and 10 don't even support 16!)
VRAM incorrect, erroneous data came from Intel Chip (Intel HD4000 reports 32mb vram by default, because it uses the computer normal RAM as its main RAM).
texture-memory, same thing.
texture stages, also incorrect (Intel chip has 4 texture stages, nVidia I think has 8+)
I have no idea what is bogoFPS and bogoMPPS
I tried many, many, many different things, including reinstalling drivers, installing ASUS OEM drivers, installing Intel and Nvidia drivers, compatiblity modes, administrator, non-administrator, editing compatibility in the registry, and so on. these numbers
never changed.
the only thing that change: if I disable "high performance" in the nVidia control panel, the driver change from nvumdshim.dll to igdumdim32.dll
And if I use some wrapper (like Wine, or DgVoodoo2) then all the video-related info change, but not always correctly either.