Re:The web at maximum FPS: How WebRender gets rid of jank
by ricardobeat on Tuesday October 10, 2017 @02:15PM
(#15444033)
The GPU is still painting the screen at a set refresh rate (your monitor’s). Some monitors have variable refresh rates, but don’t go any lower than 30hz, and depending on settings like vsync the gpu might still be churning through hundreds of wasted frames. The latest iPads can go down to 24hz to save energy due to their custom 120hz display, but that’s a rarity.
Re:The web at maximum FPS: How WebRender gets rid of jank
by nicalsilva on Tuesday October 10, 2017 @07:02PM
(#15446025)
Let's clarify, WebRender doesn't do anything at all if nothing changed. If the content of the window is static then webrender won't wake your gpu up until it really needs to. There seem to be a confusion about video games needing to render at constant frame rate, but that is only the case in games where there is always something changing on screen. It isn't that uncommon for other types of games with more static graphics to not render if nothing has changed.
Re:The web at maximum FPS: How WebRender gets rid of jank
by Dylan16807 on Wednesday October 11, 2017 @04:45AM
(#15448224)
What about if a tiny thing changes? Perhaps animated avatars totaling 1% of the page. Is that a scenario where the new method might use more power, because it redraws too much?
Re:The web at maximum FPS: How WebRender gets rid of jank
by nicalsilva on Wednesday October 11, 2017 @05:44PM
(#15453767)
As pcwalton said, there is a whole lot of things on the web that are very cheap to render on a GPU if done right. For these things, a well tuned gpu renderer can easily outperform a naive compositor like what you can see in most browsers.
All of the caching optimizations that one gets from a compositor can be incorporated in something like webrender (and some are, like glyphs and a bunch of other stuff). Right now webrender doesn't have all of the tweaks to avoid rendering the whole page when there is a small spinning throbber, but that will be implemented eventually (there is still a lot of work going into rendering the long tail of weird and specific things right).
Re:The web at maximum FPS: How WebRender gets rid of jank
by pcwalton on Wednesday October 11, 2017 @01:20PM
(#15451401)
A compositor is already repainting the whole window on the GPU. WR doesn't change anything here.
Re:The web at maximum FPS: How WebRender gets rid of jank
by nicalsilva on Wednesday October 11, 2017 @05:31PM
(#15453668)
Actually, Gecko's compositor knows the screen space invalid region and scissors out the rest when compositing. The invalid region is passed to the window manager. Chromium also does that although they settle for an invalid rect instead of region which is fair. There is an issue on file to do the same with webrender.
Re:The web at maximum FPS: How WebRender gets rid of jank
by Dylan16807 on Wednesday October 11, 2017 @03:56PM
(#15452882)
In this use case the "painting" a compositor does from layers is copying one big rectangle. That takes next to zero time. That's not at all similar to "painting" where you actually re-render the entire visible portion of the page.
Re:The web at maximum FPS: How WebRender gets rid of jank
by pcwalton on Wednesday October 11, 2017 @04:07PM
(#15452987)
> That's not at all similar to "painting" where you actually re-render the entire visible portion of the page.
Why not?
Painting a page is mostly just copying pixels from textures too.
Re:The web at maximum FPS: How WebRender gets rid of jank
by Dylan16807 on Wednesday October 11, 2017 @06:34PM
(#15454140)
You don't see a notable difference between [tens of] thousands of glyphs and bits being layered on top of each other and processed through a display list, versus copying over one single rectangle from A to B?
Re:The web at maximum FPS: How WebRender gets rid of jank
by pcwalton on Wednesday October 11, 2017 @06:48PM
(#15454230)
No, I don't. It adds a small amount of vertex shading time. The GPU primitive rasterization machinery is extremely good.
Benchmark it yourself if you don't believe me!
Re:The web at maximum FPS: How WebRender gets rid of jank
by vetinari on Tuesday October 10, 2017 @02:29PM
(#15444158)
In this case, the GPU just sends the content of the framebuffer to the screen. It does not re-render the content of the framebuffer, which is what the most energy is usually spent on.
Re:The web at maximum FPS: How WebRender gets rid of jank
by jug on Tuesday October 10, 2017 @03:37PM
(#15444715)
Also I imagine that particular path of simply sending the framebuffer is a highly optimized one.
Re:The web at maximum FPS: How WebRender gets rid of jank
by zlynx on Tuesday October 10, 2017 @03:16PM
(#15444547)
Intel GPUs support Panel Self Refresh. Tablet and laptop panels can go very slow. Less than 24 FPS, for sure! It is whatever the low end is on their LCD controller (they forget over time, like DRAM).
This article has some diagrams and explanations: http://www.hardwaresecrets.com/introducing-the-panel-self-re...
Re:The web at maximum FPS: How WebRender gets rid of jank
by vvanders on Tuesday October 10, 2017 @02:25PM
(#15444119)
It depends on the GPU arch. Some of them use a separate 2D compositor that uses much less power so if you're just scrolling layers you aren't lighting up the full GPU.
Re:The web at maximum FPS: How WebRender gets rid of jank
by s_ngularity on Tuesday October 10, 2017 @02:13PM
(#15444012)
The GPU is drawing 60 times a second regardless of whether the page is static. Not sure how they do their streaming to the GPU, but there will be state changes every time you scroll, or click a button, etc., even on a static page.
Re:The web at maximum FPS: How WebRender gets rid of jank
by rayiner on Tuesday October 10, 2017 @03:20PM
(#15444576)
There is a difference between drawing the frame into the frame buffer, and scanning the frame buffer out to the display. If you application is coded at all sanely, only the latter is happening at 60 Hz with a static page.
Re:The web at maximum FPS: How WebRender gets rid of jank
by TickleSteve on Tuesday October 10, 2017 @02:17PM
(#15444053)
no, the GPU is refreshing the video output at 60Hz, the graphics are not being redrawn at 60Hz in your typical GUI application.
Games are a special case of course.
Re:The web at maximum FPS: How WebRender gets rid of jank
by pohl on Tuesday October 10, 2017 @02:21PM
(#15444079)
The specs for my mobile GPU say that it has 1024 cores. Wouldn't it be surprising if they were all fully active regardless of workload? (It seems like low-hanging fruit for making a laptop GPU energy efficient.)
Edit: To clarify, I realize that the screen gets refreshed ~60 times per second (depending on refresh rate), but I don't think any rendering actually happens if it doesn't need to.