Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sync changes from mozilla-central gfx/wr #3872

Merged
merged 33 commits into from Mar 6, 2020
Merged

Commits on Feb 27, 2020

  1. Backed out 6 changesets (bug 1510030) for webrender bustages CLOSED TREE

    Backed out changeset 28a2fba71977 (bug 1510030)
    Backed out changeset 1700b3a416cd (bug 1510030)
    Backed out changeset 087518046b0c (bug 1510030)
    Backed out changeset 6b3af91a7ce6 (bug 1510030)
    Backed out changeset 737f4bc3afd3 (bug 1510030)
    Backed out changeset 921116ca67a5 (bug 1510030)
    
    [ghsync] From https://hg.mozilla.org/mozilla-central/rev/7fc17499b72099c0fa5d27f76c619229c01f2516
    bogdantara authored and moz-gfx committed Feb 27, 2020
  2. Backed out 6 changesets (bug 1510030) for test_running_on_compositor.…

    …html failures CLOSED TREE
    
    Backed out changeset a14a131ca731 (bug 1510030)
    Backed out changeset a75359516fec (bug 1510030)
    Backed out changeset a2be11cbe3f2 (bug 1510030)
    Backed out changeset b37ce2b87ac7 (bug 1510030)
    Backed out changeset 781cd96dd9a2 (bug 1510030)
    Backed out changeset b3dfa17c6305 (bug 1510030)
    
    [ghsync] From https://hg.mozilla.org/mozilla-central/rev/7d06c5f0f339c0016c764d49ebe6962b177a1e15
    bogdantara authored and moz-gfx committed Feb 27, 2020
  3. Bug 1510030 - Implement WebRender backend to run background color ani…

    hiikezoe authored and moz-gfx committed Feb 27, 2020

Commits on Feb 29, 2020

  1. Bug 1596513: Part 3: Ensure drop shadow blur radius does not exceed M…

    …AX_BLUR after scale factors are applied r=gfx-reviewers,nical
    
    This was causing one of the large drop-shadow wrench reftests to timeout.
    This is only a partial fix, as we should be checking the scale factors earlier on when sanitizing the
    filter input. This will ensure we match what the non-WR backend is doing and will prevent overinflation.
    
    Differential Revision: https://phabricator.services.mozilla.com/D64197
    
    [ghsync] From https://hg.mozilla.org/mozilla-central/rev/b7ab4c947688fab1ee8de2ef13a6033e2307d590
    cbrewster authored and moz-gfx committed Feb 29, 2020

Commits on Mar 2, 2020

  1. 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
  2. Bug 1579235 - Part 7 - Fix UV rect calculation for external textures.…

    … r=Bert
    
    This patch fixes an oversight in part 5 of this patch series that
    could result in an incorrect UV rect being used for an external
    texture that uses a custom UV rect.
    
    When the texture is an external texture, the UV rect is not known when
    the external surface descriptor is created, because external textures
    are not resolved until the lock() callback is invoked at the start of
    the frame render. To handle this, query the texture resolver for the
    UV rect if it's an external texture, otherwise use the default UV rect.
    
    Differential Revision: https://phabricator.services.mozilla.com/D64687
    
    [ghsync] From https://hg.mozilla.org/mozilla-central/rev/8f267ed8f2e3d09ced8c665af0a6db3694197116
    gw3583 authored and moz-gfx committed Mar 2, 2020
  3. Bug 1579235 - Part 8 - Remove overlay tiles, they can be alpha tiles …

    …instead. r=nical
    
    A previous patch in this series introduced overlay tiles. However,
    now that native surfaces exist for for the opaque and alpha tiles
    within a slice, we can remove the overlay tiles array and add
    these special tiles to the alpha surface.
    
    Differential Revision: https://phabricator.services.mozilla.com/D64899
    
    [ghsync] From https://hg.mozilla.org/mozilla-central/rev/38b7f4761f5041a0e3b2326c2be37f98da509e21
    gw3583 authored and moz-gfx committed Mar 2, 2020
  4. Bug 1619265 - Bump rust versions for github CI. r=jrmuizel

    The appveyor.yml change bumps it for windows. The macOS worker has the
    rust version bumped out-of-band and the change to .taskcluster.yml just
    updates the documentation.
    
    Differential Revision: https://phabricator.services.mozilla.com/D64945
    
    [ghsync] From https://hg.mozilla.org/mozilla-central/rev/3ca5d53055d7f8665a29eed0b6fd6d992d834ce5
    staktrace authored and moz-gfx committed Mar 2, 2020

Commits on Mar 3, 2020

  1. 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

