Friday, October 8, 2010

AC for plugins

I have been away from WebKit development for a while. There were some pressing matters in Maemo6 to attend to.

One of the things I am working on is the Flash support for Maemo6. And I am finding that the abstractions of QGV, meegotouch, Qt/WebKit are "adding up" resulting in much slower fps than using just plain Qt.

Some time back, Simon explained to me the concept of Accelerate Compositing. WebKit has no AC support for NPAPI plugins but by doing so we can remove the Qt/WebKit overhead when updating frames. Also, it allows us to implement Flash transparency correctly in QGV.

So, yesterday evening, I started hacking on Accelerated Composition (AC) for NPAPI plugins. With help from Noam, I am happy to report that Flash is rendering with AC :-) Expect it to land sometime next week. Here's a screenie with the fps.



(And oh, that's the first screenshot in this blog :)

UPDATE: You can find the initial code at http://gitorious.org/~girish/webkit/girishs-webkit/commits/plugins_ac_35524. https://bugs.webkit.org/show_bug.cgi?id=35524 is the bugzilla entry.

Wednesday, October 6, 2010

Cut your link time in half when building in Scratchbox/arm

... by passing --no-svg to build-webkit :)

I'm down to 1 minute 50 seconds from about 5 minutes. What's your link time? :)

Any other ideas how to improve the linking?

Problems with perl when building WebKit on Windows (even for Symbian)?

Seen this error message before?



