commit | 0181fe73051026ae6c6291861e1bb5a445adbceb | [log] [tgz] |
---|---|---|
author | Michael Ludwig <michaelludwig@google.com> | Thu Dec 07 19:49:24 2023 |
committer | Chromium LUCI CQ <chromium-scoped@luci-project-accounts.iam.gserviceaccount.com> | Thu Dec 07 19:49:24 2023 |
tree | 54abc3d502847403554a1df4762bc973e827c654 | |
parent | 20ce58ac59378ca25d35ea5e60796c1f0a397dcd [diff] |
Remove Skia layer staging flags With the removal of SK_RESOLVE_FILTERS_BEFORE_RESTORE, the output of an image filter will be drawn directly to the parent surface. Previously if there were any deferred effects like a color filter or a transform, they would be resolved into another offscreen surface and then that would be drawn 1-to-1 with the parent. Additionally, drawImage now maps directly to drawImageRect. drawImage() had an optimization when the canvas transform was pixel-aligned and the image was 1-to-1 with the surface, and there was a clip matching the image bounds, then SkCanvas would skip auto-adding a saveLayer for the image filter and would evaluate the image filter on the input image directly. Now drawImageRect has a similar optimization except that it is for any image or subset image, so long as it's not an alpha-only color type or the paint also has a SkMaskFilter to evaluate. With the removal SK_USE_LEGACY_CONTENT_BOUNDS_PROPAGATION, the known content bounds provided as a hint to saveLayer() are propagated through the entire image filter graph. Previously in deep image graphs the content bounds would be replaced with the desired output bounds, and only intersected with the content bounds at the end if the filter graph didn't affect transparent black. Propagating content bounds all the way through the graph does not lose any information and can yield smaller required input layer bounds. Both of these changes can result in imperceptible pixel diffs because image dimensions being sampled from change, or from skipping an offscreen surface that encoded colors down to 8-bits. Bug: b/40042615 Bug: b/40042366 Bug: b/40040587 Bug: chromium:1497170 Change-Id: I6336f6075ef32f535a37daed310bf3925e11b4b8 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5075198 Commit-Queue: Michael Ludwig <michaelludwig@google.com> Reviewed-by: Xiyuan Xia <xiyuan@chromium.org> Reviewed-by: Kyle Charbonneau <kylechar@chromium.org> Cr-Commit-Position: refs/heads/main@{#1234654}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
To check out the source code locally, don't use git clone
! Instead, follow the instructions on how to get the code.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure .
For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.
If you found a bug, please file it at https://crbug.com/new.