Merge lp://staging/~afrantzis/mir/non-blocking-swap-buffers into lp://staging/mir
Status: | Merged |
---|---|
Approved by: | Alexandros Frantzis |
Approved revision: | no longer in the source branch. |
Merged at revision: | 1545 |
Proposed branch: | lp://staging/~afrantzis/mir/non-blocking-swap-buffers |
Merge into: | lp://staging/mir |
Diff against target: |
662 lines (+426/-65) 8 files modified
include/test/mir_test/spin_wait.h (+38/-0) include/test/mir_test_doubles/null_display_buffer_compositor_factory.h (+52/-0) src/server/compositor/multi_threaded_compositor.cpp (+127/-49) tests/acceptance-tests/CMakeLists.txt (+1/-0) tests/acceptance-tests/test_client_surface_swap_buffers.cpp (+102/-0) tests/mir_test/CMakeLists.txt (+1/-0) tests/mir_test/spin_wait.cpp (+36/-0) tests/unit-tests/compositor/test_multi_threaded_compositor.cpp (+69/-16) |
To merge this branch: | bzr merge lp://staging/~afrantzis/mir/non-blocking-swap-buffers |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Alberto Aguirre (community) | Approve | ||
PS Jenkins bot (community) | continuous-integration | Approve | |
Kevin DuBois (community) | Abstain | ||
Review via email: mp+214755@code.staging.launchpad.net |
Commit message
compositor: Consume buffers of surfaces that are not rendered on screen
This ensures that eglSwapBuffers() in clients doesn't block if a surface is not
rendered.
Description of the change
compositor: Consume buffers of surfaces that are not rendered on screen
This ensures that eglSwapBuffers() in clients doesn't block if a surface is not
rendered.
We introduce a compositing thread that consumes all buffers at a steady 60Hz rate, mimicking a real display. The consuming compositing thread is active even when we have real compositing threads, since there is no guarantee that all surfaces are rendered on screen even if we have multiple screens. Our buffer multi-monitor synchronization mechanism guarantees that this works without problems.
Other MPs in the non-blocking eglSwapBuffers() series:
https:/
https:/
FAILED: Continuous integration, rev:1542 jenkins. qa.ubuntu. com/job/ mir-team- mir-development -branch- ci/1276/ jenkins. qa.ubuntu. com/job/ mir-android- trusty- i386-build/ 1531 jenkins. qa.ubuntu. com/job/ mir-clang- trusty- amd64-build/ 1529 jenkins. qa.ubuntu. com/job/ mir-mediumtests -trusty- touch/1105 jenkins. qa.ubuntu. com/job/ mir-team- mir-development -branch- trusty- amd64-ci/ 1008/console jenkins. qa.ubuntu. com/job/ mir-team- mir-development -branch- trusty- armhf-ci/ 1013 jenkins. qa.ubuntu. com/job/ mir-team- mir-development -branch- trusty- armhf-ci/ 1013/artifact/ work/output/ *zip*/output. zip jenkins. qa.ubuntu. com/job/ mir-mediumtests -builder- trusty- armhf/1106 jenkins. qa.ubuntu. com/job/ mir-mediumtests -builder- trusty- armhf/1106/ artifact/ work/output/ *zip*/output. zip jenkins. qa.ubuntu. com/job/ mir-mediumtests -runner- mako/1023 s-jenkins. ubuntu- ci:8080/ job/touch- flash-device/ 5754
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
FAILURE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild: s-jenkins. ubuntu- ci:8080/ job/mir- team-mir- development- branch- ci/1276/ rebuild
http://