pinch zooming with direct manipulation and webrender leads to no visual updates at all
Categories
(Core :: Graphics: WebRender, defect, P3)
Tracking
()
Tracking | Status | |
---|---|---|
firefox78 | --- | verified |
People
(Reporter: tnikkel, Assigned: gw)
References
(Blocks 1 open bug)
Details
(Whiteboard: apz-planning)
Attachments
(1 file, 1 obsolete file)
(deleted),
text/x-phabricator-request
|
Details |
Reporter | ||
Comment 1•5 years ago
|
||
Jamie pointed me to
https://hg.mozilla.org/mozilla-central/rev/dd0e1c0d6acc4b7cb8b8b251aa3da7984f8b496f
which seems to cause the problem
Updated•5 years ago
|
Updated•5 years ago
|
Updated•5 years ago
|
Reporter | ||
Comment 2•5 years ago
|
||
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.
Comment 3•5 years ago
|
||
@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?
Comment 4•5 years ago
|
||
Glenn, just NI-ing you to get on your radar. Might be hard to move forward with this until we can find consistent STR.
Reporter | ||
Comment 5•5 years ago
|
||
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.
Assignee | ||
Comment 6•5 years ago
|
||
Sure, I can take a look at this if we have STR.
Reporter | ||
Comment 7•5 years ago
|
||
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?
Reporter | ||
Comment 8•5 years ago
|
||
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).
Assignee | ||
Comment 9•5 years ago
|
||
Is there any way I can reproduce this on a desktop machine that doesn't have a touchpad?
Reporter | ||
Comment 10•5 years ago
|
||
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).
Reporter | ||
Updated•5 years ago
|
Comment 11•5 years ago
|
||
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.
Reporter | ||
Comment 12•5 years ago
|
||
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.
Assignee | ||
Comment 13•5 years ago
|
||
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?
Reporter | ||
Comment 14•5 years ago
|
||
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.
Reporter | ||
Updated•5 years ago
|
Reporter | ||
Comment 15•5 years ago
|
||
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 | ||
Updated•5 years ago
|
Assignee | ||
Comment 16•5 years ago
|
||
I have got hold of a touchpad for my Windows desktop, and can reproduce this now - will investigate today.
Assignee | ||
Comment 17•5 years ago
|
||
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.
Comment 18•5 years ago
|
||
Comment 19•5 years ago
|
||
bugherder |
Updated•4 years ago
|
Comment 20•4 years ago
|
||
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.
Description
•