[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Public WebGL] dual GPU setups default to integrated GPU



Dual GPU laptops such as some brands of windows and macOS laptops, the OS has a GPU switching function that switches to the discrete GPU in graphics intensive applications (such as games, cad software etc.)

However, when a browser is running, it is often the case that the integrated GPU is used, regardless of if a tab is doing something graphics intensive with WebGL or not (https://twitter.com/grorgwork/status/823719997616701440).

On windows a user can influence this by a series of complicated steps to designate the preferred GPU, but it is a machine wide-setting, and sometimes it was ignored (I don't know if that's still the case).

Obviously this presents a problem for WebGL developers. Neither would we want to leech a users batteries unnecessarily, nor would we like to force a user with a discrete GPU to receive worse performance should they wish to use a graphics intensive WebGL application.

In WebGL1 there was a context creation flag called "preferLowPowerToHighPerformance", but I'm not aware how widely this was implemented, and apparently it's also ignored on macOS (because it defaults to false, yet the discrete GPU is still not used).

WebGL2 has no equivalent context creation flag.

Questions:
  1. It would seem we have a sufficient mechanism to express a GPU preference, is this a correct assessment?
  2. Why was preferLowPowerToHighPerformance dropped from WebGL2?
  3. Why is preferLowPowerToHighPerformance ignored for WebGL1 on some configurations where it would be most useful?
  4. Should an additional mechanism be introduced so a user can switch between GPUs at his choice for tabs?