WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED WONTFIX
Bug 109033
[Qt][EFL] Coordinated Graphics: scroll animation makes fixed element shake.
https://bugs.webkit.org/show_bug.cgi?id=109033
Summary
[Qt][EFL] Coordinated Graphics: scroll animation makes fixed element shake.
Dongseong Hwang
Reported
2013-02-06 02:47:27 PST
When panning using touch, we can see shaking fixed element in ManualTests/fixed-position.html Strangely, if you early return in TextureMapperLayer::setScrollPositionDeltaIfNeeded, this shaking disappears. void TextureMapperLayer::setScrollPositionDeltaIfNeeded(const FloatSize& delta) { + return; ... } But when you drag using touch, we can see shaking with 'early return'.
Attachments
WIP: need more tests
(13.12 KB, patch)
2013-02-26 03:05 PST
,
Dongseong Hwang
no flags
Details
Formatted Diff
Diff
Patch
(13.69 KB, patch)
2013-03-03 18:26 PST
,
Dongseong Hwang
no flags
Details
Formatted Diff
Diff
Patch
(13.82 KB, patch)
2013-03-05 00:40 PST
,
Dongseong Hwang
no flags
Details
Formatted Diff
Diff
Patch
(12.81 KB, patch)
2013-03-06 00:23 PST
,
Dongseong Hwang
no flags
Details
Formatted Diff
Diff
Patch
(12.90 KB, patch)
2013-03-08 00:09 PST
,
Dongseong Hwang
andersca
: review-
Details
Formatted Diff
Diff
Show Obsolete
(4)
View All
Add attachment
proposed patch, testcase, etc.
Mikhail Pozdnyakov
Comment 1
2013-02-06 02:58:47 PST
might be relevant to
https://bugs.webkit.org/show_bug.cgi?id=106656
Dongseong Hwang
Comment 2
2013-02-06 03:07:41 PST
(In reply to
comment #1
)
> might be relevant to
https://bugs.webkit.org/show_bug.cgi?id=106656
Yes, I think so. I suspect it is the timing issue in PageViewportController.
Allan Sandfeld Jensen
Comment 3
2013-02-14 02:14:26 PST
If I test on real web pages, it doesn't as much shake as just lack behind. When panning down the fixed elements will be slightly to high moving to catch up. The fast the pan, the more the fixed elements will be behind. Similarly if you pan up the fixed elements will be too low on the page. This is most easy to see with fixed elements fixed to the top or bottom of the page.
Dongseong Hwang
Comment 4
2013-02-19 21:54:18 PST
I think
Bug 110080
is also related. I suspect there is a bug in PageViewportController related to pending and commit.
Dongseong Hwang
Comment 5
2013-02-26 03:05:54 PST
Created
attachment 190252
[details]
WIP: need more tests
Kenneth Rohde Christiansen
Comment 6
2013-02-26 06:40:01 PST
Comment on
attachment 190252
[details]
WIP: need more tests View in context:
https://bugs.webkit.org/attachment.cgi?id=190252&action=review
> Source/WebKit2/UIProcess/qt/QtWebPageSGNode.cpp:65 > - coordinatedGraphicsScene()->paintToCurrentGLContext(renderMatrix, inheritedOpacity(), clipRect(), mirrored ? TextureMapper::PaintingMirrored : 0); > + coordinatedGraphicsScene()->paintToCurrentGLContext(renderMatrix, inheritedOpacity(), clipRect(), pageNode()->scrollPosition(), mirrored ? TextureMapper::PaintingMirrored : 0);
isnt the scroll pos part of the renderMatrix?
Dongseong Hwang
Comment 7
2013-02-26 15:04:02 PST
(In reply to
comment #6
)
> (From update of
attachment 190252
[details]
) > View in context:
https://bugs.webkit.org/attachment.cgi?id=190252&action=review
> > > Source/WebKit2/UIProcess/qt/QtWebPageSGNode.cpp:65 > > - coordinatedGraphicsScene()->paintToCurrentGLContext(renderMatrix, inheritedOpacity(), clipRect(), mirrored ? TextureMapper::PaintingMirrored : 0); > > + coordinatedGraphicsScene()->paintToCurrentGLContext(renderMatrix, inheritedOpacity(), clipRect(), pageNode()->scrollPosition(), mirrored ? TextureMapper::PaintingMirrored : 0); > > isnt the scroll pos part of the renderMatrix?
good question! we make renderMatrix using scrollposition, native window position, page scale and device scale, so it is hard to extract css position from renderMatrix. And I think it is natural that the clients that call paintToCurrentGLContext() prepare css position because they already prepare renderMatrix.
Jocelyn Turcotte
Comment 8
2013-02-27 05:21:42 PST
(In reply to
comment #7
)
> good question! we make renderMatrix using scrollposition, native window position, page scale and device scale, so it is hard to extract css position from renderMatrix. And I think it is natural that the clients that call paintToCurrentGLContext() prepare css position because they already prepare renderMatrix.
The position is already in the matrix and I think it would be better if you use it instead of duplicating this information in a separate parameter. That's how OpenGL represents a position: with a matrix, because it's unusual in this world to have all your objects on a single plane.
Dongseong Hwang
Comment 9
2013-02-27 23:18:52 PST
(In reply to
comment #8
)
> The position is already in the matrix and I think it would be better if you use it instead of duplicating this information in a separate parameter. > > That's how OpenGL represents a position: with a matrix, because it's unusual in this world to have all your objects on a single plane.
Ok, Jocelyn and kenneth. I'll survey more :)
Dongseong Hwang
Comment 10
2013-03-03 18:12:06 PST
(In reply to
comment #9
)
> (In reply to
comment #8
) > > The position is already in the matrix and I think it would be better if you use it instead of duplicating this information in a separate parameter. > > > > That's how OpenGL represents a position: with a matrix, because it's unusual in this world to have all your objects on a single plane. > > Ok, Jocelyn and kenneth. I'll survey more :)
I think it is very hard to extract scroll position from the matrix. In Qt case, QSGRenderNode generates the matrix using scroll position, page scale, device scale and node position. Scene can not get node position. In EFL case, WebView generates the matrix using scroll position, page scale, device scale and userViewportTransform. Scene can not get userViewportTransform. I think this nasty situation (Scene should know scroll position) is originated from fixed element positioned in contents coordinates, not viewport coordinates. I think we need to go with this not good code until we change WebCore to assign fixed element's position in viewport coordinates.
Dongseong Hwang
Comment 11
2013-03-03 18:26:12 PST
Created
attachment 191158
[details]
Patch
Allan Sandfeld Jensen
Comment 12
2013-03-04 02:46:46 PST
Comment on
attachment 191158
[details]
Patch Patch doesn't apply in UIProcess/efl/WebView.cpp.
Dongseong Hwang
Comment 13
2013-03-04 02:51:38 PST
(In reply to
comment #12
)
> (From update of
attachment 191158
[details]
) > Patch doesn't apply in UIProcess/efl/WebView.cpp.
Yes, because this patch depends on
Bug 110847
. After resolving
Bug 110847
, I'll re-post. :)
Jocelyn Turcotte
Comment 14
2013-03-04 03:32:07 PST
Comment on
attachment 191158
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=191158&action=review
I agree that with the current situation, with fixed layers expecting a delta, it won't be pretty solving this only with matrices.
> Source/WebKit2/UIProcess/API/qt/raw/qrawwebview.cpp:208 > void QRawWebViewPrivate::pageDidRequestScroll(const WebCore::IntPoint& pos) > { > m_client->viewRequestedScroll(pos); > - > + m_position = QPointF(pos.x(), pos.y());
I doubt that adding this line fixes everything. From my understanding there is poor support for fixed elements in QRawWebView, if so please just make sure it builds and avoid adding more complexity to it.
Dongseong Hwang
Comment 15
2013-03-04 15:04:12 PST
Comment on
attachment 191158
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=191158&action=review
>> Source/WebKit2/UIProcess/API/qt/raw/qrawwebview.cpp:208 >> + m_position = QPointF(pos.x(), pos.y()); > > I doubt that adding this line fixes everything. From my understanding there is poor support for fixed elements in QRawWebView, if so please just make sure it builds and avoid adding more complexity to it.
Thank you for review! Do you mean that there is another point to change scroll position in QRawWebView? I introduced m_position to trace scroll position to make Scene know that. In my understanding, QRawWebView does not have flickering or pinch event handling like QQuickWebView, so I think QRawWebViewPrivate::pageDidRequestScroll is only point changing scroll position. On the other hands, IMO supporting for fixed element is the role of Coordinated Graphics, not QRawWebView or QQuickWebView. When it comes to fixed element, what is different between QRawWebView and QQuickWebView? What I need from QRawWebView or QQuickWebView is just to query scroll position.
Dongseong Hwang
Comment 16
2013-03-05 00:40:17 PST
Created
attachment 191424
[details]
Patch
Kenneth Rohde Christiansen
Comment 17
2013-03-05 01:04:36 PST
Comment on
attachment 191424
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=191424&action=review
> Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.cpp:87 > > - adjustPositionForFixedLayers(); > + adjustPositionForFixedLayers(scrollPosition);
why not just call setScrollPosition before this? That would be a minimal change to the code
Dongseong Hwang
Comment 18
2013-03-05 01:44:34 PST
Comment on
attachment 191424
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=191424&action=review
>> Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.cpp:87 >> + adjustPositionForFixedLayers(scrollPosition); > > why not just call setScrollPosition before this? That would be a minimal change to the code
That is a way! What we have to do is to decide to remove either one parameter or one member :) do you think that it is better to remain setScrollPosition() and m_scrollPosition?
Jocelyn Turcotte
Comment 19
2013-03-05 05:16:15 PST
(In reply to
comment #15
)
> Do you mean that there is another point to change scroll position in QRawWebView? I introduced m_position to trace scroll position to make Scene know that. > In my understanding, QRawWebView does not have flickering or pinch event handling like QQuickWebView, so I think QRawWebViewPrivate::pageDidRequestScroll is only point changing scroll position.
QRawWebView is not completely implemented, we'll reuse it or get rid of it soon, so please just make sure that it compiles. In this case please just pass (0,0) for the new parameter in paintToCurrentGLContext.
Dongseong Hwang
Comment 20
2013-03-06 00:23:08 PST
Created
attachment 191671
[details]
Patch
Dongseong Hwang
Comment 21
2013-03-06 00:23:37 PST
(In reply to
comment #19
)
> QRawWebView is not completely implemented, we'll reuse it or get rid of it soon, so please just make sure that it compiles. In this case please just pass (0,0) for the new parameter in paintToCurrentGLContext.
aha, I see. :-)
Dongseong Hwang
Comment 22
2013-03-08 00:09:59 PST
Created
attachment 192165
[details]
Patch
Dongseong Hwang
Comment 23
2013-03-08 00:11:52 PST
now ews can run this patch. could you review? :)
Dongseong Hwang
Comment 24
2013-03-08 00:35:23 PST
Recently, regression related to scroll occurs. I filed
Bug 111829
.
Bug 111829
should be fixed before this bug.
Dongseong Hwang
Comment 25
2013-03-08 02:10:09 PST
Comment on
attachment 192165
[details]
Patch After landing 111829, this bug will be valid again.
Gyuyoung Kim
Comment 26
2013-07-16 18:45:18 PDT
(In reply to
comment #25
)
> (From update of
attachment 192165
[details]
) > After landing 111829, this bug will be valid again.
Dongseong,
Bug 111829
was landed. Any update ?
Anders Carlsson
Comment 27
2013-10-02 21:24:39 PDT
Comment on
attachment 192165
[details]
Patch Marking this patch r- for now since it touches Qt code and Qt has been removed.
Michael Catanzaro
Comment 28
2017-03-11 10:42:31 PST
Closing this bug because the EFL port has been removed from trunk. If you feel this bug applies to a different upstream WebKit port and was closed in error, please either update the title and reopen the bug, or leave a comment to request this.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug