Contact emails
chri...@chromium.org, dan...@chromium.org
Spec
The document describing this change is here (including a simple example). We believe that this change conforms to the intent and spirit of the will-change spec as a user-agent behavior, so no standards documentation is required.
Summary
All (composited) content will be re-rastered at the optimal (“ideal” in the nomenclature of the Chromium Compositor) scale when its transform scale changes, iff it does not have the will-change: transform CSS property.
Currently, composited layers raster their first frame at the scale you would expect (including transforms, etc). If that scale ever changes, it re-rasters at device scale, ignoring all transforms (*).
This change was discussed in some detail by a number of Blink rendering leads & engineers. A resulting detailed design document justifying this approach is here.
Link to “Intent to Implement” blink-dev discussion
N/A
Is this feature supported on all six Blink platforms (Windows, Mac, Linux, Chrome OS, Android, and Android WebView)?
Yes.
Demo link
Interoperability and Compatibility Risk
Other browsers do not implement this approach. Summary of what we know about their behavior:
Gecko appears to re-raster composited layers when their scale changes.
WebKit re-rasters with heuristics which are often similar to Blink’s current heuristic, but sometimes different. (We do not know the exact heuristics used. The example given in this intent renders blurry output for even the “crisp always” text, for example.)
Edge re-rasters composited layers on scale change (I think; will double-check).
OWP launch tracking bug
Entry on the feature dashboard
TODO (will add once this Intent is approved).
--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
Hm, I feel like that this intent sort of builds on a bug. In Internet Explorer 11, I do not see any blurry text.Why does Blink show blurry text in the first place?And why is it acceptable for the first line to remain blurry?
Thank you for making this more predictable! In general this seems more in-line with what developers would naively expect, and what Edge and Firefox are doing. I agree the UMA suggests this is worth trying.If I understand correctly, will-change: transform today and after this change forces content to be rastered at scale 1, right? I.e. there's no risk that this change will cause content that was previously crisp to become blurry.
On Mon, Jun 13, 2016 at 6:32 AM Rick Byers <rby...@chromium.org> wrote:Thank you for making this more predictable! In general this seems more in-line with what developers would naively expect, and what Edge and Firefox are doing. I agree the UMA suggests this is worth trying.If I understand correctly, will-change: transform today and after this change forces content to be rastered at scale 1, right? I.e. there's no risk that this change will cause content that was previously crisp to become blurry.No, it rasters at the scale the composited layer is at when it is created (including transforms, etc). This is a little bit different than the current behavior which is:a. First raster at scale when createdb. If the scale ever changes, raster at device scale ("scale 1")(b) will be going away, since it's an arbitrary heuristic. Therefore there will be a small number of sites that happened to benefit from (b) which will look a little bit worse.
On Mon, Jun 13, 2016 at 12:11 PM, Chris Harrelson <chri...@chromium.org> wrote:On Mon, Jun 13, 2016 at 6:32 AM Rick Byers <rby...@chromium.org> wrote:Thank you for making this more predictable! In general this seems more in-line with what developers would naively expect, and what Edge and Firefox are doing. I agree the UMA suggests this is worth trying.If I understand correctly, will-change: transform today and after this change forces content to be rastered at scale 1, right? I.e. there's no risk that this change will cause content that was previously crisp to become blurry.No, it rasters at the scale the composited layer is at when it is created (including transforms, etc). This is a little bit different than the current behavior which is:a. First raster at scale when createdb. If the scale ever changes, raster at device scale ("scale 1")(b) will be going away, since it's an arbitrary heuristic. Therefore there will be a small number of sites that happened to benefit from (b) which will look a little bit worse.Ah, I see. This seems like an important point to cover in the doc (we may need to write some guidance for developers, etc.). What makes you say this is "small"?
Eg. today if I want to animate something in that starts small and smoothly grows to it's desired side, it's reasonable that I will have used will-change:transform, right?
What's the recommended replacement for that - where I want to raster only once at the target size (to avoid really blurry intermediate frames)? Do I start at "transform: scale(1); opacity:0; will-change: transform", then scale down and remove the transparency, then animate the scale back up to 1?
LGTM3, but the lack of control over the initial scale when using will-change: transform is unfortunate. Do you think that always using the size ignoring transforms would be terrible, and if so how about using the largest of the size with transforms and the size ignoring transforms? Of course, however it's done one can end up with blurry content, but without new CSS syntax it seems like the size ignoring transforms is the only other signal there is.
On Mon, Jun 20, 2016 at 3:53 PM, Philip Jägenstedt <foo...@chromium.org> wrote:LGTM3, but the lack of control over the initial scale when using will-change: transform is unfortunate. Do you think that always using the size ignoring transforms would be terrible, and if so how about using the largest of the size with transforms and the size ignoring transforms? Of course, however it's done one can end up with blurry content, but without new CSS syntax it seems like the size ignoring transforms is the only other signal there is.
In coordination with shipping this we should really file a bug with the CSSWG that an initial-scale CSS property is needed to control it.