• Авторизация


Mozilla GFX: moz://gfx newsletter #52 30-04-2020 22:15 к комментариям - к полной версии - понравилось!


Hello everyone! I know you have been missing your favorite and only newsletter about software engineers staying at home, washing their hands often and fixing strange rendering glitches in Firefox’s graphics engine. In the last two months there has been a heap of fixes and improvements. Before the usual change list I’ll go through a few highlights:

  • A number of us focused on shipping WebRender to a wider range of Intel devices on Windows. This involved quite a bit of testing, profiling, puzzlement about driver behavior and of course heaps of improvements, a lot of which will benefit other configurations as well. See the “WebRender where” page for an overview of WebRender’s deployment.

  • DirectComposition integration with picture caching was a very important part of making this possible, yielding big performance and power usage improvements. It is now enabled by default on windows as of Firefox 75 in some configurations where WebRender is enabled and will expand to more configurations in 76 and 77.

  • In 76 we have improved DirectComposition usage for video playback. This reduces GPU usage during video play a lot. On an Intel HD 530 1080p60 video playback has 65% usage with WebRender on in 75, 40% with Webrender off, and 32% usage with WebRender on in 76.

  • The new vsync implementation on Windows, which improved our results on various benchmarks such as vsynctester.com and motionmark, reduced stuttering during video playback and scrolling.

  • Steady progress on WebRender’s software implementation (introduced at the top of the previous episode), codenamed SWGL (pronounced “swigle”), which will in the long run let us move even the most exotic hardware configurations to WebRender.

  • And hardware accelerated GL contexts on Wayland, and pre-optimized shaders, and WebGPU, and… So many other improvements everywhere it is actually quite hard to highlight only a few.

What’s new in gfx

  • Botond and Micah Tigley added initial support for double-click-to-zoom gestures in Responsive Design Mode
  • Botond and Agi Sferro tracked down and fixed a regression that was causing about:support to load zoomed in on Android.
  • Sotaro re-enabled video frame recycling with the RDD process.
  • Sotaro fixed an issue canvases to not be re-created after GPU context loss.
  • Lee worked around a memory leak.
  • Markus fixed a rendering glitch.
  • Jonathan Kew avoided defaulting to a monospace font as fallback on MacOS.
  • Nical attempted yet another fix at a crash that keeps coming back.
  • Jonathan Kew implemented distinguishing between OS-provided and user-installed fonts in the system font list.
  • Botond fixed non-unified build errors.
  • Kats improved the behavior of momentum scrolling.
  • Jonathan Kew fixed a crash.
  • Kats prevented the viewport clip from clipping position:sticky items.
  • Kris added desktop-zooming information to about:support.
  • Snorp made it possible to disambiguate top-level from other APZ events.
  • Roger Zanoni addressed some static analysis lints.
  • Chris Martin removed some usage of gdi surfaces on windows for sandboxing.
  • Andrew enabled color management for all images and not only tagged ones.
  • Jushua Gahan addressed some static analysis lints.
  • Timothy fixed an invalidation issue with display:none masks.
  • Sotaro fixed a canvas rendering issue when resuming on Android.
  • Jonathan Kew fixed a font metrics related issue.
  • Bob Owen fixed an intermittent issue with canvas remoting.
  • Kats fixed some issues with the dynamic toolbar sticky behavior on Android.
  • Miko fixed an issue with opacity optimization.
  • Bert improved the vsync implementation on Windows.
  • Arash Fotouhi addressed some static analysis lints.
  • Robert Mader implemented creating an OpenGL context with the Wayland backend on Linux.
  • Lee fixed a shutdown crash related to font loading.
  • Jonathan Kew fixed a printing issue with long SVG stroke-dasharray strings.
  • Sam Dalton improved the FPS counter implementation.
  • Kats removed the old android dynamic toolbar implementation.
  • Sotaro improved some OpenGL context debugging utilities.
  • Jonathan Kew fixed a font visibility issue with language-pack fonts on Windows.

What’s new in WebRender

