Revery: SKIA Roadmap

Created on 18 Apr 2019  路  5Comments  路  Source: revery-ui/revery

Currently, Revery has its own home-grown rendering platform on top of OpenGL. This has gotten us pretty far, but long-term, it makes sense to use a more mature platform: Skia

Skia is used by a variety of high-performance frameworks and applications, including:

  • Sublime Text
  • Chrome
  • Flutter

Skia is a battle-tested and performant framework. In particular, there are several deficiencies in our rendering layer that would be addressed by integrating Skia:

  • Better GPU utilization (draw call batching)
  • Subpixel anti-aliasing for text rendering
  • Vector graphics support

__Work Required:__
See our Kanban board

A-rendering A-technical enhancement

Most helpful comment

Skia is in! #567

All 5 comments

Hey @bryphe! :)

I would like to propose to add a label skia-dependent or skia-related to the GH repo, to tag issues that could be affected by the ongoing work with Skia, and that are subject to be reconsidered / revisited after this work gets to a more realized state.

The reason is that the work in Skia will have a lot of impact in Revery, and having such label could help contributors make more informed decisions on which issues are more "stable", so they can know if any work on them has a chance of persisting after a potential refactor if/when this Skia integration happens.

What do you think?

Hey @jchavarri ! Sorry for the slow reply, fell of my radar - but the plan sounds great to me. I added a skia-dependent tag and did a first pass: https://github.com/revery-ui/revery/issues?q=is%3Aopen+is%3Aissue+label%3Askia-dependent

@twop - what benefits would you see to using webrender or pathfinder as opposed to Skia?

IMO, there'd only be challenges:

  • I don't believe there is a clear story for Rust interop (unfortunately - this would be nice to have!), so integrating either of those libraries would be difficult today.
  • Skia is more 'battle-tested' - being used in Chrome, Flutter, and Sublime Text.

WebRender probably wouldn't be the right fit; we only need a subset of drawing primitives - not a full a browser renderer. Pathfinder does seem like a similar feature set to Skia, though. I guess it potentially could be faster than Skia? But I couldn't find any benchmarks comparing them. Let me know if you have thoughts on them compared to Skia.

I don't know how complete it is, but Pathfinder seems to at least have a C API readily available - https://github.com/servo/pathfinder/blob/master/c/include/pathfinder/pathfinder.h

That doesn't change the benefits of Skia's age and use. Rust's underlying safety guarantees would be nice to have though.

Skia is in! #567

Was this page helpful?
0 / 5 - 0 ratings

Related issues

bryphe picture bryphe  路  3Comments

bryphe picture bryphe  路  6Comments

jericdeleon picture jericdeleon  路  3Comments

nic0lino picture nic0lino  路  6Comments

mitchdz picture mitchdz  路  6Comments