Chromium optimization results implemented by the RenderingNG project

The Chromium developers summed up the first results of the RenderingNG project launched 8 years ago, aimed at ongoing work to increase the performance, reliability and extensibility of Chrome.

For example, the optimizations added in the release of Chrome 94 compared to Chrome 93 allowed for an 8% reduction in page processing latency and a 0.5% increase in battery life. Given the size of Chrome's user base, these numbers translate globally into over 1400 years of CPU savings every day. Compared to versions of previous years, modern Chrome renders graphics faster by more than 150% and is 6 times less prone to crashes in GPU drivers on problematic hardware.

Among the implemented methods that allow to achieve a performance increase, parallelization of rasterization operations of different pixels on the GPU side and a more active spacing of handlers across different CPU cores (JavaScript execution, page scrolling processing, video and image decoding, preemptive rendering of content) are noted. The limiting factor for active parallelization is the increased load on the CPU, which is reflected by an increase in temperature and an increase in power consumption, so it is important to strike an optimal balance between performance and power consumption. For example, when running on battery power, you can sacrifice rendering speed, but you can’t sacrifice scrolling processing in a separate thread, as the decrease in responsiveness of the interface will become noticeable to the user.

The technologies implemented as part of the RenderingNG project completely change the approach to compositing and allow you to adaptively use various optimization technologies for GPU and CPU calculations in relation to individual parts of pages, taking into account such features as screen resolution and refresh rate, as well as the presence of advanced graphics API support in the system, such as Vulkan, D3D12 and Metal. As examples of optimizations, the active use of GPU texture caching and the results of rendering parts of web pages is mentioned, as well as taking into account only the area of ​​the page visible to the user when rendering (it makes no sense to render parts of the page overlapped by other content).

An important element of RenderingNG is also performance isolation when processing different parts of pages, for example, to isolate calculations related to displaying ads in iframes, displaying animations, playing audio and video, scrolling content, and executing JavaScript.

Chromium optimization results implemented by the RenderingNG project

Implemented optimization techniques:

  • Chrome 94 introduced the CompositeAfterPaint mechanism, which provides compositing of separately rendered parts of web pages and allows you to dynamically scale the load on the GPU. Based on user feedback from telemetry, the new compositing system reduced scroll latency by 8%, increased user experience responsiveness by 3%, increased rendering speed by 3%, reduced GPU memory consumption by 3%, and extend battery life by 0.5%.
  • GPU Raster, a GPU-side rasterization engine, was rolled out to all platforms in 2020, accelerating MotionMark scores by an average of 37% and HTML-related categories by 150%. This year, the GPU Raster has been enhanced with the ability to use GPU acceleration to render Canvas elements, resulting in 1000% faster path rendering and 1.2% faster MotionMark 130 benchmarks.
  • LayoutNG is a complete overhaul of page layout algorithms aimed at improving reliability and predictability. The project is planned to be brought to users this year.
  • BlinkNG - Refactoring and cleaning up the Blink engine by separating rendering operations into separate phases to improve caching efficiency and simplify lazy rendering based on the visibility of objects in the window. The work is scheduled to be completed this year.
  • Transfer to separate threads handlers for scrolling, animation and image decoding. The project has been developing since 2011, and this year it has achieved the ability to move animated CSS transforms and SVG animations to separate streams.
  • VideoNG is an efficient and reliable engine for playing videos on web pages. This year, the ability to display protected content at 4K resolution has been implemented. Support for HDR was previously added.
  • Viz - separate processes for rasterization (OOP-R - Out-of-process Raster) and rendering (OOP-D - Out of process display compositor), separating the rendering of the browser interface from rendering the content of the pages. The project also develops the SkiaRenderer process using platform-specific graphics APIs (Vulkan, D3D12, Metal). The change allowed to reduce the number of crashes due to problems in graphics drivers by 6 times.

Source: opennet.ru

Add a comment