Monday, December 7, 2015

Hardware Acceleration on WebKit 1, WebKit 2 and QtWebEngine with Qt on Raspberry Pi 2

There are a few solutions to get a browser with good performance on Raspberry Pi 2, but I wanted to test solutions that provide this to a Qt app on OpenGL without X11. The two main options I know are the "old" QtWebKit and the new QtWebEngine. I know that there are a couple of ways to use QtWebKit, one is with the first implementation, WebKit 1, the other is through WebKit 2. Also, it is possible to use WebKit 1 using the regular software raster paint engine and the OpenGL paint engine, which is the one I used in the previous article to implement the HTML5 video feature.
I therefore wanted to have a look at the performance of the animations (I'm not talking about WebGL here), so here it is; the video shows three samples (thanks to the authors!) run on each of these alternatives: WebKit 1 on raster, WebKit 1 on OpenGL, WebKit 2 and then QtWebEngine.

As you can see WebKit 1 on raster is completely unusable and WebKit 1 on OpenGL is clearly better, but still not very good. Also you can see how the pointer moves: the main thread is too busy and user interaction is difficult. WebKit 2 and QtWebEngine solve this issue and improve performance.

6 comments:

  1. Great Examples!
    Did you have to do some optimizations? Or is the QtWebEngine performance just out of the box?
    I tested here and the performance isn't that good, maybe I'm missing something

    ReplyDelete
  2. On the QMultimedia you have created a backend for video players. What did you have done here?

    ReplyDelete
    Replies
    1. In this case it is just what you should see once properly built. Hardware acceleration for CSS is provided by WebKit depending on what engine you use.

      Delete
  3. Hi. It's really awesome!. Could you make some brief tutorial? I would like to try it on Orange pi2

    ReplyDelete
    Replies
    1. Orange Pi uses a different chip and I don't own it, sorry.

      Delete