Bug 1597547 Comment 0 Edit History

Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.

On Mac configurations with multiple GPUs, I'm pretty sure our WebGL OpenGL contexts are never migrated on GPU switches. This causes a few unexpected effects.
See bug 1579664 comment 5 for some background.

Steps to reproduce, a)
 0. Be on a dual-GPU Mac which is currently using the integrated GPU to drive the internal display.
 1. Create a high-power WebGL context A. (triggers switch to discrete GPU)
 2. Create a low-power WebGL context B.
 3. Destroy A. (triggers switch to integrated GPU)
 4. Keep rendering into B.

B keeps using the high-power discrete GPU and incurs an extra copy on the way to the screen. Each rendered frame engages both GPUs and a bunch of paging.

Steps to reproduce, b)
 0. Be on a dual-GPU Mac which is currently using the integrated GPU to drive the internal display.
 1. Create a default-power WebGL context.
 2. Keep rendering into the context.

We will eventually force the discrete GPU to drive the internal display, but the WebGL context will still render using the integrated GPU, and it will incur an extra copy on the way to the screen. So we have high power usage but slow speed.
On Mac configurations with multiple GPUs, I'm pretty sure our WebGL OpenGL contexts are never migrated on GPU switches. This causes a few unexpected effects.
See bug 1579664 comment 5 for some background.

Steps to reproduce, a)
 0. Be on a dual-GPU Mac which is currently using the integrated GPU to drive the internal display.
 1. Create a high-power WebGL context A. (triggers switch to discrete GPU)
 2. Create a low-power WebGL context B.
 3. Destroy A. (triggers switch to integrated GPU)
 4. Keep rendering into B.

B keeps using the high-power discrete GPU, despite having requested low-power, and incurs an extra copy on the way to the screen. Each rendered frame engages both GPUs and a bunch of paging.

Steps to reproduce, b)
 0. Be on a dual-GPU Mac which is currently using the integrated GPU to drive the internal display.
 1. Create a default-power WebGL context.
 2. Keep rendering into the context.

We will eventually force the discrete GPU to drive the internal display, but the WebGL context will still render using the integrated GPU, and it will incur an extra copy on the way to the screen. So we have high power usage but slow speed.

Back to Bug 1597547 Comment 0