Saturday, December 4, 2010

WebKitGtk vs QtWebKit

Comparing functionality and features of Qt (QtWebKit) and GTK+ (WebKitGtk) ports of WebKit.

Scrolling Performance

It seems that as of 1.2.5, WebKitGtk has one fairly big usability issue comparing to QtWebKit: it has very slow (and high CPU usage) scrolling on some pages/sites. All browsers based on WebKitGit are slow on those pages, while all browsers based on QtWebKit are OK there, so that's indeed a framework issue.

Midori FAQ has an entry on this ("Scrolling on website xyz is very slow").

It turns out that this can be result of multiple bugs:
WebKitGtk 1.3.7 status: Seems to be mostly fixed, all pages from below show good scrolling performance, though ones with image backgrounds show not as smooth scrolling (but that's yet another issue).

Examples:

Related:
  • http://blogs.igalia.com/alex/2010/09/17/rendering-shadows-and-tiles/
  • https://bbs.archlinux.org/viewtopic.php?pid=860692 

Image Scaling Quality

On the other hand, when scaling images, QtWebKit 4.6.3 appears to (by default?) use nearest neighbour filter, while WebKitGtk uses smooth bilinear filter. In Qt 4.7.1 it's the same.

But it seems to be fixed in the latest QtWebKit, this post tells:
[01 Sep 2010] Re: no interpolation after scale image to a larger size?

This was fixed here:
[Qt] Enable smooth pixmap transforms by default

The change was too late for Qt 4.7 but will be part of the upcoming
QtWebKit 2.1 release.

As of now, QtWebKit 2.1 is still not released.

Btw, according to the patch, nearest-neigh filter is used exactly by default, it can be changed by client. Need to try that in Arora. - Well, not in Qt 4.6.3, there GraphicsContext::setImageInterpolationQuality() is empty.

No comments: