Changes between Version 35 and Version 36 of CoordinatedGraphicsSystem


Ignore:
Timestamp:
Mar 7, 2017 9:43:38 AM (7 years ago)
Author:
Konstantin Tokarev
Comment:

GraphicsLayerAnimation was renamed to TextureMapperAnimation

Legend:

Unmodified
Added
Removed
Modified
  • CoordinatedGraphicsSystem

    v35 v36  
    6262TextureMapper is pretty well-contained, and apart from the backing-store integration, it is thread safe.
    6363
    64 TextureMapper includes/uses the following classes. Note that the last two (without TextureMapper in the name), do not depend on TextureMapper, but are currently used only by it.
     64TextureMapper includes/uses the following classes. Note that GraphicsLayerTransform (which doesn't have TextureMapper in the name) does not depend on TextureMapper, but is currently used only by it.
    6565
    6666'''[/browser/trunk/Source/WebCore/platform/graphics/texmap/TextureMapper.cpp TextureMapper]''' is an abstract class that provides the necessary drawing primitives for the scenegraph.
     
    9393However, rendering each of these phases into an intermediate surface would be costly on some GPUs. Therefore, TextureMapperLayer does its best to avoid using intermediate surfaces unless absolutely needed. For example, content that has reflections and no masks or opacity would not need intermediate surfaces at all, and the same goes for content with mask/opacity that does not have overlapping sub layers.
    9494
    95 Another use of TextureMapperLayer is to tie together TextureMapper, GraphicsLayerTextureMapper, TextureMapperBackingStore, GraphicsLayerAnimation and GraphicsLayerTransform. It includes all the synchronization phases, that are responsible to time when changes coming from different sources are actually supposed to occur. Without proper synchronization, many times flickers or artifact bugs will occur.
     95Another use of TextureMapperLayer is to tie together TextureMapper, GraphicsLayerTextureMapper, TextureMapperBackingStore, TextureMapperAnimation and GraphicsLayerTransform. It includes all the synchronization phases, that are responsible to time when changes coming from different sources are actually supposed to occur. Without proper synchronization, many times flickers or artifact bugs will occur.
    9696
    9797'''[/browser/trunk/Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp GraphicsLayerTextureMapper]''' is the glue between [/browser/trunk/Source/WebCore/platform/graphics/GraphicsLayer.cpp GraphicsLayer] and TextureMapperLayer. Since TextureMapperLayer is thread-safe and GraphicsLayer is not, GraphicsLayerTextureMapper provides the necessary glue. GraphicsLayerTextureMapper does not do anything interesting in particular apart from synchronization.
     
    102102The implementation in TextureMapperTiledBackingStore is pretty simple, and is used only to work around the 2000x2000 texture size limitation in OpenGL. It is very different from the dynamic tiled backing store, discussed later.
    103103
    104 '''[/browser/trunk/Source/WebCore/platform/graphics/GraphicsLayerAnimation.cpp GraphicsLayerAnimation]''' is a class that replicates the AnimationController logic in WebCore, but does so without being coupled with particular WebCore primitives like the document.
    105 
    106 GraphicsLayerAnimation can receive an accelerated animation “spec” (WebCore::Animation, KeyframeValueList), and process the animation at different points in time, interpolating the opacity, transforms (and filters in the future), sending them back to the animation client, in this case being TextureMapperLayer.
    107 
    108 '''[/browser/trunk/Source/WebCore/platform/graphics/GraphicsLayerTransform.cpp GraphicsLayerTransform]'''  is responsible for the transformation matrix calculations based on the rules defined by GraphicsLayer. There are several properties that determine a node’s transformation matrix: its parent matrix, the anchor point, the local transformation, position, scrolling adjustment, perspective and the preserves-3d flag. These properties are separated due to the fact that the transformation might be animated using GraphicsLayerAnimation, which would make it impossible to multiply in advance.
     104'''[/browser/trunk/Source/WebCore/platform/graphics/texmap/TextureMapperAnimation.cpp TextureMapperAnimation]''' is a class that replicates the AnimationController logic in WebCore, but does so without being coupled with particular WebCore primitives like the document.
     105
     106TextureMapperAnimation can receive an accelerated animation “spec” (WebCore::Animation, KeyframeValueList), and process the animation at different points in time, interpolating the opacity, transforms (and filters in the future), sending them back to the animation client, in this case being TextureMapperLayer.
     107
     108'''[/browser/trunk/Source/WebCore/platform/graphics/GraphicsLayerTransform.cpp GraphicsLayerTransform]'''  is responsible for the transformation matrix calculations based on the rules defined by GraphicsLayer. There are several properties that determine a node’s transformation matrix: its parent matrix, the anchor point, the local transformation, position, scrolling adjustment, perspective and the preserves-3d flag. These properties are separated due to the fact that the transformation might be animated using TextureMapperAnimation, which would make it impossible to multiply in advance.
    109109
    110110=== What’s missing from TextureMapper ===