Search Issue Tracker
Won't Fix
Votes
2
Found in
2019.3.15f1
2019.4
2020.1
2020.2
2021.1
Issue ID
1260575
Regression
No
[Android] Screen texture flickers when changing device's orientation
Repro steps:
1. Open QA attached project 1260575
2. Export a gradle project
3. Build the project to an Android device in Android Studio
4. Rotate the device from portrait to landscape and vice versa
Actual: The screen texture flickers after changing the device's orientation
Reproducible with: 2019.4.17f1, 2020.1.17f1, 2020.2.0f1, 2021.1.0b1
Tested and reproduced on these devices:
VLNQA00331, Huawei P20 lite (ANE-LX1), Android 9, CPU: HiSilicon Kirin 659, GPU: Mali-T830
VLNQA00001, Google Pixel 2 (Pixel 2), Android 11, CPU: Snapdragon 835 MSM8998, GPU: Adreno (TM) 540
VLNQA00231, Huawei HUAWEI Mate 20 Pro (LYA-L29), Android 9, CPU: HiSilicon Kirin 980, GPU: Mali-G76
Oneplus OnePlus 6 (ONEPLUS A6003), Android 10, CPU: Snapdragon 845 SDM845, GPU: Adreno (TM) 630
Add comment
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
Latest issues
- Shadows are not cast when the Light's CullingMask and the GameObject's Layer do not match
- Graphics.DrawMeshInstanced does not work when 2D Renderer and 2D Shaders are used
- SpeedTree does not move when using WindZone
- "Undeclared identifier 'LinearToSRGB'" error is thrown when creating a color variable with HDR color mode and assigning a Custom Render Texture target in Shader Graph
- Input System package is missing when creating a new HDRP project
Resolution Note (2021.2.X):
It looks like the main problem is with using ROTATION_ANIMATION_SEAMLESS or ROTATION_ANIMATION_JUMPCUT settings.
We simply cannot process these animations correctly on Android 7/8/9 (on earlier versions this was possible using surfaceRedrawNeeded() callback to stop auto redraw while new "rotated" frame is ready). On newer versions (7/8/9) Android redraws the screen before calling this callback.
Google has confirmed that there is nothing we can do to avoid animation flickering.
But in general even if these animations work correctly, the application would not look "seamless" in any way. The only way to make it really seamless is to stick to the original orientation and to rotate UI when required.
It appears that on Android 10 surfaceRedrawNeeded() callback can be used to avoid JUMPCUT/SEAMLESS rotation problems. On Android 11 things are worse. JUMPCUT/CROSSFADE work just like ROTATE. SEAMLESS works just like JUMPCUT is supposed to be working, but again using surfaceRedrawNeeded() callback doesn't help and there are animation problems just like with Android 7/8/9.