• Bug 1579235 - Part 6 - Support an opaque/alpha native surface per sli…

    …ce. r=Bert
    
    Previously, a native compositor surface was considered to be
    completely opaque, or completely translucent. This is due to
    a limitation in how alpha is handled in the DirectComposition
    API level.
    
    With this patch, each picture cache slice maintains both an
    opaque and translucent native surface handle. Tiles are assigned
    to one of those surfaces based on their current opacity.
    
    This is a performance optimization in some cases, since:
     - Even if part of a cache is translucent, opaque tiles can
       still participate in occlusion at the compositor level.
     - If a tile is changing from opaque to translucent, it now
       invalidates only that tile, rather than the entire surface.
    
    The primary benefit of this patch is that it allows compositor
    surfaces to be drawn sliced in between the opaque surface and
    any overlay / alpha tiles.
    
    Differential Revision: https://phabricator.services.mozilla.com/D64495
    
    [ghsync] From https://hg.mozilla.org/mozilla-central/rev/6814870342efc284b2edec7c9aeb45240cb0fe09
    gw3583 authored and moz-gfx committed Mar 2, 2020