Skia Graphics Engine

From Wikipedia, the free encyclopedia
Jump to: navigation, search
Skia Graphics Engine
Original author(s) Skia Inc.
Developer(s) Google
Written in C++
Type Graphics library
License New BSD License
Website code.google.com/p/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 Mozilla Firefox, Google Chrome, Chrome OS, Chromium OS, Sublime Text 3, Android (although partially superseded by libhwui starting with Android 3.0[2]) and Firefox OS. 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[edit]

References[edit]

External links[edit]