[performance] Restore support for better-than-triple buffering by default.
Bug #1240909 reported by
Daniel van Vugt
This bug affects 2 people
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mir |
Fix Released
|
Medium
|
Daniel van Vugt | ||
mir (Ubuntu) |
Fix Released
|
Medium
|
Unassigned |
Bug Description
We really should restore support for double-buffering (or better) where possible. Presently we're on triple-buffering all the time.
Related branches
lp://qastaging/~vanvugt/mir/double
- PS Jenkins bot (community): Approve (continuous-integration)
- Daniel van Vugt: Needs Fixing
- Alexandros Frantzis (community): Needs Fixing
- Alberto Aguirre: Pending requested
-
Diff: 850 lines (+446/-53)4 files modifiedsrc/server/compositor/buffer_queue.cpp (+122/-22)
src/server/compositor/buffer_queue.h (+7/-2)
tests/integration-tests/surface_composition.cpp (+8/-1)
tests/unit-tests/compositor/test_buffer_queue.cpp (+309/-28)
lp://qastaging/~mir-team/mir/enable-dynamic-buffer-queue
- Kevin DuBois (community): Needs Fixing
- Daniel van Vugt: Needs Fixing
- Alexandros Frantzis (community): Needs Fixing
- Alan Griffiths: Abstain
- PS Jenkins bot (community): Approve (continuous-integration)
-
Diff: 1537 lines (+400/-361)10 files modifiedinclude/test/mir_test/signal.h (+1/-0)
src/server/compositor/buffer_queue.cpp (+85/-33)
src/server/compositor/buffer_queue.h (+12/-3)
src/server/compositor/buffer_stream_factory.cpp (+2/-3)
tests/integration-tests/compositor/test_buffer_stream.cpp (+77/-63)
tests/integration-tests/compositor/test_swapping_swappers.cpp (+1/-1)
tests/integration-tests/graphics/android/test_buffer_integration.cpp (+2/-1)
tests/integration-tests/test_surface_first_frame_sync.cpp (+1/-1)
tests/mir_test/signal.cpp (+6/-0)
tests/unit-tests/compositor/test_buffer_queue.cpp (+213/-256)
lp://qastaging/~vanvugt/mir/ddouble
- Cemil Azizoglu (community): Approve
- Alexandros Frantzis (community): Approve
- Alberto Aguirre (community): Abstain
- Kevin DuBois (community): Abstain
- PS Jenkins bot (community): Approve (continuous-integration)
- Alan Griffiths: Abstain
-
Diff: 486 lines (+277/-45)3 files modifiedsrc/server/compositor/buffer_queue.cpp (+96/-19)
src/server/compositor/buffer_queue.h (+14/-0)
tests/unit-tests/compositor/test_buffer_queue.cpp (+167/-26)
lp://qastaging/~vanvugt/mir/always-double-buffers
- Daniel van Vugt: Abstain
- Kevin DuBois (community): Approve
- Robert Carr (community): Approve
- Alan Griffiths: Approve
- PS Jenkins bot (community): Approve (continuous-integration)
-
Diff: 12 lines (+1/-2)1 file modifiedsrc/server/compositor/buffer_stream_factory.cpp (+1/-2)
lp://qastaging/~vanvugt/mir/always-triple-buffers
- Alberto Aguirre (community): Approve
- Alan Griffiths: Needs Information
- PS Jenkins bot (community): Approve (continuous-integration)
-
Diff: 85 lines (+12/-6)3 files modifiedsrc/server/compositor/buffer_queue.cpp (+1/-1)
tests/integration-tests/test_buffer_scheduling.cpp (+6/-2)
tests/unit-tests/compositor/test_buffer_queue.cpp (+5/-3)
lp://qastaging/~vanvugt/mir/enable-dynamic-queue-scaling
- PS Jenkins bot (community): Needs Fixing (continuous-integration)
- Mir CI Bot: Approve (continuous-integration)
- Daniel van Vugt: Needs Information
- Kevin DuBois (community): Abstain
-
Diff: 94 lines (+52/-7)2 files modifiedsrc/server/compositor/buffer_queue.cpp (+1/-1)
tests/acceptance-tests/test_latency.cpp (+51/-6)
lp://qastaging/~vanvugt/mir/client-side-vsync
- Alan Griffiths: Approve
- Kevin DuBois (community): Approve
- Mir CI Bot: Approve (continuous-integration)
- Cemil Azizoglu (community): Approve
-
Diff: 1547 lines (+1049/-22)24 files modifiedinclude/client/mir_toolkit/mir_buffer_stream.h (+0/-1)
include/client/mir_toolkit/mir_surface.h (+0/-1)
include/core/mir_toolkit/common.h (+7/-4)
src/client/CMakeLists.txt (+1/-0)
src/client/buffer_stream.cpp (+111/-6)
src/client/buffer_stream.h (+12/-1)
src/client/error_stream.cpp (+6/-0)
src/client/error_stream.h (+2/-0)
src/client/frame_clock.cpp (+156/-0)
src/client/frame_clock.h (+73/-0)
src/client/mir_buffer_stream_api.cpp (+8/-1)
src/client/mir_surface.cpp (+113/-5)
src/client/mir_surface.h (+10/-0)
src/client/mir_surface_api.cpp (+1/-1)
src/client/screencast_stream.cpp (+8/-0)
src/client/screencast_stream.h (+2/-0)
src/include/client/mir/mir_buffer_stream.h (+2/-0)
tests/acceptance-tests/test_client_library.cpp (+5/-0)
tests/acceptance-tests/test_latency.cpp (+27/-2)
tests/include/mir/test/doubles/mock_mir_buffer_stream.h (+2/-0)
tests/unit-tests/client/CMakeLists.txt (+1/-0)
tests/unit-tests/client/test_client_mir_surface.cpp (+81/-0)
tests/unit-tests/client/test_frame_clock.cpp (+420/-0)
tests/unit-tests/platforms/android/server/test_hwc_device.cpp (+1/-0)
summary: |
- [feature] Restore support for dynamic switching to double-buffering + [enhancement] Restore support for dynamic switching to double-buffering |
tags: |
added: enhancement removed: feature |
Changed in mir: | |
status: | Triaged → In Progress |
Changed in mir: | |
milestone: | none → 0.1.0 |
Changed in mir: | |
status: | In Progress → Triaged |
Changed in mir: | |
milestone: | 0.1.0 → none |
Changed in mir: | |
status: | Triaged → In Progress |
milestone: | none → 0.5.0 |
Changed in mir: | |
milestone: | 0.5.0 → 0.6.0 |
tags: | added: performance |
summary: |
- [enhancement] Restore support for dynamic switching to double-buffering + [performance] Restore support for dynamic switching to double-buffering |
tags: | added: rtm14 |
Changed in mir: | |
milestone: | 0.6.0 → 0.7.0 |
Changed in mir: | |
milestone: | 0.7.0 → 0.8.0 |
Changed in mir: | |
milestone: | 0.8.0 → none |
milestone: | none → 0.8.0 |
Changed in mir: | |
milestone: | 0.8.0 → 0.9.0 |
Changed in mir: | |
milestone: | 0.9.0 → 0.8.0 |
Changed in mir: | |
milestone: | 0.8.0 → none |
status: | In Progress → Triaged |
Changed in mir: | |
status: | Triaged → In Progress |
milestone: | none → 0.10.0 |
Changed in mir: | |
milestone: | 0.10.0 → 0.11.0 |
milestone: | 0.11.0 → none |
status: | In Progress → Triaged |
summary: |
- [performance] Restore support for dynamic switching to double-buffering + [performance] Restore support for double-buffering by default |
Changed in mir: | |
milestone: | none → 0.12.0 |
status: | Triaged → In Progress |
description: | updated |
Changed in mir: | |
milestone: | 0.12.0 → 0.13.0 |
Changed in mir (Ubuntu): | |
importance: | Undecided → Medium |
status: | New → Triaged |
Changed in mir: | |
importance: | Medium → High |
no longer affects: | mir/0.12 |
Changed in mir: | |
milestone: | 0.13.0 → 0.14.0 |
Changed in mir: | |
status: | Fix Committed → In Progress |
Changed in mir: | |
milestone: | 0.15.0 → 0.16.0 |
no longer affects: | mir/0.5 |
Changed in mir: | |
status: | Triaged → In Progress |
milestone: | none → 0.20.0 |
summary: |
- [performance] Restore support for double-buffering by default + [performance] Restore support for better-than-triple buffering by + default. |
Changed in mir: | |
milestone: | 0.20.0 → 0.21.0 |
Changed in mir (Ubuntu): | |
status: | Won't Fix → Triaged |
Changed in mir: | |
importance: | High → Medium |
milestone: | none → 1.0.0 |
status: | Won't Fix → In Progress |
description: | updated |
Changed in mir: | |
milestone: | 1.0.0 → 0.26.0 |
Changed in mir: | |
status: | Fix Committed → Fix Released |
To post a comment you must log in.
I'm not happy with the reliability of the heuristic right now. If we get it wrong then performance will get worse, not better. Best to not depend on this enhancement to rtm14. It may make it in still, but not sure.