Fixing Screen Tearing issues on RPI4
-
@huey Yeah, there are definitely compromises with the experimental driver. I found kodi and the pixel desktop don't work super well with the kms driver either. If you don't want to play n64 and Dreamcast, honestly the pi3 may have a better experience at the moment. Maybe we'll get a complete kms driver eventually that fixes everything!
-
@brandflake11 said in Fixing Screen Tearing issues on RPI4:
@huey Yeah, there are definitely compromises with the experimental driver. I found kodi and the pixel desktop don't work super well with the kms driver either. If you don't want to play n64 and Dreamcast, honestly the pi3 may have a better experience at the moment. Maybe we'll get a complete kms driver eventually that fixes everything!
Thanks for confirming. I also read something along the same lines in the following RPi post and it seems to be an ongoing effort.
https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=269769
"Note: kms won’t ever support applications that use firmware apis for display like dispmanx, or mmal/openmax video_render, including omxplayer, raspivid and non-gbm kodi. Similarly tvservice is not useful in this environment."
-
@brandflake11 Unfortunately, enabling the KMS driver in my config file gives me no video on startup. I’m also updated as of today on the latest version of RetroPie and still getting tearing in NES, SNES, every emulator I’ve tried. Did anyone else experience this? Is it really as simple as commenting out
[pi4] #dtoverlay=vc4-fkms-v3d
and then adding the experimental one?
dtoverlay=vc4-kms-v3d-pi4,noaudio
I’ve also seen some other posts where there’s a space after the “=“ sign and others that don’t use pi4 at the end at all.
Is there some documentation about this somewhere? -
@lolkthxbai Yes, it should be as simple as putting that line in your config. When you updated, did you update your packages too, not just the retropie/gaming stuff?
Maybe post your config and we can look at what may need to be changed.
Also, I don't know about the space between the = thing. I would just follow what the config file already has when it comes to spacing for the safest route.
-
@lolkthxbai
This simple guide should get you up and running with KMS driver. -
@bluestang I don't think you need to do rpi-update to get the kms driver anymore (double check me on that though!) I think it ships with the standard software. rpi-update can sometimes be a pain, because it can be difficult to go backwards after getting pre-release software with it. I wouldn't recommend it.
-
@brandflake11 said in Fixing Screen Tearing issues on RPI4:
@bluestang I don't think you need to do rpi-update to get the kms driver anymore (double check me on that though!) I think it ships with the standard software. rpi-update can sometimes be a pain, because it can be difficult to go backwards after getting pre-release software with it. I wouldn't recommend it.
You absolutely need to do rpi-update because the KMS driver in the 5.4 kernel is broken and will not be fixed.
All your doing is going from one broke driver to the other if you do not update your kernel.
If you need to revert back to the 5.4 kernel you can always do this:
sudo apt install --reinstall raspberrypi-bootloader raspberrypi-kernel
-
@bluestang Ah, I did not know about this. Thank you for the details!
How broken is the kms driver in the mainline packages?
-
@brandflake11 said in Fixing Screen Tearing issues on RPI4:
@bluestang Ah, I did not know about this. Thank you for the details!
How broken is the kms driver in the mainline packages?
It’s missing many patches that were merged from upstream Linux because they started to appear in 5.9 and then were carried over to 5.10. which is the next LTS release.
Eventually RPiOS will make the switch to 5.10 and all of this will be moot.
But if you are trying to test things out, you need to be on the latest kernel to take advantage of the patches.
-
@bluestang Thank you for explaining and provided a way to revert because I did a lot of work on this installation lol
Anyways, I just started withsudo rpi-update
It mentioned the bootloader EEPROM has a firmware update available. Should I do that after the kernel update is complete?
UPDATE: So after editing my config.txt file following the instructions in the link you posted I have no video. I can't even see the raspberry pi on my network anymore so I can't SSH either. It does turn on, I can see the ethernet port LED is flashing. Yikes.
-
@lolkthxbai
I’m not sure where you went wrong. Are you able to post your config.txt? -
@bluestang
I ended up commenting and uncommenting a few things from my config.txt file and got it to work but now I'm having issues with audio.I can hear audio just fine in ES when playing video previews but when I launch a SNES game I get no Audio in the game. I exit the game and I also lose audio in ES.
I was following along this pinned topic but none of the troubleshooting steps there narrowed it down for me.
In ES>Sound Settings>System Volume stays at 0%
-
@lolkthxbai said in Fixing Screen Tearing issues on RPI4:
@bluestang
I ended up commenting and uncommenting a few things from my config.txt file and got it to work but now I'm having issues with audio.I can hear audio just fine in ES when playing video previews but when I launch a SNES game I get no Audio in the game. I exit the game and I also lose audio in ES.
I was following along this pinned topic but none of the troubleshooting steps there narrowed it down for me.
In ES>Sound Settings>System Volume stays at 0%
You need to select Default and Master for the volume slider to work if remember correctly.
Have you tried other emulators?
-
So the specific screen tearing you mentioned (didn't notice if a solution or fix was posted here, just briefly skimmed through responses) seems to be related to Threaded Video in the RetroArch video settings. Turning it off (it's on by default) seemed to clear up the tearing on my end. I was getting the tearing in a lot of things, but it was most prominent in Dreamcast and PS1 games. It also remedied some of the stuttering I was getting in a few games through Mame.
-
@bluestang
If I switch it to Default, Master and HDMI, the slider doesn't work.
If I switch it to Default, PCM and HDMI, it works in ES and inside of games. -
Hello, I notice odd "tearing" happening too, but only sometimes. Playing some Dreamcast stuff exposed it. Then I tried just MK2 on Mame2003 and I noticed it. I tried turning threaded video off, and it didn't fix it. Oddly, Sonic 2 on Genesis Plus GX with its fast motion didn't appear to have the problem. Another perplexing issue.
-
@greenhawk84 that's not the fix (in fact, you should turn it back on as it helps hugely with performance on many emulators). read the rest of this thread - kms driver is the fix, but has caveats.
-
@dankcushions thank you, is there any other root cause that can be updated/fixed in later builds, or is this simply a Pi4 hardware limitation?
-
@dankcushions I think as a small test, I will revert my overclock back to stock and see what happens. I like to make sure these things are happening with a standard setup from official updates and files.
-
Okay, I removed my overclock, so everything should be stock, and I still got tearing on I guess "intensive" games which is also odd since people are reporting NES issues. I tried the KMS driver and my Carbon theme got really weird looking and no videos were working. I was able to load up MK2 on Mame2003plus and it appeared to not have any tearing so I guess the KMS driver has something positive going for it. Other than that this is super strange on a Pi4 vs. a Pi3 where things were a lot smoother.
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.