Fullscreen bypassed clients stutter with double buffers when other clients are running
Bug #1447896 reported by
Daniel van Vugt
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mir |
Fix Released
|
Medium
|
Daniel van Vugt | ||
mir (Ubuntu) |
Fix Released
|
Medium
|
Unassigned |
Bug Description
Fullscreen bypassed clients stutter with double buffers when other clients are running.
1. mir_demo_
2. mir_demo_
3. mir_demo_
Expected: A fullscreen triangle rendering smoothly.
Observed: A fullscreen triangle stuttering.
Strangely the problem only occurs with multiple clients. Like the extra load is causing a delay in the return of buffers to the fullscreen client. It doesn't happen if you only have one client running.
Workarounds:
(A) Move/resize the fullscreen surface (Alt+drag) so that it is not using bypass any more; or
(B) --nbuffers=3
(C) --bypass=off
Related branches
lp:~vanvugt/mir/triple-again
- Alan Griffiths: Needs Fixing
- Cemil Azizoglu (community): Approve
- Kevin DuBois (community): Approve
- Alexandros Frantzis (community): Approve
- PS Jenkins bot (community): Approve (continuous-integration)
-
Diff: 70 lines (+12/-10)3 files modifieddebian/changelog (+1/-2)
src/platform/options/default_configuration.cpp (+1/-2)
tests/acceptance-tests/test_latency.cpp (+10/-6)
lp:~vanvugt/mir/predictive-bypass-2
- Alan Griffiths: Needs Information
- Andreas Pokorny (community): Needs Information
- PS Jenkins bot (community): Approve (continuous-integration)
-
Diff: 377 lines (+190/-0)9 files modifiedsrc/platforms/android/server/hwc_device.cpp (+45/-0)
src/platforms/mesa/server/kms/display_buffer.cpp (+62/-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)
tests/mir_test_doubles/mock_drm.cpp (+5/-0)
tests/unit-tests/graphics/android/test_hwc_device.cpp (+23/-0)
tests/unit-tests/graphics/mesa/kms/mock_kms_output.h (+1/-0)
tests/unit-tests/graphics/mesa/kms/test_display_buffer.cpp (+37/-0)
lp:~vanvugt/mir/predictive-bypass-v3
- 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)
description: | updated |
description: | updated |
description: | updated |
description: | updated |
Changed in mir: | |
milestone: | 0.13.0 → 0.14.0 |
Changed in mir: | |
milestone: | 0.14.0 → 0.15.0 |
Changed in mir (Ubuntu): | |
importance: | Undecided → Medium |
status: | New → Triaged |
Changed in mir: | |
status: | Fix Committed → Fix Released |
To post a comment you must log in.
Attached another branch 'predictive-bypass' that solves the problem. Presumably that works because it defers and shortens the bypass buffer hold duration.