python C:/dev/webkit/WebCore/html/parser/create-html-entity-table -o generated/HTMLEntityTable.cpp C:/dev/webkit/WebCore/html/parser/HTMLEntityNames.in
perl C:/dev/webkit/WebCore/make-hash-tools.pl generated C:/dev/webkit/WebCore/html/DocTypeStrings.gperf
syntax error at C:/dev/webkit/WebCore/make-hash-tools.pl line 149, near "} continue"
syntax error at C:/dev/webkit/WebCore/make-hash-tools.pl line 151, near "}"
Execution of C:/dev/webkit/WebCore/make-hash-tools.pl aborted due to compilation errors.
make: *** [generated\DocTypeStrings.cpp] Error 9
make: Leaving directory `C:/dev/webkit/WebCore'
Failed to generate WebCore's derived sources!



The reason is most likely that the files in your working directory - including the perl script(s) - are checked out with Windows line-endings and your perl version doesn't like it. The build of WebKit works most reliably with Unix linefeeds, so here is how you can convert your existing checkout:

git config core.autocrlf false
del .git\index
git read-tree HEAD
git checkout -f

Monday, October 4, 2010

qtwebkit-2.1-week40 status report - changes since qtwebkit-2.1-week38

Release Notes for qtwebkit-2.1-week40 - Changes since qtwebkit-2.1-week38

7 bugs, 9 commits

Bugs fixed:

  • #45509: REGRESSION: r61215 broke web views with transparent backgrounds
  • #46385: Keep viewport information in Document
  • #46617: [Qt] tst_QWebFrame::popupFocus() randomly fail on MeeGo handset because the focus is not set on the window
  • #46618: [Qt] : Enable local rendering on Maemo6
  • #46706: [Qt] tst_QWebPage::testStopScheduledPageRefresh() fails on MeeGo handset
  • #46730: [Qt] Clean up QWebPage::ViewportConfiguration API
  • #46812: [Qt] Crash if an scene with accelerated compositing layout during the paint event

Commits cherry-picked:

  • cddf898: 2010-09-27 Benjamin Poulain
  • eda6059: 2010-09-27 Girish Ramakrishnan
  • 90ea290: 2010-09-24 Luiz Agostini
  • d407fb8: 2010-08-18 Laszlo Gombos
  • 37291a9: 2010-09-28 Benjamin Poulain
  • 9615fdd: 2010-09-28 Andreas Kling
  • bf85131: 2010-09-09 Simon Fraser
  • 13e454d: 2010-09-29 Andreas Kling
  • 35e5a3e: 2010-09-30 Benjamin Poulain

Saturday, September 25, 2010

qtwebkit-2.1-week38 status report - changes since qtwebkit-2.1-week37

Release Notes for qtwebkit-2.1-week38 - Changes since qtwebkit-2.1-week37

18 bugs, 33 commits

Bugs fixed:

  • #38324: [Qt] Fix compilation with QT_NO_FEATURE
  • #41155: In FrameLoader, m_URL is not set before calling client dispatchDidCommitLoad for cached pages
  • #42787: The transaction callback parameter of db.changeVersion() should be optional
  • #43009: Abstract out page allocation from executable allocators
  • #43162: Add support for MADV_FREE to PageAllocation
  • #43185: Switch RegisterFile over to use PageAllocation
  • #43234: [QT] build fix for symbian
  • #43269: Change the JavaScript heap to use the new PageAllocation class
  • #43390: Do not CRASH if we run out of room for jit code.
  • #43515: Fix small design issues with PageAllocation, split out PageReservation.
  • #44324: [Qt] Initialize GDK before loading plugins
  • #44769: [Qt] Web Sockets are insecure with QtWebKit
  • #45878: [Qt] Symbian scoping in Qt build profile is wrong
  • #45965: [Qt] Don't copy clip path to TransparencyLayer
  • #46172: [Qt] Add robot loader timeout and extra time options.
  • #46174: [Qt] Crash while aborting a loading page.
  • #46345: [Qt] Refactor QtWebKitPlatformPlugin interface
  • #46402: [Qt] QWebHapticFeedbackPlayer needs correct exposure through QWebKitPlatformPlugin

Commits cherry-picked:

  • db31c6a: 2010-09-18 Andreas Kling
  • ab9219b: 2010-09-20 Jacob Dinu
  • a47890e: [Qt] Add robot loader timeout and extra time options. https://bugs.webkit.org/show_bug.cgi?id=46172
  • 6160419: 2010-09-21 Jocelyn Turcotte
  • 0512e77: 2010-08-14 Tasuku Suzuki
  • a74784a: 2010-08-20 Andreas Kling
  • 888e052: Bug 43009 - Abstract out page allocation from executable allocators
  • 7a94124: Build fix for !Mac platforms.
  • db8c6f7: Chromium/GTK build fix
  • 2557fec: Windows build fix from Chromium/GTK build fix!
  • e35e861: Bug 43162 - Add support for MADV_FREE to PageAllocation.
  • e582139: 2010-07-30 Mahesh Kulkarni
  • 986ae02: 2010-08-02 Mahesh Kulkarni
  • 6839b66: Bug 43390 - Do not CRASH if we run out of room for jit code.
  • 8565c8e: https://bugs.webkit.org/show_bug.cgi?id=43269
  • c0dbef5: Build fix following r64624.
  • 4da2cb3: Speculative windows build fix.
  • 1fcab4f: Build fix.
  • 0ea3d0d: Build fix.
  • 1c5d170: JavaScriptCore: Bug 43515 - Fix small design issues with PageAllocation, split out PageReservation.
  • 5ec36dd: Build fix - add new header to !Mac projects.
  • 90459cd: Windows build fix.
  • d06ce7e: Windows build fix part II.
  • aa118f4: Bug 43185 - Switch RegisterFile over to use PageAllocation
  • cced885: [Symbian] Fix commit/decommit of system memory using RChunk
  • 9b5a4b4: 2010-09-23 Tor Arne Vestb
  • 0f90c4b: Fix Qt build by adding missing file
  • 005c88d: 2010-09-23 Ademar de Souza Reis Jr
  • a2fab5a: 2010-09-24 Yael Aharon
  • 7792647: 2010-09-16 Thomas Zander
  • e24799e: [Qt] Enable building Qt/Webkit with debug symbols
  • 40a9f70: [Qt] Fix the Wince build.
  • 8e0cd1b: WebCore: Make db.changeVersion()'s third parameter optional, as required by the spec. https://bugs.webkit.org/show_bug.cgi?id=42787

Thursday, September 23, 2010

fatal: The remote end hung up unexpectedly

Gitorious is getting a bit grumpy at clones and fetches lately, especially with big repositories such as WebKit.

A workaround, as suggested by Simon and the Gitorious support, is simply to use the SSH protocol instead of the Git protocol, even for read-only access to repositories. This requires to have a Gitorious account setup, which most of us should have already.

You can edit your .git/config file to achieve that by changing the line
url = git://gitorious.org/webkit/webkit.git
to
url = git@gitorious.org:webkit/webkit.git

Do the same for the QtWebKit team repository:
url = git@gitorious.org:+qtwebkit-developers/webkit/qtwebkit.git

Gitorious are reporting having difficulties to handle all the traffic they currently have, I guess this may affect the stability of the daemon serving the git:// protocol, who knows.

Monday, September 20, 2010

This week (37) in Oslo

A fast-paced week:
  • Andreas and I finished what Vlad had started: QtWebKit trunk can now be built against V8. There's one catch: Not just any V8, it's our experimental evaluation port of QtScript that uses V8. On the upside it means the death of the ugly bridge code and instead QWebFrame::addToJavaScriptWindowObject use QtScript's native QObject bindings. Latest news is that the Web Inspector started working with the V8 build, too.
  • Andreas fixed a miter-join bug in Qt's stroker, allowing the removal of ugly workarounds in the Qt port of WebKit. Transparency layers have also received a nice performance boost through the removal of unnecessary clipping.
  • Tor Arne is hacking away on the low-end version of the video playback and QtMultimediaKit.
  • We had an intense workshop the entire week, focusing on knowledge sharing about WebKit and Qt development and the Symbian port.