Sorting Out Libskia

September 9th 18:09
by why

Vladimir Vukićević: Another graphics library, Skia, has recently appeared as part of the Google Chrome code drop. It’s unfortunate that Google felt they needed to develop their own alternative in a closed fashion instead of joining an existing open source project. The Cairo project, and through it the many open source projects that depend on it, could have benefitted from the work that was done on Skia behind closed doors. Even worse, unlike most of the rest of the Chrome code, Skia is licensed under the Apache Public License v2.0. This creates difficulties in being able to reuse the Skia code in most projects.

However, on a happy note, hopefully it will ignite a performance race between itself and Cairo. I also wonder if Cairo will ever pick up what Skia has in the way of effects and animation. Cairo does have filters, gradients. But not blurs and lighting effects.

The biggest obstacle to using Skia on its own, though, is that Skia is really only partially released. It’s a 403. Allegedly, some folks were able to nab the source during a brief window on March 4th of last year. And the source code in the Chrome tree is a snapshot that seems incomplete. For example, much of the native code (to paint directly to X11, Windows, OS X contexts) seems missing.

For my part, I’d like to see how Shoes would run if forked to be Skia-powered. Can’t seem to hook it all up just yet.


Skia can be built seperately, though.

$ git clone git://github.com/why/skistrap.git
$ cd skistrap
$ make fetch
$ make

Presuming you have the includes and libs for libpng, libjpeg, libgif and libX11, you’ll end up with libskia.so.

There’s also a make test, but I haven’t got it hooked up to X11 quite yet, as there’s no ports/SkOSWindow_Unix.cpp or the like. And it looks like the GL bindings it uses are for other platforms.

Now begin the comments …

5 comments

Evan M

said on September 9th 23:44

We’re hard at work getting Skia (and the rest of Chromium) working on other platforms. We (those working on Chromium) on try to not patch third-party code, preferring to submit stuff upstream. I notice mention of an upstream in the commit log for that skia directory you mention. To be honest, I don’t know hardly anything about Skia’s status as an upstream project.

Most of our porting work has gone on under base/gfx (see commit log: http://src.chromium.org/viewvc/chrome/trunk/src/base/gfx/?view=log ), which may have some useful platform-specific bits for you to nab. But nothing for Linux yet.

Simon

said on September 10th 04:22

If this is what draws Chromes render then its a pretty shoddy job.
Come on ugly clumsy blocky edges on text
aliased rounded corners

lame

_why

said on September 10th 17:45

Evan M: Thankyou for reporting from the inside. How nice it would be to hear from some Skia staff on their plans.

Simon: Sure, but I wonder about the art used to draw the browser tabs and animations. If that stuff is all painted by Skia, then it might end up being something rather lovely.

Simon

said on September 11th 08:00

Good point then, the actual browser itself looks and feels very very slick by windows app standards. I was pleasantly surprised.

ka2

said on September 12th 19:39

@_why I believe they are pngs: http://src.chromium.org/viewvc/chrome/trunk/src/chrome/app/theme/

Comments are closed for this entry.