Protocol (buffer) replies are being sent from the compositor thread, holding up the render loop
Bug #1395421 reported by
Daniel van Vugt
This bug affects 2 people
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mir |
Fix Released
|
Medium
|
Chris Halse Rogers |
Bug Description
Protocol (exchange_buffer) replies are being sent from the compositor thread, holding up the render loop.
Attached is a Google Profiler graph which shows the issue. It's fair to say that on a low-end host blocking the compositor loop to do significant protocol work is going to cause premature frame skipping.
Related branches
lp://qastaging/~vanvugt/mir/earlier-release
- PS Jenkins bot (community): Approve (continuous-integration)
- Daniel van Vugt: Needs Information
- Kevin DuBois (community): Approve
- Cemil Azizoglu (community): Approve
- Alan Griffiths: Approve
- Chris Halse Rogers: Approve
-
Diff: 164 lines (+107/-0)4 files modifiedsrc/server/compositor/buffer_queue.cpp (+17/-0)
src/server/compositor/buffer_queue.h (+1/-0)
tests/integration-tests/test_buffer_scheduling.cpp (+54/-0)
tests/unit-tests/compositor/test_buffer_queue.cpp (+35/-0)
lp://qastaging/~vanvugt/mir/earlier-release-2
- PS Jenkins bot (community): Needs Fixing (continuous-integration)
- Alan Griffiths: Needs Fixing
- Kevin DuBois (community): Approve
-
Diff: 309 lines (+252/-0)4 files modifiedsrc/server/compositor/buffer_queue.cpp (+24/-0)
src/server/compositor/buffer_queue.h (+1/-0)
tests/integration-tests/test_buffer_scheduling.cpp (+115/-0)
tests/unit-tests/compositor/test_buffer_queue.cpp (+112/-0)
lp://qastaging/~vanvugt/mir/confusing-and-misleading
- Cemil Azizoglu (community): Approve
- Mir CI Bot: Approve (continuous-integration)
-
Diff: 23 lines (+11/-3)1 file modifiedsrc/server/compositor/default_display_buffer_compositor.cpp (+11/-3)
lp://qastaging/~raof/mir/no-ipc-on-compositor-threads
- Alan Griffiths: Approve
- Mir CI Bot: Approve (continuous-integration)
-
Diff: 1038 lines (+399/-182)18 files modifiedinclude/server/mir/frontend/buffer_stream.h (+0/-5)
src/server/compositor/dropping_schedule.cpp (+0/-10)
src/server/compositor/dropping_schedule.h (+0/-2)
src/server/compositor/queueing_schedule.cpp (+0/-7)
src/server/compositor/queueing_schedule.h (+0/-2)
src/server/compositor/schedule.h (+0/-3)
src/server/compositor/stream.cpp (+1/-33)
src/server/compositor/stream.h (+0/-5)
src/server/frontend/default_ipc_factory.cpp (+186/-1)
src/server/frontend/default_ipc_factory.h (+4/-0)
src/server/frontend/published_socket_connector.cpp (+50/-10)
src/server/frontend/published_socket_connector.h (+1/-1)
src/server/frontend/session_mediator.cpp (+47/-21)
src/server/frontend/session_mediator.h (+6/-1)
tests/include/mir/test/doubles/stub_buffer_stream.h (+0/-2)
tests/unit-tests/compositor/test_multi_monitor_arbiter.cpp (+0/-6)
tests/unit-tests/compositor/test_queueing_schedule.cpp (+0/-19)
tests/unit-tests/frontend/test_session_mediator.cpp (+104/-54)
Changed in mir: | |
status: | Fix Committed → Triaged |
Changed in mir: | |
milestone: | none → 0.26.0 |
Changed in mir: | |
milestone: | 0.26.0 → none |
Changed in mir: | |
assignee: | nobody → Chris Halse Rogers (raof) |
status: | Triaged → In Progress |
milestone: | none → 0.28.0 |
Changed in mir: | |
status: | Fix Committed → Fix Released |
To post a comment you must log in.
On the other hand, if we optimize our protocol code then it shouldn't matter what thread does the work in future.