Closed Bug 1632443 Opened 3 months ago Closed 2 months ago

pinch zooming with direct manipulation and webrender leads to no visual updates at all

Categories

(Core :: Graphics: WebRender, defect, P3)

defect

Tracking

()

VERIFIED FIXED
mozilla78
Tracking Status
firefox78 --- verified

People

(Reporter: tnikkel, Assigned: gw)

References

(Blocks 2 open bugs)

Details

(Whiteboard: apz-planning)

Attachments

(1 file, 1 obsolete file)

No description provided.
Priority: -- → P3
Whiteboard: desktop-zoom-nightly
Whiteboard: desktop-zoom-nightly → apz-planning
Severity: -- → normal

This seems to be randomly intermittent. Sometimes I can reproduce consistently, but now I can't reproduce at all. I suspect this is still a problem though.

@jnicol: Could you do a bit of an explanation what you think is going on so we can ask Glenn on how to move forward with this?

Flags: needinfo?(jnicol)

Glenn, just NI-ing you to get on your radar. Might be hard to move forward with this until we can find consistent STR.

Flags: needinfo?(gwatson)

I think maybe the base revision of mozilla-central that I was using might explain why this happens only sometimes. I'm going to make a build from from a revision that is a guess of what I was using when this bug was filed and test it.

Sure, I can take a look at this if we have STR.

Flags: needinfo?(gwatson)

I tried a bunch of old revisions and could not reproduce on any of them. So I guess we go on the theory that this isn't a problem unless/until we see it again?

STR in latest nightly on Windows 10:
set:
gfx.webrender.dcomp-win.enabled = false
apz.windows.use_direct_manipulation = true
apz.allow_zooming = true

And use a precision touchpad (To check if your system has one look in Windows Settings, Devices, Touchpad it should say "Your PC has a precision touchpad".) Then pinch zoom almost any page (for example https://www.mozilla.org/en-US/privacy/firefox/ ). You will see no visual change at all until you do something else that causes redrawing (like scrolling).

Flags: needinfo?(gwatson)

Is there any way I can reproduce this on a desktop machine that doesn't have a touchpad?

Attached patch dmaniplegacymode (obsolete) — Splinter Review

I haven't tested it yet but you can try applying this patch (in addition to the STR) and then set mousewheel.with_control.action to 5 and then use mouse wheel + ctrl key pressed.

Failing that you can purchase a usb precision touchpad (which is what I use).

Assignee: nobody → tnikkel
Assignee: tnikkel → nobody

I don't think mouse wheel emulated zooming will work due to bug 1631015.

You could try making this function return true under some state which you can reproduce. Perhaps WHEEL_SCROLL? (Just a guess, I don't know what all those states mean...) It would then hopefully reproduce on scrolling rather than zooming.

Flags: needinfo?(jnicol)

The attached patch should send PinchGestureInput's into apzc's, so that should be okay then? Ie the mousewheel events only reach our ProcessMessage handler and after that they get intercepted by dmanip code and turned into PinchGestureInput's.

That patch doesn't seem to apply on m-c, and when I try to manually apply it, I get:

 0:18.23 c:/Users/dev/gecko/widget/windows/nsWindow.cpp(5717,11): error: use of undeclared identifier 'mDmViewport'
 0:18.23       if (mDmViewport) {

Followed by a number of similar errors.

Should I need any other local patches? The diff you applied has some printf statements in the context that don't seem to be present either, so I wonder if you have some local changes not in m-c?

Sorry about that. After getting the patch working again locally I wasn't able to reproduce the problem without using a precision touchpad, so I think you need a precision touchpad to reproduce.

Attachment #9149722 - Attachment is obsolete: true

I reproduced the issue on my Surface Pro 2 running Windows 8.1, both with the touchpad and with the touchscreen. When doing the touch screen pinch zoom there are no updates while touching the screen, but upon lifting my fingers the page updates. When using the touchpad there are no updates until you do some other interaction with the page to cause repainting. And the touchscreen issue doesn't need the direct manipulation enabled (which is expected). So the issue also affects touchscreens as well as touchpads (which was a question up until this point).

Assignee: nobody → gwatson
Flags: needinfo?(gwatson)

I have got hold of a touchpad for my Windows desktop, and can reproduce this now - will investigate today.

WR currently disables picture caching during a pinch-zoom, if the
native compositor is disabled (since there's no real performance
gain to be had from caching tiles during a pinch-zoom).

However, this code path was not returning a dirty rect to the
caller code. For callers that take advantage of partial present,
this meant the screen was assumed to have no changes, and so
the swapbuffers is skipped incorrectly.

Pushed by gwatson@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/837b1bff6998
Fix pinch-zoom rendering when partial present is enabled. r=sotaro
Status: NEW → RESOLVED
Closed: 2 months ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla78
Flags: qe-verify+

I was able to reproduce this bug with the steps provided in comment 8, using an affected Nightly build form 2020-04-23.

The issue is not reproducing anymore on dot Release 78.0.1, when using pinch zoom on screen/touch pad. Tested on a Win 10 x64, Dell XPS.

Status: RESOLVED → VERIFIED
Flags: qe-verify+
You need to log in before you can comment on or make changes to this bug.