Context lost and restored events can be used to transition an app. from one GPU to another when there is no magic migration.However, I'd be hesitant to implement a heuristic like this for two reasons. First, Mac OS is the only OS I know of that does the "deep magic" to automatically migrate OpenGL resources between GPUs -- at least, this is my understanding of how automatic graphics switching works there. On other OSs like Windows I don't know how it works; I think the D3D device can be created against a particular graphics adapter, and I don't think resources can migrate between GPUs. For best portability, an up-front decision when creating the context is best.
An application could fail for the same reason with the proposed context creation preference though it maybe more likely to fail at the start. The way to debug it is the same. See if the app. works without the "save power" creation property == try with the OS or browser preference set to "Always use discrete".Second, if switching between GPUs really does work and one of the GPUs doesn't pass the WebGL conformance suite, switching silently behind the scenes could cause certain OpenGL operations to start failing in the middle of the application's run. This would cause bugs that are impossible to diagnose.
NOTE: This electronic mail message may contain confidential and privileged information from HI Corporation. If you are not the intended recipient, any disclosure, photocopying, distribution or use of the contents of the received information is prohibited. If you have received this e-mail in error, please notify the sender immediately and permanently delete this message and all related copies.