Skia Graphics Engine
![]() | |
Original author(s) | Skia Inc. |
---|---|
Developer(s) | |
Repository | |
Written in | C++ |
Operating system | Android, iOS, Linux, macOS, Windows |
Type | Graphics library |
License | New BSD License |
Website | skia github |
The Skia Graphics Engine is an open-source graphics library written in C++. Skia Inc. originally developed the library; Google acquired it in 2005,[1] and then released the software as open source licensed under the New BSD free software license.
Now known as Skia, the library is used as of 2017[update] in Google Chrome, Chrome OS, Chromium OS, Mozilla Firefox, Mozilla Thunderbird, Android (although partially superseded by HWUI starting with Android 3.0[2]), Firefox OS, and Flutter. 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 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.
- ^ Guy, Romain (18 May 2014). "Android's Font Renderer". medium.com. Retrieved 19 April 2018.
- ^ "The Skia 2D Graphics Library From Google - Phoronix". www.phoronix.com. Retrieved 19 April 2018.
- ^ Kilgard, Mark J. (2012). "GPU-accelerated path rendering". ACM Transactions on Graphics. 31 (6): 1–10. doi:10.1145/2366145.2366191.
- ^ http://on-demand.gputechconf.com/gtc/2014/presentations/S4810-accelerating-vector-graphics-mobile-web.pdf