Changes between Version 12 and Version 13 of QtWebKitForQt5

Oct 31, 2011 7:04:54 AM (12 years ago)
Simon Hausmann



  • QtWebKitForQt5

    v12 v13  
    2121Consequently the interface to the browser should change:
    23    * Our focus should be on making the WebKit2 port fast and stable enough for a browser.
    24    * A QML based UI component offers built-in handling for gestures, touch events and scrollbars.
     23   * Our focus should be on making the WebKit2 port fast and stable enough for a web browser.
     24   * A QML based UI component offers built-in handling for gestures, touch events (and scrollbars?).
    2525   * We should not spend time designing APIs that allow for feature combinations or software fallbacks that don't make sense. Features like WebGL or video should either work out of the box properly accelerated or be disabled.
    2626   * The QWidget/QGraphicsView based WebKit1 API moves into a separate shared library that links against QtWebKit.
    3232=== WebKit2, Scene Graph, Tiling and Accelerated Compositing ===
    34 We need to determine the best way to integrate tiling / AC with the Qt scene graph. An initial pragmatic solution
    35 would be to port the tiling to the scene graph directly and render the AC layers into an intermediate FBO.
     34The implementation currently chosen is the following:
    37 Another option would be to separate scene graph rendering from WebKit by rendering WebKit2 with raw OpenGL through
    38 the Texture Mapper first and then the entire QML scene on top.
    40 The approach requiring probably the most effort is to essentially re-implement WebKit2 UI-process sided AC on top of
    41 the scene graph, i.e. let the web process serialize the layer & animation information to the UI process where the layer
    42 tree is replicated in terms of scene graph geometry nodes and texture materials that are subject to animation.
     36    * We're permanently in the state of composition.
     37    * Layers are tiled and the tiles are "managed" in the web process side.
     38    * Layer information is serialized and sent across to the UI process (LayerTreeHost and WebGraphicsLayer)
     39    * The UI process feeds the layers into the texture mapper (LayerTreeProxyHost)
     40    * The OpenGL texture mapper implementation renders before/after the scene graph.
    4442=== Library split ===
    7371In order to render embedded videos efficiently and provide seamless transitions to fullscreen playback, we require from the platform
    74 the ability to render video into textures. For fullscreen playback we should piggy-back on the fullscreen element feature in WebCore/WebKit2
    75 that integrates with AC. The video texture becomes the root layer and the controls live in their own layer on top.
     72the ability to render video into textures. Implementation bits that appear to be necessary:
     74   * For each platform, determine the way of sharing textures across process boundaries (for example X11: X pixmaps)
     75   * Add support for platform specific cross-process texture sharing to the WK2 AC implementation and the texture mapper.
     76   * Change the corresponding media player back-end to render into such texture-backed layers.
     77   * Implement support on the UI process side for establishing the UI for the temporary root layer for fullscreen elements. (maybe a dedicated QWindow subclass that renders straight with a dedicated GL texturemapper instance that small tree of texture mapper nodes that represent the layers of the fullscreen element hierarchy)
    7779=== JavaScript ===