WebRender is a GPU based 2D rendering engine for the web written in Rust, currently powering Firefox‘s rendering engine as well as Mozilla’s research web browser Servo.

  • Jamie fixed a regression preventing picture caching from working well on Android.
  • Jamie implemented GLSL shader optimization at build time, resulting in quicker startup times.
  • Glenn added support for the tracy profiler in WebRender.
  • Miko added more items to display item caching.
  • Nical improved texture cache eviction and allocation heuristics to reduce the amount of texture reallocation.
  • Lee implemented a number of shader features in SWGL.
  • Nical prevented the texture cache from deallocating textures if it is about to allocate new ones.
  • Nical reduced the amount of alpha texture reallocations in the texture cache.
  • Connor Brewster fixed the max blur radii to take scale factor into account.
  • Jeff fixed a clipping issue with blob images.
  • Nical fixed clipping issues with shadows.
  • Nical fixed invalid glyph rasterization being requested continuously.
  • Glenn reduced picture cache invalidation with very large rectangles.
  • Miko added memory reporting to the display item cache.
  • Nical made WebRender’s builtin profiling tool more useful.
  • Timothy improved the stacking context scale factor selection to avoid blurriness under certain conditions.
  • Dzmitry fixed a crash caused by picture tasks exceeding the maximum supported texture size.
  • Glenn fixed picture cache tiles being evicted too eagerly.
  • Lee implemented perspective-correct rasterization in SWGL.
  • Glenn fixed a picture caching invalidation bug.
  • Kats and Kris implemented WebRender’s interaction between position:sticky and the dynamic toolbar.
  • Bert added a fast path for more gradient types.
  • Dzmitry fixed missing data in WebRender captures.
  • Kats removed the initial document splitting code.
  • Sotaro made it possible to enable WebRender without GPU process on Windows.
  • Timothy fixed an issue with incomplete SVG masks.
  • Glenn reduced the amount of texture reallocation in the render task target pool.
  • Nical reduced technical debt in WebRender’s message channels.
  • Jamie ensured upload strides are a multiple of 64 pixels on Adreno to avoid driver slow path.
  • Jeff disabled DirectComposition when the resolution is scaled and the compositor does not support stretching, to avoid rendering artifacts.
  • Nical reduced technical debt in the blob image rendering code.
  • Dzmitry fixed a clipping bug.
  • Lee [implemented](Bug 1630142) linear filtering for SWGL glBlitFrameBuffer.
  • Andrew fixed a memory leak with off-screen GISs.
  • Sotaro fixed some skipped frames when recving window expose events.
  • Jim added documentation to WebRender’s headless testing scripts.
  • Jim fixed a lot of compiler warnings in SWGL.
  • Sotaro simplified the DirectComposition integration code.
  • Andrew Added support for capturing sequences of frames when debugging WebRender.
  • Nical removed the deprecated recording tool in WebRender.
  • Kats fixed some github CI issues.
  • Glenn fixed a rendering issue involving a combination of blur, drop shadows and video.
  • Glenn simplified the image masking API.
  • Lee fixed a pixel rounding issuel with SWGL.
  • Kats fixed an APZ issue causing some frames to be skipped.
  • Jamie fixed a bug causing black screens on Android.
  • Nical refactored a lot of message passing code in WebRender in preparation for upcoming frame scheduling improvements.

To enable WebRender in Firefox, in the about:config page, enable the pref gfx.webrender.all and restart the browser.

WebRender is available under the MPLv2 license as a standalone crate on crates.io (documentation) for use in your own rust projects.

What’s new in WebGPU

WebGPU is a new Web API to access graphics and compute capabilities of the hardware. Firefox and Servo have implementations in progress that are based on wgpu project written in Rust.

  • Dzmitry implemented render passes, samplers, textures, texture views, and other missing pieces of the API.
  • Dzmitry implemented support for presentation based on the CPU readback path.
  • Firefox Nightly is now able to run both Chrome’s WebGPU examples as well as the ones we cross-compiled from Rust to WASM in wgpu-rs.
  • Dzmitry published the article to Mozilla Hacks blog featuring the status of the API as well as our emerging implementation in Firefox (Nightly only).

To enable WebGPU, follow the steps in webgpu.io, which also shows the current implementation status in all browsers.

https://mozillagfx.wordpress.com/2020/04/30/moz-gfx-newsletter-52/

вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник Mozilla GFX: moz://gfx newsletter #52 | rss_planet_mozilla - Planet Mozilla | Лента друзей rss_planet_mozilla / Полная версия Добавить в друзья Страницы: раньше»