Closed Bug 1109314 Opened 10 years ago Closed 9 years ago

Layer Tree Invalidation code doesn't run when compositing to draw target

Categories

(Core :: Graphics: Layers, defect)

36 Branch
x86
macOS
defect
Not set
normal

Tracking

()

RESOLVED WONTFIX
Tracking Status
firefox34 --- unaffected
firefox35 --- unaffected
firefox36 --- wontfix
firefox37 --- wontfix
firefox38 --- wontfix
firefox38.0.5 --- wontfix
firefox39 --- wontfix
firefox40 --- wontfix
firefox41 --- wontfix
firefox42 --- wontfix
firefox-esr31 --- unaffected

People

(Reporter: BenWa, Assigned: BenWa)

References

Details

(Keywords: regression)

Attachments

(2 files, 3 obsolete files)

Attached patch patch (obsolete) — Splinter Review
We need to run this code even for draw targets so that we know to invalidate the retained render target for container layers.
Attachment #8533983 - Flags: review?(mstange)
[Tracking Requested - why for this release]: Regression from bug 1068190. The trigger for the bug should be rare I imagine but we should still fix it.
(In reply to Benoit Girard (:BenWa) from comment #1) > Regression from bug 1068190. Bug 1098495*
Attachment #8533983 - Flags: review?(mstange) → review+
Blocks: 1098495
Attached patch patch (obsolete) — Splinter Review
Assignee: nobody → bgirard
Status: NEW → ASSIGNED
Attached patch patch (obsolete) — Splinter Review
Attachment #8533983 - Attachment is obsolete: true
Attachment #8534168 - Attachment is obsolete: true
Comment on attachment 8534170 [details] [diff] [review] patch Review of attachment 8534170 [details] [diff] [review]: ----------------------------------------------------------------- ::: gfx/layers/composite/LayerManagerComposite.cpp @@ +295,1 @@ > mInvalidRegion.Or(mInvalidRegion, mRenderBounds); Doesn't this mean that we now invalidate everything if we're compositing without a target, e.g. during normal BasicCompositor OMTC? But I don't really understand why the old code had } else if (!mTarget) { here, and not just } else {. Do you? How did we make sure we were painting everything when compositing to a DrawTarget?
My comment above got the logic wrong. Marking as 'obsolete'.
Comment on attachment 8534170 [details] [diff] [review] patch Review of attachment 8534170 [details] [diff] [review]: ----------------------------------------------------------------- ::: gfx/layers/composite/LayerManagerComposite.cpp @@ +295,1 @@ > mInvalidRegion.Or(mInvalidRegion, mRenderBounds); Actually I think with this patch this branch is no longer needed. We should always be tracking the invalid region regardless if we have mTarget or not.
Attached patch patch v2Splinter Review
Attachment #8534170 - Attachment is obsolete: true
Attachment #8535186 - Flags: review?(matt.woodrow)
Comment on attachment 8535186 [details] [diff] [review] patch v2 Review of attachment 8535186 [details] [diff] [review]: ----------------------------------------------------------------- Does this pass tests? The invalid region is the difference between the current layer tree and what we last composited. If we didn't composite to the same DT last time, then this invalid region won't be meaningful. I think we want to keep the code setting the invalid region to the window bounds, and also make sure that we invalidate all cached ContainerLayers instead.
Attachment #8535186 - Flags: review?(matt.woodrow) → review-
In what scenarios do we composite into a DrawTarget?
drawWindow, so usually reftests.
(In reply to Matt Woodrow (:mattwoodrow) from comment #12) > I think we want to keep the code setting the invalid region to the window > bounds, and also make sure that we invalidate all cached ContainerLayers > instead. This would mean that performance would be worse, it's an extra path that different and it give us no practical way to test container layer recycling. Even with GTest we're still using a draw target. I don't think we have a good reason to have invalidation depend on the draw target or not. At least not in the OGL case where we just read back. I'm not sure about the other backends.
Flags: needinfo?(matt.woodrow)
Attached file irc discussion
Regression, tracking!
Flags: needinfo?(matt.woodrow)
Updated container for bug 1109314. To connect: ssh work@bulldozer.corp.tor1.mozilla.com 1109314 For more information see: https://wiki.mozilla.org/DockerEnv
Benoit, any plan wrt 36? Beta 8 is going to build today.
Flags: needinfo?(bgirard)
I think we're going to let it slide, we have no evidence that this is impacting users. I'll come back to this when I find the time.
OK, wontfix then. Merci!
See Also: → 1067470
Quick update: - This bug will only show up if we're taking a screenshot under very specific circumstances. I do plan on landing a test for this with the fix however to make sure we don't re-regress this. - It's marked as tracking because I don't want us to forget about this bug but it's probably ok to ship this regression since no one has noticed a failure. - I wont have time to fix it before I go on my leave and I don't think it's worth assigning someone else to look at it. - I plan on finishing this after my leave this summer.
Given comment 22 and the timing of Benoit's leave, it sounds like we want to track this for 41 at the earliest. No way to set that flag yet, so we will just leave needinfo on Benoit to set the tracking flag once 41 is available.
Version: unspecified → 36 Branch
For now this doesn't appear to be causing any issue. I don't think it's worth fixing. Let me know if you disagree.
Status: ASSIGNED → RESOLVED
Closed: 9 years ago
Flags: needinfo?(bgirard)
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: