One other issue needing consideration. Let's assume that the
"preferLowPowerToHighPerformance" flag is added to the
WebGLContextAttributes dictionary, and that
WebGLRenderingContext.getContextAttributes() returns the correct value
for the flag. (In other words, if the flag is set to true during
getContext, and the machine has two GPUs, and the implementation
supports low-power mode, then getContextAttributes() will return true
for the flag as well; otherwise, false.)
On dual-GPU Mac OS machines, at least, it will then be possible to get
WebGL to run on either the integrated or discrete GPU, and detect
In order to keep implementations honest, it will be necessary to
change the WebGL conformance suite to run all of the tests twice, once
on the integrated GPU and once on the discrete GPU. Further, there are
currently many more test failures on Mac OS when running the
conformance suite on integrated GPUs than on discrete GPUs. This means
adding a low-power flag now will delay the point at which the next
snapshot of the WebGL conformance tests could be successfully passed.
There had been some hope that a new snapshot could be taken soon,
after triaging the existing test failures on top of tree.
Dean, Chris, any thoughts on this issue?
If we are to make it possible for authors to control which GPU is being used then we certainly need to have a conformance suite that tests both paths. But an implementation can pass the conformance suite immediately by simply ignoring the flag and always enabling the GPU that passes.