Created attachment 143962 [details]
xorg log showing the pageflipping issue
Either build Compton from git "next" branch or use latest 6.2 release:
Start Compton with new xrender vsync:
compton --config /dev/null --backend=xrender --vsync --experimental-backends
Result: There is tearing at the very top of the screen, can be easily verified by playing this juddertest video in fullscreen:
This is a regression that was introduced in drm-next-5.2-wip.
There is no tearing when:
-using linux-mainline 5.1-rc4 or stable 5.0 kernel
-There is also no tearing when using drm-next-5.2-wip branch, but append amdgpu.dc=0 to kernel start parameters.
-There's also no tearing when using Compton's GLX backends, which use MESA_swap_control for vsync.
The attached xorg log testifies that there is a problem with pageflipping, as it is flooded with
[ 14.785] Failed to get FB for flip
[ 14.785] (WW) AMDGPU(0): Page flip failed: Resource temporarily unavailable
[ 14.785] (EE) AMDGPU(0): present flip failed
Compton's new xrender backend uses the present extension to implement vsync, which works well apart from that amdgpu driver regression.
It doesn't make a difference if modesetting or amdgpu DDX is used.
The problem wasn't introduced recently into drm-next-5.2-wip, it probably existed from the start of that branch or shortly after.
Programs versions used:
mesa-git 19.1 109912.9e0c744f07a
Created attachment 143963 [details]
https://gitlab.freedesktop.org/xorg/driver/xf86-video-amdgpu/merge_requests/33 fixes this for me.
Could you try bisecting between v5.1-rc2 and HEAD?
The fix provided by Michel seems to work flawlessly. Would a kernel fix still be desirable?
There's no kernel issue to be fixed. Without page flipping, it was just luck that you didn't get tearing in some cases.
Ha, curious. I really could never spot any tearing before the 5.2-wip branch. Glad that bisecting is not required.
Well, there is one little exception (independent of the compositor):
When I turn on RedShift without fading (e.g. "redshift -O 4500"), tearing occurs once during enabling/disabling. Happens also with TearFree. Not a big deal, just want to mention it once.
(In reply to tempel.julian from comment #6)
> Ha, curious. I really could never spot any tearing before the 5.2-wip
> branch. Glad that bisecting is not required.
> Well, there is one little exception (independent of the compositor):
> When I turn on RedShift without fading (e.g. "redshift -O 4500"), tearing
> occurs once during enabling/disabling. Happens also with TearFree. Not a big
> deal, just want to mention it once.
I believe that is due to limitations in the atomic API with respect to updates.
(In reply to Michel Dänzer from comment #5)
> There's no kernel issue to be fixed. Without page flipping, it was just luck
> that you didn't get tearing in some cases.
Just curious, was paging flipping not implemented prior to linux 5.2?
(In reply to Yuxuan Shui from comment #8)
> Just curious, was paging flipping not implemented prior to linux 5.2?
It was, but it wasn't being used due to the xf86-video-amdgpu bug.
What about the modesetting DDX?
(In reply to Mike Lothian from comment #10)
> What about the modesetting DDX?
This PR by yshui fixes the tearing for modesetting:
Thanks for the report and for testing the fix, which is now merged to xf86-video-amdgpu Git master.