• Bug 1579235 - Part 9 - Optimize compositor surface overlays. r=Bert

    This patch improves the performance of compositor surfaces in
    two ways:
    
    (1) Ignore primitives behind the first compositor surface when
        determining whether a tile needs to be moved to the overlay
        (alpha) pass. This means WR only moves a tile to the alpha
        pass when it has primitives that overlap with the compositor
        surface bounding rect, and are ordered after that compositor
        surface. In practice, this means most tiles are able to
        remain in the fast (opaque) path. Typically, a small number
        of tiles that contain overlay video controls are moved to the
        alpha pass.
    
    (2) Register the opaque compositor surfaces as potential occluders.
        This allows tiles that are completely covered by a compositor
        surface to be removed from the compositor visual tree, which
        helps both the simple and native compositor modes.
    
    Between them, these optimizations typically mean that when watching
    video in full-screen, nothing is composited except the video surface
    itself, and some small region(s) where video overlay controls are
    currently active.
    
    Differential Revision: https://phabricator.services.mozilla.com/D64909
    
    [ghsync] From https://hg.mozilla.org/mozilla-central/rev/f6dc6b38288cfcb9f5f70932830d4a3d2b3759b2
    gw3583 authored and moz-gfx committed Mar 3, 2020