Merge lp://qastaging/~kdub/mir/egl-sync-fences into lp://qastaging/mir
Status: | Merged |
---|---|
Approved by: | Kevin DuBois |
Approved revision: | no longer in the source branch. |
Merged at revision: | 3169 |
Proposed branch: | lp://qastaging/~kdub/mir/egl-sync-fences |
Merge into: | lp://qastaging/mir |
Prerequisite: | lp://qastaging/~kdub/mir/android-shift-swapbuffers |
Diff against target: |
1322 lines (+420/-48) 44 files modified
include/renderers/gl/mir/renderer/gl/texture_source.h (+10/-0) src/common/graphics/android/CMakeLists.txt (+1/-0) src/common/graphics/android/android_native_buffer.cpp (+15/-1) src/gl/recently_used_cache.cpp (+8/-7) src/include/common/mir/graphics/android/android_native_buffer.h (+6/-0) src/include/common/mir/graphics/android/native_buffer.h (+3/-0) src/platform/symbols.map (+14/-0) src/platforms/android/client/CMakeLists.txt (+2/-0) src/platforms/android/client/gralloc_registrar.cpp (+3/-1) src/platforms/android/server/CMakeLists.txt (+1/-0) src/platforms/android/server/android_alloc_adaptor.cpp (+12/-5) src/platforms/android/server/android_alloc_adaptor.h (+6/-2) src/platforms/android/server/android_buffer_allocator.cpp (+10/-4) src/platforms/android/server/android_graphic_buffer_allocator.h (+5/-1) src/platforms/android/server/buffer.cpp (+23/-4) src/platforms/android/server/buffer.h (+6/-0) src/platforms/android/server/cmdstream_sync_factory.h (+48/-0) src/platforms/android/server/display_component_factory.h (+2/-0) src/platforms/android/server/egl_sync_factory.cpp (+34/-0) src/platforms/android/server/hal_component_factory.cpp (+15/-0) src/platforms/android/server/hal_component_factory.h (+3/-1) src/platforms/android/server/ipc_operations.cpp (+1/-0) src/platforms/android/server/platform.cpp (+10/-4) src/platforms/android/server/platform.h (+3/-0) src/platforms/mesa/server/common/gbm_buffer.cpp (+9/-0) src/platforms/mesa/server/common/gbm_buffer.h (+2/-0) src/platforms/mesa/server/common/shm_buffer.cpp (+9/-0) src/platforms/mesa/server/common/shm_buffer.h (+2/-0) tests/include/mir/test/doubles/mock_android_native_buffer.h (+2/-0) tests/include/mir/test/doubles/mock_buffer.h (+1/-0) tests/include/mir/test/doubles/mock_gl_buffer.h (+2/-0) tests/include/mir/test/doubles/stub_android_native_buffer.h (+3/-0) tests/include/mir/test/doubles/stub_cmdstream_sync_factory.h (+41/-0) tests/include/mir/test/doubles/stub_display_builder.h (+5/-0) tests/include/mir/test/doubles/stub_gl_buffer.h (+2/-0) tests/integration-tests/graphics/mesa/test_buffer_integration.cpp (+3/-0) tests/unit-tests/gl/test_gl_texture_cache.cpp (+3/-1) tests/unit-tests/gl/test_program_factory.cpp (+1/-1) tests/unit-tests/graphics/android/test_android_alloc_adaptor.cpp (+5/-2) tests/unit-tests/graphics/android/test_android_buffer_allocator.cpp (+6/-2) tests/unit-tests/graphics/android/test_buffer_tex_bind.cpp (+13/-1) tests/unit-tests/graphics/android/test_display_hotplug.cpp (+5/-0) tests/unit-tests/graphics/android/test_native_buffer.cpp (+50/-7) tests/unit-tests/graphics/android/test_platform.cpp (+15/-4) |
To merge this branch: | bzr merge lp://qastaging/~kdub/mir/egl-sync-fences |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
PS Jenkins bot (community) | continuous-integration | Approve | |
Alan Griffiths | Approve | ||
Cemil Azizoglu (community) | Approve | ||
Andreas Pokorny (community) | Approve | ||
Review via email:
|
Commit message
android: use the EGL_fence_sync extensions to synchronize client software buffers.
fixes: lp: #1517205
Description of the change
android: use the EGL_fence_sync extensions to synchronize client software buffers.
fixes: lp: #1517205
tested on n7, krillin, mx4. (krillin and mx4 had additional problem that will be fixed later. This MP did not make their situation worse)
Summary of Changes:
1) When the texture is used in the GLContext, raise the egl sync fence.
2) When the buffer is sent back to the client, make sure to clear the sync fence before sending it across IPC.
3) Make sure that we actually eglSwapBuffers in mir::renderer:
Helpful Details:
Why do we have to shift swapbuffers?
-- If we wait on the EGL sync fences before swapbuffers, then the wait will timeout, as the commands haven't been flushed, and the sync points won't signal. Android currently has the problem that the swapbuffers is delayed until mg::DisplayGrou
Why was swapbuffers in post?
-- HWC 1.0 has the unfortunate design that we're not allowed to call swapbuffers. HWC 1.1 and later, as well as the legacy FB module, can all call swapbuffers. We tried to bury this bad design choice, but this particular problem forces us to take different actions here. The problem we're seeing here is really why the HWC 1.1 api designers gave swapbuffers back to the server.
What was the problem?
glEGLTargetText
What's still wrong with krillin/mx4?
https:/
note: this should land at the same time as the stacked on branch:
https:/
I split the MP up for the benefit of reviewing (esp as we have to shift swapping behavior a bit)
FAILED: Continuous integration, rev:3127 jenkins. qa.ubuntu. com/job/ mir-ci/ 5612/ jenkins. qa.ubuntu. com/job/ mir-android- vivid-i386- build/4961/ console jenkins. qa.ubuntu. com/job/ mir-clang- vivid-amd64- build/3867 jenkins. qa.ubuntu. com/job/ mir-mediumtests -vivid- touch/4907/ console jenkins. qa.ubuntu. com/job/ mir-mediumtests -wily-touch/ 863/console jenkins. qa.ubuntu. com/job/ mir-wily- amd64-ci/ 1765 jenkins. qa.ubuntu. com/job/ mir-wily- amd64-ci/ 1765/artifact/ work/output/ *zip*/output. zip jenkins. qa.ubuntu. com/job/ mir-wily- i386-ci/ 861 jenkins. qa.ubuntu. com/job/ mir-wily- i386-ci/ 861/artifact/ work/output/ *zip*/output. zip jenkins. qa.ubuntu. com/job/ mir-mediumtests -builder- vivid-armhf/ 4907/console jenkins. qa.ubuntu. com/job/ mir-mediumtests -builder- wily-armhf/ 864/console
http://
Executed test runs:
FAILURE: http://
SUCCESS: http://
FAILURE: http://
FAILURE: http://
SUCCESS: http://
deb: http://
SUCCESS: http://
deb: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild: s-jenkins. ubuntu- ci:8080/ job/mir- ci/5612/ rebuild
http://