We currently use a full-screen GPU compositor with individual layers being repainted on GPU as-needed, and Metal/OpenGL/D3D repainting the composited result to the window's entire backbuffer each frame. On systems with both integrated GPUs and high-resolution displays, this results in quite a lot of memory bandwidth which seems to place a significant impact on power draw, see: https://mozillagfx.wordpress.com/2019/10/22/dramatically-reduced-power-usage-in-firefox-70-on-macos-with-core-animation/
We should implement support for partial redraws to the main framebuffer (currently this is only possible on macOS using the CALayer/IOSurface approach described above and Windows D3D11+).
We currently use a full-screen GPU compositor with individual layers being repainted on GPU as-needed, and Metal/OpenGL/D3D repainting the composited result to the window's entire backbuffer each frame. On systems with both integrated GPUs and high-resolution displays, this results in quite a lot of memory bandwidth which seems to place a significant impact on power draw, see: https://mozillagfx.wordpress.com/2019/10/22/dramatically-reduced-power-usage-in-firefox-70-on-macos-with-core-animation/
We should implement support for partial redraws to the main framebuffer (currently this is only possible on macOS using the CALayer/IOSurface approach described above and Windows D3D11+).