Commits on Mar 4, 2020

  1. Bug 1618319: Segregate intern::UpdateList insertions and removals. r=gw

    Rather than treating webrender::intern::UpdateList as a sequence of operations,
    each of which might be an insertion or a removal, and using a side table to
    supply extra data for insertions, it's simpler to segregate insertions and
    removals into two separate vectors. This avoids the need for an enum whose
    discriminant needs to be checked within the loop, and allows a few loops that
    are only looking for one kind of operation to skip over the others entirely.
    
    Ultimately, there should be no change in the order in which operations occur. In
    practice, the old UpdateList always held a contiguous run of insertions,
    followed by a run of removals (removals are consumed by apply_updates directly
    after being generated by end_frame_and_get_pending_updates).
    
    Differential Revision: https://phabricator.services.mozilla.com/D64444
    
    [ghsync] From https://hg.mozilla.org/mozilla-central/rev/06e238addde26dee65ee29f3cb676d7d47ff4e6e
    Jim Blandy authored and moz-gfx committed Mar 4, 2020
  2. Bug 1579235 - Part 10 - Fix incorrect skipping of composites. r=Bert

    Ensure that the image keys and image generations for external
    compositor surfaces are included in the composite descriptor,
    which is used to determine if a composite is required or can
    be skipped.
    
    Differential Revision: https://phabricator.services.mozilla.com/D65216
    
    [ghsync] From https://hg.mozilla.org/mozilla-central/rev/5f2a8eb4989755c3cf987738ea04034ac5bea896
    gw3583 authored and moz-gfx committed Mar 4, 2020

Commits on Mar 5, 2020

  1. Bug 1619393 - Reftest improvements for fuzzy tests r=gw

    Add support for a `fuzzy-range` keyword in reftest.list.
    It is similar to `fuzzy` but it allows multiple pairs of
    `max_difference, num_differences` numbers that introduce
    multiple buckets of allowed differences.
    
    For example, `fuzzy-range(5,100,20,10)` allows at most
    100 pixels with a difference of at most 5, _plus_ an extra
    10 pixels at most that have a difference more than 5 but
    less than or equal to 20.
    The total number of differing pixels allowed is thus 110,
    but only if 100 of those differ by <= 5 and the remaining
    10 by <= 20.
    110 pixels with a difference <= 5 will still fail.
    This is intentional to encourage tighter bounds in tests
    where many pixels are slightly off and a few outliers are
    off by a lot.
    
    The number of parameters is arbitrary; longer lists can
    get confusing so this change also introduces optional
    support for writing `<=` in front of the max difference
    and `*` in front of the max pixel count, eg.
    `fuzzy-range(<=5,*100,<=20,*10)` (no spaces).
    
    Any pixels that exceed the highest maximum will fail the
    test, similar to `fuzzy`.
    
    Steps tested:
    1. the same tests fail in exactly the same way before and after;
    2. reordered the `fuzzy` statements for raster_root_A/B/C to no longer
       be sorted by max difference, and verified that the tests pass/fail
       the same way;
       (then sort them again which is easier to understand);
    3. tests using the new feature still fail when the ref no longer matches
       (deliberately broke the _ref version and verified test failed);
    
    Differential Revision: https://phabricator.services.mozilla.com/D65247
    
    [ghsync] From https://hg.mozilla.org/mozilla-central/rev/8c07488c9a3f0a76e01ce34e060d071a2310612d
    bpeersmoz authored and moz-gfx committed Mar 5, 2020

Commits on Mar 6, 2020

  1. Bug 1579235 - Part 11 - Refactor how external surfaces are composited…

    …. r=Bert,sotaro
    
    This patch refactors how external surfaces are stored in the
    CompositeState structure. This is primarily to simplify integration
    with native compositor mode, but also simplifies the Draw compositor
    path.
    
    Previously, the ResolvedExternalSurface struct contained information
    that was used to rasterize the external surface (YUV planes etc) and
    also the information to composite it (device rect, clip rect, z_id).
    
    Now, ResolvedExternalSurface contains just the information required
    to rasterize the external surface, while the compositing information
    is handled by adding the external surface as a regular tile. This
    makes it possible to unify how external surfaces are drawn, via the
    common draw_tile_list method.
    
    Differential Revision: https://phabricator.services.mozilla.com/D65269
    
    [ghsync] From https://hg.mozilla.org/mozilla-central/rev/4bbb79cbf9cc9efc7d599d1fe8d68bf620601fc9
    gw3583 authored and moz-gfx committed Mar 6, 2020
  2. Bug 1579235 - Part 12 - Support native compositor surfaces. r=Bert,so…

    …taro
    
    This patch adds support for external compositor surfaces when
    using native compositor mode.
    
    Differential Revision: https://phabricator.services.mozilla.com/D65436
    
    [ghsync] From https://hg.mozilla.org/mozilla-central/rev/c3a689bf10e1dd2b1dc04fe0494584561bd8421b
    gw3583 authored and moz-gfx committed Mar 6, 2020
  3. Bug 1618939 - Hit MOZ_CRASH(explicit panic) at gfx/wr/webrender/src/r…

    …ender_task.rs:37 r=gw
    
    Adding a repro-case reftest that asks for a 19996x5000 RenderTask (at
    -p1), then fix it in analogy with the clamping to reasonable values that
    happens for `NormalBorder`.
    
    Differential Revision: https://phabricator.services.mozilla.com/D65660
    
    [ghsync] From https://hg.mozilla.org/mozilla-central/rev/14caf2826f00fc609f7fe55d8df14e7e08fd1ced
    bpeersmoz authored and moz-gfx committed Mar 6, 2020
You can’t perform that action at this time.