Skia Graphics Engine

From Wikipedia, the free encyclopedia
Jump to: navigation, search
Skia Graphics Engine
Skia Project Logo.svg
Original author(s) Skia Inc.
Developer(s) Google
Written in C++
Operating system Android, iOS, Linux, macOS, Windows
Type Graphics library
License New BSD License
Website

skia.org,

github.com/google/skia/

The Skia Graphics Engine is a compact open source graphics library written in C++. Skia Inc. originally developed the library; Google aquired 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 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[edit]

References[edit]

External links[edit]