godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
90.06k stars 21.12k forks source link

OpenGL: Screen tearing on some Android devices #70031

Closed Snowy-Fox closed 1 year ago

Snowy-Fox commented 1 year ago

Godot version

4.0beta8 - 4.0RC2

System information

Android 9, OpenGL 3, PowerVR GE8300

Issue description

On certain Android devices, there is a persistent, obvious screen tearing issue. This tearing is unaffected by v-sync or scaling settings. The top third of the screen lags several frames behind the bottom two thirds.

At present, I've only observed the issue on a Retroid Pocket 2+ handheld (Android 9, PowerVR GE8300 GPU). I've also tested the same projects on a Huawei P10 Lite phone (Android 8, Mali-T830 GPU) but observed no issues there.

photo_2022-12-13_15-45-20_detail

https://user-images.githubusercontent.com/6191653/207448582-a6df595f-2104-4275-804c-9b63ca51af4b.mp4

I will also note that I had this issue with 3.x, as well. In that case, I observed the screen tearing on both the Pocket 2+ and the P10 Lite, and I eventually resolved it by switching the graphics driver from GLES3 to GLES2.

Steps to reproduce

Note that the issue only affects certain Android devices, and may require testing on multiple devices in order to narrow down the cause.

Minimal reproduction project

Any project exported using OpenGL 3 will do, but here's the one I made to test it. Android Test 4.0b8.zip

Snowy-Fox commented 1 year ago

Just tested export from Godot 4.0beta9 - issue persists

EDIT 24.12.22 - 20.02.23 Same on 4.0beta10 to 4.0RC2

Snowy-Fox commented 1 year ago

I just tested an export from Godot 4.0 RC 3, and as of this version, the screen tearing is no longer occurring on the Retroid Pocket 2+!

I re-tested on the Huawei P10 Lite, too, and the screen tearing is still no longer occurring on that, either.

This exhausts the Android devices I'm able to test on. Hopefully nobody else is still having the issue on their devices, either.

aerze commented 1 year ago

I'm still having this exact issue with the Retroid Pocket 2+ on v4.0.stable.official [92bee43ad] I tried downloading and installing the zipped project above and I'm getting the same results as the video above as well. I'm really new to this so it could very likely be a configuration setting somewhere for the project/android export I'm missing. Any notes/links/ideas would be great! Last thing I'm checking tonight is to try to update the Retroid Pocket 2+ to it's latest OTA update.

Snowy-Fox commented 1 year ago

I'm still having this exact issue with the Retroid Pocket 2+ on v4.0.stable.official [92bee43]

In Godot, which renderer are you using? For exporting for older Android devices, like the RP2+, you should be using Compatibility (gl_compatibility) for best results.

aerze commented 1 year ago

Yeah I was using the Compatibility version, ironically I found that switching to Mobile somehow helped and isn't showing the glitching anymore 🤷‍♀️ . I'm ok with using that for now but I can also keep testing the other mode if needed.

Snowy-Fox commented 1 year ago

Yeah I was using the Compatibility version, ironically I found that switching to Mobile somehow helped and isn't showing the glitching anymore 🤷‍♀️ . I'm ok with using that for now but I can also keep testing the other mode if needed.

How odd! I didn't think the Mobile renderer was compatible with the RP2+. I'll have to test it myself at some point.

aerze commented 1 year ago

I checked online, and supposedly the GPU in the RP2+ should support vulkan 1 which I think is why it's working, but again I'm very new to this

aerze commented 1 year ago

RetroDodo Review/Specs PowerVR GE8300 Specs image

DavidJayIndie commented 6 months ago

There's still screen tearing on the RP2+ as of 4.2.2 rc2 unfortunately. I'd reopen a ticket about this, but I don't know if it's worth it for such a niche device.