Android overlay mode ping-pongs constantly when touchspots or software cursor is visible, causing stuttering and lag
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mir |
Won't Fix
|
High
|
Unassigned | ||
mir-android-platform |
New
|
Undecided
|
Unassigned | ||
mir (Ubuntu) |
Won't Fix
|
High
|
Unassigned |
Bug Description
Bypass/overlay mode ping-pongs constantly during touches with touchspots enabled, or when using a mouse (software cursor on Android). This visibly means the screen is stuttering and jerky.
This is a lesser form of bug 1373689, which has a workaround about to land...
$ bin/mir_
# (and also start a fullscreen client from elsewhere)
[1411611407.207459] (II) compositor: Started
[1411611407.230898] (II) compositor: Added display 0x1123d48: 768x1280 +0+0
[1411611407.236148] (II) compositor: Display 0x1123d48 bypass OFF
[1411611410.060412] (II) compositor: Display 0x1123d48 bypass ON
[1411611410.996746] (II) compositor: Display 0x1123d48 averaged 56.652 FPS, 11.493 ms/frame, latency 0.741 ms, 57 frames over 1.006 sec, 98% bypassed
[1411611411.998852] (II) compositor: Display 0x1123d48 averaged 59.875 FPS, 10.765 ms/frame, latency 0.305 ms, 60 frames over 1.002 sec, 100% bypassed
[1411611412.584721] (II) compositor: Display 0x1123d48 bypass OFF
[1411611412.599981] (II) compositor: Display 0x1123d48 bypass ON
[1411611412.677534] (II) compositor: Display 0x1123d48 bypass OFF
[1411611412.683699] (II) compositor: Display 0x1123d48 bypass ON
[1411611412.771628] (II) compositor: Display 0x1123d48 bypass OFF
[1411611412.783500] (II) compositor: Display 0x1123d48 bypass ON
[1411611412.874756] (II) compositor: Display 0x1123d48 bypass OFF
[1411611412.883577] (II) compositor: Display 0x1123d48 bypass ON
[1411611412.972513] (II) compositor: Display 0x1123d48 bypass OFF
[1411611412.983714] (II) compositor: Display 0x1123d48 bypass ON
Workaround: Start your Mir server with --disable-
Related branches
- PS Jenkins bot (community): Needs Fixing (continuous-integration)
- Daniel van Vugt: Approve
- Chris Halse Rogers: Approve
- Kevin DuBois (community): Approve
-
Diff: 1162 lines (+404/-23)38 files modifiedbenchmarks/frame-uniformity/vsync_simulating_graphics_platform.cpp (+5/-0)
include/platform/mir/graphics/display.h (+11/-0)
include/test/mir/test/doubles/null_display_sync_group.h (+11/-0)
src/include/platform/mir/options/configuration.h (+1/-0)
src/platform/options/default_configuration.cpp (+6/-0)
src/platform/symbols.map (+10/-0)
src/platforms/android/server/display_device.h (+3/-0)
src/platforms/android/server/display_group.cpp (+5/-0)
src/platforms/android/server/display_group.h (+1/-0)
src/platforms/android/server/fb_device.cpp (+5/-0)
src/platforms/android/server/fb_device.h (+1/-0)
src/platforms/android/server/hwc_device.cpp (+19/-0)
src/platforms/android/server/hwc_device.h (+2/-0)
src/platforms/android/server/hwc_fb_device.cpp (+5/-0)
src/platforms/android/server/hwc_fb_device.h (+1/-0)
src/platforms/mesa/server/kms/display_buffer.cpp (+33/-0)
src/platforms/mesa/server/kms/display_buffer.h (+2/-0)
src/platforms/mesa/server/kms/kms_output.h (+8/-0)
src/platforms/mesa/server/kms/real_kms_output.cpp (+8/-0)
src/platforms/mesa/server/kms/real_kms_output.h (+1/-0)
src/server/compositor/default_configuration.cpp (+4/-0)
src/server/compositor/multi_threaded_compositor.cpp (+18/-1)
src/server/compositor/multi_threaded_compositor.h (+2/-0)
src/server/graphics/nested/display.cpp (+8/-0)
src/server/graphics/nested/display.h (+1/-0)
src/server/graphics/offscreen/display.cpp (+6/-0)
src/server/graphics/offscreen/display.h (+1/-0)
tests/include/mir/test/doubles/mock_display_device.h (+1/-0)
tests/integration-tests/test_surface_stack_with_compositor.cpp (+12/-9)
tests/mir_test_doubles/mock_drm.cpp (+5/-0)
tests/unit-tests/compositor/test_multi_threaded_compositor.cpp (+71/-13)
tests/unit-tests/graphics/android/test_fb_device.cpp (+3/-0)
tests/unit-tests/graphics/android/test_hwc_device.cpp (+43/-0)
tests/unit-tests/graphics/android/test_hwc_fb_device.cpp (+3/-0)
tests/unit-tests/graphics/mesa/kms/mock_kms_output.h (+1/-0)
tests/unit-tests/graphics/mesa/kms/test_display_buffer.cpp (+54/-0)
tests/unit-tests/graphics/nested/test_nested_display.cpp (+17/-0)
tests/unit-tests/graphics/offscreen/test_offscreen_display.cpp (+16/-0)
Changed in mir: | |
assignee: | nobody → Cemil Azizoglu (cemil-azizoglu) |
assignee: | Cemil Azizoglu (cemil-azizoglu) → nobody |
assignee: | nobody → Robert Carr (robertcarr) |
Changed in mir: | |
milestone: | 0.8.0 → 0.9.0 |
Changed in mir: | |
milestone: | 0.9.0 → 0.10.0 |
summary: |
Bypass/overlay mode ping-pongs constantly during touches with touchspots - enabled + enabled, causing screen flickering and lag of touchspots |
tags: | added: overlays |
Changed in mir: | |
importance: | Medium → High |
status: | Confirmed → Triaged |
assignee: | Kevin DuBois (kdub) → nobody |
summary: |
- Bypass/overlay mode ping-pongs constantly during touches with touchspots + Overlay mode ping-pongs constantly during touches with touchspots enabled, causing screen flickering and lag of touchspots |
Changed in mir: | |
milestone: | 0.10.0 → 0.11.0 |
summary: |
- Overlay mode ping-pongs constantly during touches with touchspots - enabled, causing screen flickering and lag of touchspots + Overlay mode ping-pongs constantly with touchspots or software cursor + enabled, causing screen flickering and lag |
Changed in mir: | |
milestone: | 0.11.0 → 0.12.0 |
tags: | added: performance |
Changed in mir: | |
milestone: | 0.12.0 → 0.13.0 |
Changed in mir (Ubuntu): | |
status: | New → Triaged |
importance: | Undecided → High |
Changed in mir: | |
milestone: | 0.13.0 → 0.14.0 |
Changed in mir: | |
milestone: | 0.14.0 → 0.15.0 |
Changed in mir: | |
milestone: | 0.15.0 → 0.16.0 |
description: | updated |
summary: |
- Android overlay mode ping-pongs constantly with touchspots or software - cursor enabled, causing stuttering and lag + Android overlay mode ping-pongs constantly when touchspots or software + cursor is visible, causing stuttering and lag |
The strange thing about this bug (and why it is a bug) is that the type, number and ordering of renderables is not changing from frame to frame. Therefore whether or not any of them get overlaid should not change at all from frame to frame either.