Skia Graphics Engine
Original author(s) | Skia Inc. |
---|---|
Developer(s) | |
Written in | C++ |
Type | Graphics library |
License | New BSD License |
Website |
skia |
The Skia Graphics Engine is a compact open source graphics library written in C++. It was originally developed by Skia Inc., which was subsequently acquired by Google in 2005,[1] who then released the software as open source licensed under the New BSD free software license.
Now known as Skia, it is currently used in Google Chrome, Chrome OS, Chromium OS, Mozilla Firefox, Android (although partially superseded by libhwui starting with Android 3.0[2]), Firefox OS, and Sublime Text 3. The Skia library is also present on the BlackBerry PlayBook, though the extent of its usage is unclear.
Skia has several back-ends, including one for CPU-based software rasterization, one for PDF output, and one for GPU-accelerated OpenGL. Partially implemented back-ends (which may lack some features) are also available for OpenGL ES, OpenVG, SVG, and Adobe SWF (Flash). Skia also has front-ends that allow it to convert popular vector graphics formats such as SVG, PostScript, PDF, SWF, and Adobe Illustrator files into its own API calls. Skia is most similar in purpose to Cairo (meaning that it focuses on drawing) rather than to other more elaborate infrastructures like Qt that provide their own widgets etc.[3]
Mark Kilgard and Jeff Bolz explain (and criticize) the internals of Skia (as of 2012) in the following terms:[4]
Skia has a conventional CPU-based path renderer but has recently integrated a new OpenGL ES2-accelerated back-end called Ganesh. Ganesh has experimented with two accelerated approaches. The first used the stencil buffer to render paths. Because of API overheads with this approach, this first approach was replaced with a second approach where the CPU-based rasterizer computes a coverage mask which is loaded as a texture upon every path draw to provide the GPU proper antialiased coverage. This hybrid scheme is often bottlenecked by the dynamic texture updates required for every rendered path.
Since then, Skia has added support for the proposed NV path rendering OpenGL vendor extension (of which Kilgard is the lead author).[5]
See also
References
- ↑ Malik, Om (2 Sep 2008). "Google Open Sources Skia Graphics Engine". gigaom. Retrieved 31 August 2011.
- ↑ https://medium.com/@romainguy/androids-font-renderer-c368bbde87d9
- ↑ The Skia 2D Graphics Library From Google
- ↑ Kilgard, Mark J. (2012). "GPU-accelerated path rendering". ACM Transactions on Graphics. 31 (6): 1. doi:10.1145/2366145.2366191.
- ↑ http://on-demand.gputechconf.com/gtc/2014/presentations/S4810-accelerating-vector-graphics-mobile-web.pdf
External links
- Official website
- Skia Path Ops : High Performance Set Operations for Geometry on YouTube
- http://www.slideshare.net/snailee/skia-freetype-android-2d-graphics-essentials