Skip to content
  • timothy_horton@apple.com's avatar
    Remote Layer Tree: Support hardware accelerated filters · 28a2fccd
    timothy_horton@apple.com authored
    https://bugs.webkit.org/show_bug.cgi?id=123139
    
    Reviewed by Anders Carlsson.
    
    * Shared/WebCoreArgumentCoders.cpp:
    (CoreIPC::ArgumentCoder<Length>::encode):
    (CoreIPC::ArgumentCoder<Length>::decode):
    Add simple coders for Length.
    
    (CoreIPC::encodeFilterOperation):
    (CoreIPC::decodeFilterOperation):
    Serialize and deserialize FilterOperations, except for CUSTOM and VALIDATED_CUSTOM.
    
    (CoreIPC::ArgumentCoder<Length>::encode):
    (CoreIPC::ArgumentCoder<Length>::decode):
    Add coders for FilterOperations that delegate to {en,de}codeFilterOperation
    for each operation in the list.
    
    * Shared/WebCoreArgumentCoders.h:
    Drive-by fix indentation.
    Expose the Length and FilterOperations coders.
    
    * Shared/mac/RemoteLayerTreeTransaction.h:
    Add FiltersChanged and LayerProperties::filters.
    
    * Shared/mac/RemoteLayerTreeTransaction.mm:
    (WebKit::RemoteLayerTreeTransaction::LayerProperties::encode):
    (WebKit::RemoteLayerTreeTransaction::LayerProperties::decode):
    Encode and decode our FilterOperations.
    
    (WebKit::dumpChangedLayers):
    Dump information about the layers' filters.
    
    * UIProcess/mac/RemoteLayerTreeHost.mm:
    (WebKit::RemoteLayerTreeHost::commit):
    Use PlatformCAFilters code to apply a FilterOperations object to our CALayer.
    
    * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
    (PlatformCALayerRemote::setFilters):
    Replace existing filters with our new set, and note that they've changed.
    
    (PlatformCALayerRemote::copyFiltersFrom):
    Not yet implemented. Not critical for this feature, either.
    
    (PlatformCALayerRemote::filtersCanBeComposited):
    For now, this is the same as the Mac version.
    
    * WebCore.exp.in:
    Export a variety of filter-related things.
    
    * platform/graphics/ca/PlatformCAFilters.h:
    * platform/graphics/ca/mac/PlatformCAFiltersMac.mm:
    * platform/graphics/ca/mac/PlatformCALayerMac.mm:
    (PlatformCALayerMac::setFilters):
    * platform/graphics/ca/win/PlatformCAFiltersWin.cpp:
    (PlatformCAFilters::setFiltersOnLayer):
    setFiltersOnLayer should take a PlatformLayer instead of a PlatformCALayer
    as its argument, because it doesn't need a PlatformCALayer, and this way
    we can share code with the RemoteLayerTreeHost, which only has PlatformLayers
    and not PlatformCALayers.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@157803 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    28a2fccd