Great news! I guess that may also mean billm's bug 1308039 [1] which tried to do painting during GC (which will be backed out soon [2] because of lots of breakage) may never get chance to land anymore, since this API means it is expected to run JS code during painting.
[1] https://bugzilla.mozilla.org/show_bug.cgi?id=1308039 [2] https://bugzilla.mozilla.org/show_bug.cgi?id=1328423 - Xidorn On Fri, Jan 6, 2017, at 03:00 AM, Jet Villegas wrote: > Spec: https://drafts.css-houdini.org/css-paint-api/ > > Summary: The CSS Paint API is the first of several Web Rendering > proposals > from the CSS Houdini Task Force. The CSS Paint API allows Web authors to > define and register a custom Paint method to be executed by the Layout > engine as other elements are rendered. > > Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1302328 > > Link to standard: https://drafts.css-houdini.org/css-paint-api/ > > Platform coverage: Android, Desktop > > Estimated or target release: TBD > > Preference behind which this will be implemented: TBD > > DevTools bug: TBD > > Tests - TBD > > Implementation Details: > > CSS Paint API depends on the implementation of the following features: > CSS Houdini Properties & Values - https://bugzilla.mozilla.org/ > show_bug.cgi?id=1273706 > Houdini "Worklets" - https://bugzilla.mozilla.org/show_bug.cgi?id=1290021 > > The planned implementation in Gecko builds upon the HTML5 Canvas2D API to > provide the rendering surface for CSS Paint. > > Risks: > > The experimental implementation has progressed enough to warrant this > public Intent to Implement. However, significant risks will need to be > mitigated by careful design and execution if these features are to pass > the > experimental stage and ship in Firefox, including: > > 1. Use Cases. It's not clear that the use cases proposed in the > specification warrant the additional Rendering System complexity. Apart > from conical gradients, we haven't seen many author requests for the > other > use cases. If the existing Canvas2D feature set is lacking, what are the > compelling use cases and maximally useful API for such use cases? It's > not > clear that the proposed Canvas2D-based API is desirable over a different > API design (eg., WebGL) if most use cases need to directly manipulate > pixels. > > 2. Rendering Performance. The planned Canvas2D backing store approach may > be too slow for real-world usage of the API. In the future, we may > replace > the Canvas2D approach to have the custom paint methods create Layout > (displayList) nodes for direct rendering by the Layout engine, bypassing > the need for a Canvas2D backing store. It's worth noting that the Paint > API > isn't directly compatible with existing displayList nodes (e.g., support > for raw paths, funny shapes, & pixel manipulation.) > > There may also be other performance issues that arise with the API's > usage > in combination with existing CSS features (e.g., CSS Masking, Filters, > etc.) The displayList vs. canvas bitmap implementation would probably > look > a good bit different in WebRender. It's also worth noting that multiple > implementations shipping a bitmap-based version can create dependencies > that prevent us from switching to a faster alternative version in the > future. > > 3. Integration with Gecko Architecture. The Quantum Project < > https://wiki.mozilla.org/Quantum> is a major overhaul of the Firefox > Rendering Engine. Implementing the CSS Paint API while that effort is in > progress may add significant impedance. However, a counter-argument is > that > we should design Quantum to allow for such extensibility in the future. > Duplication of work ( writing code that would need to be rewritten for > Quantum ) is not desirable and should be avoided. > > For WebRender/Quantum, we could initially push this through the same path > that SVG will go through (which will be rasterized on the CPU and then > cached in a GPU texture atlas). It does seem like Houdini Paint could > reduce the amount of acceleration we can do on the GPU (at least in the > short term), but we won't be any worse off than other browsers in that > regard. > > 4. Dependency on incomplete implementations/specifications. The > dependency > creates a chicken/egg scenario where we can't sufficiently evaluate the > dependent specifications (e.g, Worklets, and Properties & Values) without > also implementing an initial key use case (e.g., CSS Paint or Worklets > for > Web Audio.) This is somewhat mitigated by getting the implementation far > enough along to formulate informed opinions on all the specifications. > > The Houdini Task Force is meeting next week in Seattle to discuss this > and > other specifications. > _______________________________________________ > dev-platform mailing list > dev-platform@lists.mozilla.org > https://lists.mozilla.org/listinfo/dev-platform _______________________________________________ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform