Chrome's rendering gets faster: here is what Google does not tell you
Google announced yesterday that it has implemented several improvements in the company's Chrome web browser that improve how the browser renders content.
While improvements in raw speed are always good, there is only so much you can do about that. This is why Google started to look at other methods to improve performance of Chrome.
One improvement that Google mentions in the article changes how Chrome handles redraws of pages. The browser identifies areas of the page that have not changed, and those that have changed. Anything that has not changed is copied which speeds up the operation.
Performance can take a hit when pages are very dynamic. Google's optimization has Chrome track draw commands, and enables the browser to identify elements that have not been modified. It can then copy the entire thing from cache, which, according to Google, may speed up the painting of a new frame by up to 35%.
The article describes a second optimization method in which Google Chrome copies tiles from previous frames, to only update specific pixels in that tile afterwards to speed up the time it takes to redraw.
This new method reduces the tile redraw time by up to 40% according to the company.
This sounds all good and great, but Google fails to mention that the second method is not supported by all operating systems, and even architectures.
If you follow the link to Intel's blog post about the new zero-copy feature, you will learn that the feature is only enabled by default on Chrome OS. The article dates back to March 2016 though but Google gives no indication on the version of Chrome, nor the operating systems it is enabled on by default.
Zero Copy Tile Update Mode
To check whether the new Zero Copy mode is available on your device, do the following:
- Load chrome://gpu in the browser's address bar.
- Under Graphics Feature Status, check if Native GpuMemoryBuffers is enabled. If it is not, e.g. Software Only, then you cannot make use of that right now.
- Under Compositor Information, check if Tile Update Mode is set to Zero-copy.
If only Tile Update Mode is not set correctly, the default is set to One-copy, then you may enable the feature in the following way:
- Load chrome://flags/#enable-zero-copy in Chrome's address bar.
- The flag Zero-copy rasterizer enables the feature in Chrome when you set it to enabled.
- Restart Chrome after making the change, and check the chrome://gpu page again afterwards. IT should show zero-copy there.
Closing Words
A couple of things are unclear after reading Google's blog post. First, the company does not mention the Chrome version, or operating systems the new features are available for.
There is also no mentioning of whether the new zero-copy feature is an Intel only feature, or available for non-Intel processors as well.
Now You: What's your take on the announcement?
It works also with NW.js (node-webkit).
Yes it work in Linux too… v.56.0.5924
In Gnome like this:
sudo cd /usr/share/applications/chromium.desktop
Edit -> Exec=chromium %U to -> chromium –enable-native-gpu-memory-buffers %U
Save and end session and logout – login. Start chromium and test.
You must add to exe
–enable-native-gpu-memory-buffers
example:
“C:\Program Files (x86)\Google\Chrome\Application\chrome.exe” –enable-native-gpu-memory-buffers
The first optimization is a very old trick in the book, even Flash has been doing this for more than 10 years. I thought all browsers were doing it too, by now. I guess they had other things to do… Or they just refined something that existed in the browser already and squeezed more juice as a result.
The second optimization is an improvement, you can tell from its characteristics that it is more recent.
You can enable Native GpuMemoryBuffers by opening chrome shortcut properties and adding –enable-native-gpu-memory-buffers in target after space.
Please clearly how may i enable Native GpuMemoryBuffers? Please give me details instructions.Awaiting and thank you.
Interesting, thanks for the tip!
In the Chromium Bug Tracker I’ve read this flag does only simulate (= software) as well. It just doesn’t say so anymore.
Only Chrome OS? Well, if so… gotta start somewhere (said the guinea pig).
Trying it now on Chrome Version 57.0.2987.13 dev (64-bit). Seems to work, it wasn’t slow to be honest, but let’s test it out. Thank you for sharing Martin. :)