• Daniel Libby's avatar
    Consider directly composited images as covering the PictureTilingSet · bf22e4c9
    Daniel Libby authored
    For elements with will-change:transform or directly composited images
    the raster scale is not updated in response to transform scale
    changes. Once the scale gets especially large, the interest rect
    computed by blink starts to become less than the layer bounds.
    This ends up setting a recorded_viewport_ on RasterSource that is also
    less than the layer bounds. If the interest rect gets small enough, it's
    possible that tiles that are in view are not completely covered by the
    RasterSource. This means that we won't create tiles (much less assign
    them GPU memory and schedule them) in PictureLayerTiling::CreateTile. We
    did not see this with the previous implementation of directly composited
    images, since the content layer never had an interest rect computed.
    
    This change fixes this specifically for directly composited images by
    always considering its raster source as covering the entire layer. This
    is the definition of directly composited images (has a DrawImageRectOp
    that draws into the entire layer). This allows the in view tiles to be
    created, then rasterized and activated and the image no longer
    disappears.
    
    I looked into fixing the general case (see comments in the bug) but
    given the regression for the images scenario and the fact that we'd like
    to get a fix merged for 85, I took an approach to just fix directly
    composited images.
    
    Bug: 1110141
    Change-Id: Ice3cf25508585f116edd7317718292ec9ad8a7ef
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2358888Reviewed-by: default avatarPhilip Rogers <pdr@chromium.org>
    Reviewed-by: default avatarvmpstr <vmpstr@chromium.org>
    Commit-Queue: Daniel Libby <dlibby@microsoft.com>
    Cr-Commit-Position: refs/heads/master@{#798836}
    bf22e4c9
raster_source.h 5.97 KB