Changes between Version 8 and Version 9 of CoordinatedGraphicsSystem

Aug 3, 2012 1:42:13 PM (11 years ago)



  • CoordinatedGraphicsSystem

    v8 v9  
    4646== [#=TextureMapper Texture Mapper] ==
    4747TextureMapper is a light-weight scenegraph implementation that is specially attuned for efficient GPU or software rendering of CSS3 composited content, such as 3D transforms, animations and canvas.
     48It is a combination of a specialized accelerated drawing context (TextureMapper) and a scenegraph (TextureMapperLayer).
    4950TextureMapper is pretty well-contained, and apart from the backing-store integration, it is thread safe.
    128129LayerTreeCoordinator is also responsible for two ''special layers'' that are not recognized as “composited” by WebCore – a layer for the '''main web-content''', known as non-composited content, is treated as a layer. That is also true for the '''overlay layer''', which paints things such as the scrollbar and the tap indicators.
    130 Another important role of LayerTreeCoordinator is to receive the viewport information from the UI process, and to propagate that information to the different backing-stores so that they can prepare to create/destroy tiles.
     131Another important role of LayerTreeCoordinator is to receive the viewport information from the UI process, and to propagate that information to the different tiled backing-stores so that they can prepare to create/destroy tiles.
    132133'''[/browser/trunk/Source/WebKit2/UIProcess/LayerTreeCoordinatorProxy.cpp LayerTreeCoordinatorProxy]''' is what binds together the viewport, the GPU renderer and the contents. It doesn't have functionality of its own, instead it acts as a message hub between those components.
    139140* Using ScrollingCoordinator instead of the home-brewed fixed-position adjustments, also use it to support UI-side overflow:scroll. There is still a lot to do around scrolling.
    140141* Serializing and coordinating CSS shaders, once they're implemented in TextureMapper.
    141 * VSync support in the UI process, separately from QtScenegraph.
    143143== [#=CoordinatedBackingStore Coordinated Backing Store] ==
    184184Some other functionality is in QQuickWebPage::updatePaintNode.
     186Note that the QtScenegraph solves many things that would need to be solved separately if not using it, such as vsync.
    186188== [#=CSSAnimations CSS Animation Support] ==
    187189Currently, in WebKit2, CSS animation frames are handled together with all other frames – the web process re-layouts for each frame, and sends the new transform/opacity/filter information together with the rest of the frame. The requestAnimationFrame feature, which allows synchronizing animations with the display refresh, is synchronized with LayerTreeCoordinator to make sure those animation frames are interpolated as accurately and smoothly as possible, avoiding choppiness and throttling.
    197199The other option is to serialize the WebGL display list to the UI process, making the actual GL calls there, into an FBO. This is a safer and potentially more cross-platform approach, however it's yet to be seen how much of an undertaking it is, and how well it scales.
    199202== Comments ==
    201204Would be great with more infomation about how vsync and triple buffering fits into all of this (
     205NR: Vsync/triple-buffering is done in the driver/QtScenegraph level. Added a comment.
    203207It is not so clear how TextureMapper and TextureMapperLayer etc fits together. Like it sounds as TextureMapper is a scene-graph and also a drawing context. Maybe this could be a bit more clear.
     208NR: TextureMapper is a drawing context, TextureMapperLayer is a scenegraph. Updated.
    205210Can UpdateAtlas be used with canvas like in ?
     211NR: yes, we can use a texture atlas for accelerated 2D canvas. However, accelerated 2D canvas is not yet supported and not discussed in this document :)
    207213How to make thumbnails etc. Using the software implementation. Does the software implementation have limitations?
     214NR: I'd rather make thumbnails with GL and then glReadPixels. The software implementation doesn't have inherent limitations, but it renders slightly differently.
    209216You say that layer tree coordinator sends viewport information for creating, deleting tiles etc. That is only when using the TiledBackingStore. Maybe that could be made more clear
     217NR: Not sure what comment to add.
    211219How does HW accelerated 2D canvas come into place?
     220NR: It needs the same things that WebGL needs, e.g. GraphicsSurface or serialized commands. But it's not baked enough to write anything about.