- From: fantasai <fantasai.lists@inkedblade.net>
- Date: Wed, 19 Feb 2014 16:19:20 -0800
- To: "www-style@w3.org" <www-style@w3.org>, "public-fx@w3.org" <public-fx@w3.org>
will-change ----------- Discussed will-change proposal, interaction with performance and optimization, and effects on stacking context generation. Tab was tasked with taking the proposal to the Performance WG for feedback. Holding off on FPWD for feedback on general approach. RESOLVED: publish will-change in the CSS WG repo as an Unofficial Draft Blending & Compositing CR ------------------------- RESOLVED: Compositing to CR, pending the edit nits brought up today. ====== Full minutes below ====== will-change Proposal -------------------- http://tabatkins.github.io/specs/css-will-change/ TabAtkins: Benoit suggested a property that authors could use to say ahead of time what operations will be done later TabAtkins: e.g. properties can cause element to be promoted to a new layer, can cause lag TabAtkins goes through http://tabatkins.github.io/specs/css-will-change/#will-change TabAtkins: this is a hint to the UA and has no visible impact on the element itself TabAtkins: other than possibly creating a stacking context (e.g. will-change: opacity will create a SC) krit: that's why I would not call it a hint! florian: if things going to change are in markup, the UA could figure it out florian: if they will change via script, why isn't this an API? TabAtkins: can't always tell that something is going to happen (e.g. if they happen via :hover) TabAtkins: often it's that user is going to flip a class in JS florian: so you're doing from JS, why not do it programmatically heycam: if you have animations on transforms that haven't started yet, you don't want to create stacking context before the animation starts dbaron: the spec says you don't create a stacking context before the animation starts dbaron: the problem now is that people are using hacks, like setting transform: translateZ(0) krit: and they do the hacks because they know that it's creating a layer dbaron: but they do the hacks because they work in some engines dbaron: engines do different things e.g. between transform and opacity TabAtkins: the compositing layer is undetectable. you can tell the SC krit: use of this would cause SC in many cases, e.g. will-change: top TabAtkins: no, only properties that create SC cause one in will-change dbaron: we don't want to guarantee authors a compositing layer, because we may not have enough RAM dbaron: but we can guarantee a stacking context (SC) dbaron: it lets the author give us a hint that they care about the performance dbaron: so UAs can improve performance in some cases florian: why is it a bad idea to have a property that creates a stacking context (auto | force) TabAtkins: this creates a SC because you want consistent behavior over time TabAtkins: you're suggesting element.willChange() florian: and a separate property for creating stacking context TabAtkins: it's convenient for applying this declaratively florian: but you're JS to change the content anyway TabAtkins: not necessarily; can't use the fact that some property might be animated in the lifetime of the document TabAtkins: this is more closely scoped in time florian: on hover, the author has no more info than the UA does florian: let's introduce a property to tell the UA something it can't figure out on its own sylvaing: do you change anything when you see that you have a transition or animation sylvaing: so will-change: opacity will cause SC, transition: opacity will not TabAtkins: this could be done as a JS api, but more convenient as a property. i don't really care which way this ends up florian: we have rejected in the past things in the past that are convenience/hint properties TabAtkins: two questions: 1) can the UA autodetect this, and 2) should it be in DOM or CSS TabAtkins: 2 UAs think this is a reasonable perf optimization florian: introducing JS is the point where the UA can't figure it out any more florian: why have a property when the UA can figure it out on its own krit: implementations will change over time, and the perf characteristics change krit: this property can't address that krit: this property may not be necessary in future TabAtkins: compositing isn't the only reason to have a slow start to an animation TabAtkins: we will continue to have animations that are slow to start TabAtkins: this is only a hint plinss: we should divorce the SC from the hint plinss: so we have another property that forces creation of a stacking context dbaron: then using will-change without that other property is useless dbaron: the second property will make this too hard for authors to get right and they won't use it krit: we already have the isolation property that creates a SC plinss: there are a lot of implicit behaviors in CSS (e.g. containing block) that should be explicit properties TabAtkins: i agree with you TabAtkins: this is going to be cargo-culted anyway TabAtkins: so keeping it as simple as possible is good SteveZ: if you add an optional argument that says "no-stacking context" Rossen: have you discussed with the Performance WG? dbaron: I think the Performance WG is mostly concerned with network and measurement Rossen: not necessarily. Suggest you should talk to them. Rossen: they have dealt with this issue, and may have valuable feedback Rossen: it's not IE-only. other companies were quite engaged ACTION: TabAtkins to talk to the Performance WG about will-change <trackbot> Created ACTION-615 TabAtkins: want to take feedback before asking for FPWD dbaron: would like this to be a group editor's draft TabAtkins: I do have a "dream" status I can use for this krit: we want to get it reviewed, so it should be a W3C space RESOLVED: publish will-change in the CSS WG repo as an Unofficial Draft <br type="lunch"> Blending & Compositing CR ------------------------- Scribe: TabAtkins <smfr> http://dev.w3.org/fxtf/compositing-1/ cabanier: We changed the sections from 4 onward to be normative. cabanier: There was a 3-week period for comments. cabanier: There was a comment from Eric about a stale ref, which I removed. cabanier: I've prepared a DoC. cabanier: And we've been working on test cases. cabanier: People have been contributing quite a few tests. cabanier: Working on impl in 3 browsers. cabanier: Right now, FF is probably the most stable. heycam: Did you do all three? cabanier: No, separate engineers. cabanier: People have begun experimenting quite a bit with it. We've done almost no evangelizing, but people get excited anyway. cabanier: Some person made a bunch of cool demos: <cabanier> codepen: http://codepen.io/collection/Kgshi/ cabanier: [shows off some of the demos] cabanier: So right now I think we're ready for CR. TabAtkins: I've been meaning to suggest some editorial rewrites for some time, but that shouldn't block CR. smfr: You've got some theoretical sections - I'd like to see more examples showing which CSS properties I can use to get each of the effects you're talking about. smfr: Like section 10. krit: Canvas also uses this stuff. smfr: Right, but I'd still like to see a simple CSS example. ACTION cabanier to provide more CSS examples in the Compositing spec. <trackbot> Created ACTION-616 heycam: What were the LC issues? cabanier: Just one from Erik, about a stale ref. ChrisL: You still have a link to SVG Tiny in your abstract. It should be changed to SVG 1.1. Action krit to change the Abstract link to SVG 1.1 in Compositing. <trackbot> Created ACTION-617 <ed> it should also use the referencing syntax in the abstract, like "...sometext... [SVG11]" heycam: The other changes in your DoC, what are they? cabanier: They were from the previous LC. ChrisL: You'd usually start a new DoC. Helps with patent issues. ACTION krit to action rik to reduce the DoC to only the issues from this LC. <trackbot> Created ACTION-618 ChrisL: [something about the wording of the abstract regarding the 2dcontext reference] <ChrisL> its ambiguous on which spec is the normative definition plinss: How are we on tests? cabanier: [brings up the repo with tests] <cabanier> tests: https://github.com/w3c/csswg-test/tree/master/contributors/adobe/submitted/css-compositing RESOLVED: Compositing to CR, pending the edit nits brought up today.
Received on Thursday, 20 February 2014 00:19:52 UTC