Visible seams on https://codepen.io/amit_sheen/pen/YzxbwOx
Categories
(Core :: Graphics: WebRender, defect)
Tracking
()
| Tracking | Status | |
|---|---|---|
| firefox-esr91 | --- | unaffected |
| firefox97 | --- | unaffected |
| firefox98 | --- | unaffected |
| firefox99 | --- | fixed |
| firefox100 | --- | verified |
People
(Reporter: mayankleoboy1, Assigned: gw)
References
(Regression, )
Details
(Keywords: regression)
Attachments
(2 files, 1 obsolete file)
Create new profile
go to https://codepen.io/amit_sheen/pen/YzxbwOx
AR: Visible seams on the page
Reression:
2022-02-09T08:43:53.998000: INFO : application_version: 99.0a1
2022-02-09T08:43:53.998000: INFO : platform_buildid: 20220207222633
2022-02-09T08:43:53.998000: INFO : platform_changeset: b7f88e5c537bb7d64ba9d4cb58b052650d510638
2022-02-09T08:43:53.998000: INFO : platform_repository: https://hg.mozilla.org/integration/autoland
2022-02-09T08:43:53.998000: INFO : platform_version: 99.0a1
2022-02-09T08:44:06.493000: INFO : Narrowed integration regression window from [8e9c1ffd, 3f6deedb] (3 builds) to [8e9c1ffd, b7f88e5c] (2 builds) (~1 steps left)
2022-02-09T08:44:06.493000: DEBUG : Starting merge handling...
2022-02-09T08:44:06.493000: DEBUG : Using url: https://hg.mozilla.org/integration/autoland/json-pushes?changeset=b7f88e5c537bb7d64ba9d4cb58b052650d510638&full=1
2022-02-09T08:44:06.493000: DEBUG : redo: attempt 1/3
2022-02-09T08:44:06.493000: DEBUG : redo: retry: calling _default_get with args: ('https://hg.mozilla.org/integration/autoland/json-pushes?changeset=b7f88e5c537bb7d64ba9d4cb58b052650d510638&full=1',), kwargs: {}, attempt #1
2022-02-09T08:44:06.493000: DEBUG : urllib3.connectionpool: Resetting dropped connection: hg.mozilla.org
2022-02-09T08:44:08.909000: DEBUG : urllib3.connectionpool: https://hg.mozilla.org:443 "GET /integration/autoland/json-pushes?changeset=b7f88e5c537bb7d64ba9d4cb58b052650d510638&full=1 HTTP/1.1" 200 None
2022-02-09T08:44:08.941000: DEBUG : Found commit message:
Bug 1749380 - Improve how WR handles bounding rects for off-screen surfaces r=gfx-reviewers,kvark
This patch introduces a number of subtle but important changes
to how we deal with off-screen surfaces. The overall goals are:
- Improve rendering correctness in a number of edge cases.
- Begin reducing complexity related to surfaces, scaling
factors, surface size adjustments and clipping. - Improve CPU performance by removing some per-primitive work.
- Simplify implementation of future SVG and CSS filters by
having explicit support for picture rects + inflation regions. - Lay the groundwork for caching child picture surfaces,
reduction of per-primitive work during visibility pass,
simplifying picture code.
Unfortunately, the nature of the changes make it impossible to
split up in to small isolated patches. Details below:
-
Introduce
LocalRectKindconcept. This allows us to separate
out the bounding rect of the surface (a group of primitives
backed by a texture) from the bounding rect of the picture
compositing that surface (e.g. a drop-shadow which draws the
surface once at the local origin and once at a specific offset- blur-radius). This fixes a number of correctness bugs we have
related to culling, clipping, invalidation regions of complex
primitives such as drop-shadows and blur filters. Importantly,
it makes it simpler to implement (or fix) SVG filter chains,
backdrop-filter implementations.
- blur-radius). This fixes a number of correctness bugs we have
-
Establish raster roots for all off-screen surfaces. Every off-screen
surface uses the spatial node of the enclosing stacking context as
a coordinate system root, ensuring that each off-screen surface is
drawn in a 2D coordinate system, with appropriate scaling factors
applied to ensure high quality rendering. The primary goal is to make
it possible to correctly inflate and clip off-screen surfaces, removing
some correctness issues we currently have with complex filters interacting
with transforms. The initial work here doesn't reduce complexity a huge
amount, but will allow us to simplify large parts of the picture/surface
handling code in future, as well as simplify a number of shaders that
currently must handle arbitrarily complex transform matrices. This will
also allow us to simplify the implementation of features such as
mix-blend-mode and backdrop-filter, which rely on readback and UV mapping
from the parent surface. -
Remove concepts of
estimatedandpreciselocal rects for pictures. This
is both a performance optimization and a code simplification. Instead, we
only determine the estimated local rect during bounding rect propagation,
and rely on the clipping regions from the tile dirty regions to reduce which
parts of the picture we allocate if drawing to an off-screen surface. This
removes some per-primitive work during the visibility pass, and also means
we can rely on the final picture bounding rect from the start of the visibility
pass. This also removes much of the complexity intake_contextwhere we
previously determined surface scale factors and device pixel ratio - instead
these can be determined earlier duringpropagate_bounding_rects. -
Remove some complexity in
update_prim_visibility. This is still recursive,
but follow up patches will aim to remove this recursion and integrate this
pass with the picture graph (similar to howpropagate_bounding_rectsworks). -
Remove
PictureOptionsstruct. Instead, storeinflate_if_requiredwith
the Blur filter enum, which is the only place that uses it. -
Remove
root_scaling_factorfrom text runs - this is handled implicitly
by the surface device-pixel scale. -
Skip calling
update_clip_taskfor pass-through pictures (since they have
no defined local rect). -
Improve scaling factors used for determining the render task cache size for
complex line decorations.
Differential Revision: https://phabricator.services.mozilla.com/D137569
2022-02-09T08:44:08.941000: DEBUG : Did not find a branch, checking all integration branches
2022-02-09T08:44:08.956000: INFO : The bisection is done.
2022-02-09T08:44:08.956000: INFO : Stopped
| Reporter | ||
Comment 1•4 years ago
|
||
| Reporter | ||
Updated•4 years ago
|
| Reporter | ||
Comment 2•4 years ago
|
||
| Assignee | ||
Updated•4 years ago
|
| Assignee | ||
Comment 3•4 years ago
|
||
Looks like some kind of UV sampling / accuracy issue along tile boundaries when the child surface has a fractional device offset (which is why it appears then disappears as the animation occurs). Will continue looking into this in the morning.
| Assignee | ||
Comment 4•4 years ago
|
||
I think the bug is in the usage of calculate_uv_rect_kind for mix-blend pictures - the rects are rounded in device space, not correct accounting for fractional device space rects.
| Assignee | ||
Comment 5•4 years ago
|
||
| Assignee | ||
Comment 6•4 years ago
|
||
Put up a quick patch that I think is probably the correct fix. It fixes the test case for me locally, and all the wrench tests pass. I just kicked off a try run to see if it breaks any of the gecko tests:
https://treeherder.mozilla.org/jobs?repo=try&revision=d48ab849b5b8eb2b7eba94085e66afba4a7648a2
That should have build artifacts shortly for each platform, if you wanted to test locally.
Updated•4 years ago
|
Comment 7•4 years ago
|
||
Set release status flags based on info from the regressing bug 1749380
Updated•4 years ago
|
| Reporter | ||
Comment 8•4 years ago
|
||
(In reply to Glenn Watson [:gw] from comment #6)
Put up a quick patch that I think is probably the correct fix. It fixes the test case for me locally, and all the wrench tests pass. I just kicked off a try run to see if it breaks any of the gecko tests:
https://treeherder.mozilla.org/jobs?repo=try&revision=d48ab849b5b8eb2b7eba94085e66afba4a7648a2
That should have build artifacts shortly for each platform, if you wanted to test locally.
This bug doesnt repro in the test build. I didnt do any other testing
Comment 10•4 years ago
|
||
| bugherder | ||
Comment 11•4 years ago
|
||
Backed out as requested by gwatson
| Assignee | ||
Comment 12•4 years ago
|
||
See https://bugzilla.mozilla.org/show_bug.cgi?id=1749380#c8 for more info about why this is backed out.
| Assignee | ||
Comment 13•4 years ago
|
||
Was opened due to backing out the original patch - however, when I re-land this work next week I'll include this fix. Please re-open if you see it occur again.
Updated•4 years ago
|
Updated•4 years ago
|
Updated•4 years ago
|
Comment 14•4 years ago
|
||
I tried to reproduce the issue on Win10 /Ubuntu 20.4 on builds without the fix 99.0a1(20220207215603) and on build with the fix 99.0b8, but I see no difference when loading the links attached.
Can you please conform on latest Beta 99.0b8 (https://archive.mozilla.org/pub/firefox/candidates/99.0b8-candidates/) (since you verified it on try build), that the issue is not reproducing on your side? Thank you.
| Reporter | ||
Comment 15•4 years ago
|
||
I dont use beta, so cant comment on that.
On nightly, this bug has been fixed.
Comment 16•4 years ago
|
||
Mark issue as verified based on comment 15.
Description
•