I'm using a Lenovo ThinkPad P52 (Intel Core i7-8750H) with the latest 1.22 UEFI firmware and have severe screen tearing and display corruption when using the xf86-video-intel driver. When I'm using the latest stable driver version and the situation is sometimes unworkable, because the screen simply goes blank and can't even revert back to the TTY after a while (I've got no display at all). When I'm using the latest GIT version the driver is stable, but I've got severe tearing and artifacts (square cubes in red / greenish in particular). I've tried both DRI 2 and DRI 3, but that doesn't make a difference. The situation is stable when using the modesetting driver, but then I can't use my external displays, as it's hard-wired to the NVIDIA chip. The same goes for uxa driver, it doesn't allow me to use intel-virtual-output, so sna is the only option for me. (I'm making use of bumblebee / bbswitch and intel-virtual-output) This can especially be observed when browsing websites.
I'm running Gentoo Linux with kernel 4.19.27 with xorg-server-1.20.3. If there's anything additional you need, please let me know
Please attach your Xorg.log. Did you specify TearFree?
Created attachment 143779 [details]
My Xorg.0.log file
Please see the file attached. I've tried using both TearFree with true and false, but it makes no difference. I've used both: https://wiki.archlinux.org/index.php/intel_graphics and https://wiki.gentoo.org/wiki/Intel as guides to try and get a working situation with various options
Ok, which screens experience the tearing, and which the corruption? Is it possible to grab a photo of the corruption? And does the corruption exist in a screenshot?
I'm experiencing it mostly on the external screens, but sometimes on the internal screen too. I'll try to grab a screenshot if possible, but it'll be hard, because it's there for about 1 sec. but repeats frequently. It looks like a big red square with sometimes some green in it. An example where it regularly occurs is scrolling in Mozilla Firefox on certain web pages, but sometimes it happens at random on the desktop too.
I've tried capturing a screenshot a few times now. The tearing (which is constantly present) isn't present in the screenshot at all. The graphical corruption either wasn't captured or not visible in the screenshot either. Do you still want me to upload the screenshots?
P.S.: I forgot to mention that the tearing does not occur when I'm starting the application from the terminal with optirun in front of it (as in rendering it on the NVIDIA Quadro P1000 graphics cards).
It's just whether the corruption is apparent int the screenshots and if that corruption only occurs on the external outputs that is particularly of interest. If you don't see it in a screenshot (and that screenshot shows the remote output windows correctly) that implies the corruption is entering in ivo -> bumblebee path.
We should be pageflipping on the internal screen, no matter what. That may still tear across between client rendering (if the client split his update into two requests and we perform a page flip in between), or it may tear in situations where we give the client direct access to the screen and require them to manage it through glXSwapBuffers (that should only impact DRI3 iirc).
ivo doesn't try to avoid tearing on the external screens at all atm. It's a wishlist item along with using DRI3 to avoid the copies; at which point, xrandrproviders were meant to be the better solution. Nothing should have changed to make it any worse, though.
Anyway, the immediate problems are tearing on the internal and corruption on the external?
Thank you for the explanation :-) and yes / no. There's both screen tearing (constantly) and corruption (regularly; like approx. every 3 - 4 minutes for like 1- 2 seconds) on all of the 3 displays. It was way worse when using the non-git driver version. Then display corruption would occur constantly (every few seconds those cubes would occur and the screen would constantly flicker too).
The only thing I haven't tested yet, is disabling my external monitors and using my internal LVDS-0 only in SNA mode I realized, which I can do to see if that stops the tearing. The tearing occurs on all 3 screens. When starting an application with optirun, the tearing is mostly gone (unless you start moving the item around the screen extremely quickly). I haven't noticed any display corruption yet either when starting an application with optirun, but if it occurs I'll let you know.
Update: I've been running without attaching my external displays and without running intel-virtual-output this morning and both the tearing and corruption are gone using xf86-video-intel (GIT version) and haven't seen them so far. If I'm not using the GIT version I've still got display corruption and such. All of the issues start as soon as I run intel-virtual-output (even without screens attached).
Is there an alternative to using my iGPU on my laptop and using the dGPU for the external screens?
Update: After using the laptop without an external screen for several days there's been display corruption too, but it's much less frequent than when used with external displays. Is there anything I can do to to provide additional testing or logging?
I've finally been able to take a screenshot of the graphical corruption and can now verify that the corruption is visible in the screenshot.
Created attachment 143900 [details]
Part of the screenshot of the display corruption happening
-- GitLab Migration Automatic Message --
This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.
You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/xorg/driver/xf86-video-intel/issues/161.