Closed Bug 1703841 Opened 3 years ago Closed 3 years ago

[wpt-sync] Sync PR 28413 - Correct clipping of destination rects for filters when 3D transformed.

Categories

(Core :: Web Painting, task, P4)

task

Tracking

()

RESOLVED FIXED
89 Branch
Tracking Status
firefox89 --- fixed

People

(Reporter: mozilla.org, Unassigned)

References

()

Details

(Whiteboard: [wptsync downstream])

Sync web-platform-tests PR 28413 into mozilla-central (this bug is closed when the sync is complete).

PR: https://github.com/web-platform-tests/wpt/pull/28413
Details from upstream follow.

b'L. David Baron <dbaron@chromium.org>' wrote:

Correct clipping of destination rects for filters when 3D transformed.

  • Make InverseMapQuadToLocalSpace flatten transform to avoid 3D clipping
    glitches.

    While cc::MathUtil::InverseMapQuadToLocalSpace was documented as
    requiring callers to flatten the transform, only one of the four
    existing callers did this. This changes it to flatten the transform
    internally.

    This fixes a bug where incorrect clipping rects were used in at least
    two of those three callers that were not flattening: the callers in
    SkiaRenderer::CalculateRPDQParams and
    GLRenderer::UpdateRPDQWithSkiaFilters. These callers were computing
    the minimal clip rect in local space (in a plane that might have a 3D
    transform) by transforming the clip rect (in the simple testcase, the
    window boundary), as a quad, into the local coordinate space,
    producing points that (with 3D) can have a nonzero Z components. This
    nonzero Z component was then dropped. However, the desired result was
    the point with a zero Z component in local space that would produce
    the correct X/Y position in device space with some arbitrary Z
    component in device space (that could then be dropped).

    This fixes the case tested in
    preserve3d-and-filter-no-perspective.html

  • Don't try clipping at all when the transform has perspective, since
    when there is perspective, there could be areas on the local surface
    that are visible even though they are outside the bounds of the quad
    that maps to the device's clip.

    This fixes the case tested in
    preserve3d-and-filter-with-perspective.html

Bug: 923766
Change-Id: I5fbc679300ca52446552a1f5d90160309073d687
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2809095
Reviewed-by: vmpstr \<vmpstr@chromium.org>
Commit-Queue: David Baron \<dbaron@chromium.org>
Cr-Commit-Position: refs/heads/master@{#870500}

Component: web-platform-tests → Web Painting
Product: Testing → Core

CI Results

Ran 15 Firefox configurations based on mozilla-central, and Firefox, Chrome, and Safari on GitHub CI

Total 2 tests

Status Summary

Firefox

PASS: 2

Chrome

PASS: 2

Safari

PASS: 1
FAIL: 1

Links

Gecko CI (Treeherder)
GitHub PR Head
GitHub PR Base

Pushed by wptsync@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/6966d5948469
[wpt PR 28413] - Correct clipping of destination rects for filters when 3D transformed., a=testonly
Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → 89 Branch
You need to log in before you can comment on or make changes to this bug.