Merge lp:~raof/mir/eglstream-platform into lp:mir
| Status: | Merged |
|---|---|
| Merged at revision: | 3537 |
| Proposed branch: | lp:~raof/mir/eglstream-platform |
| Merge into: | lp:mir |
| Diff against target: |
2843 lines (+2556/-12) 32 files modified
.bzrignore (+3/-0) CMakeLists.txt (+9/-2) include/client/mir_toolkit/client_types.h (+2/-1) src/platforms/CMakeLists.txt (+5/-1) src/platforms/eglstream-kms/CMakeLists.txt (+2/-0) src/platforms/eglstream-kms/client/CMakeLists.txt (+39/-0) src/platforms/eglstream-kms/client/client_buffer.cpp (+159/-0) src/platforms/eglstream-kms/client/client_buffer.h (+67/-0) src/platforms/eglstream-kms/client/client_buffer_factory.cpp (+36/-0) src/platforms/eglstream-kms/client/client_buffer_factory.h (+45/-0) src/platforms/eglstream-kms/client/client_platform.cpp (+77/-0) src/platforms/eglstream-kms/client/client_platform.h (+52/-0) src/platforms/eglstream-kms/client/client_platform_factory.cpp (+59/-0) src/platforms/eglstream-kms/client/symbols.map (+7/-0) src/platforms/eglstream-kms/server/CMakeLists.txt (+55/-0) src/platforms/eglstream-kms/server/buffer_allocator.cpp (+69/-0) src/platforms/eglstream-kms/server/buffer_allocator.h (+48/-0) src/platforms/eglstream-kms/server/display.cpp (+363/-0) src/platforms/eglstream-kms/server/display.h (+82/-0) src/platforms/eglstream-kms/server/egl_output.cpp (+359/-0) src/platforms/eglstream-kms/server/egl_output.h (+79/-0) src/platforms/eglstream-kms/server/kms_display_configuration.cpp (+331/-0) src/platforms/eglstream-kms/server/kms_display_configuration.h (+70/-0) src/platforms/eglstream-kms/server/platform.cpp (+162/-0) src/platforms/eglstream-kms/server/platform.h (+66/-0) src/platforms/eglstream-kms/server/platform_symbols.cpp (+189/-0) src/platforms/eglstream-kms/server/symbols.map.in (+10/-0) src/platforms/mesa/server/kms/platform_symbols.cpp (+14/-0) tests/unit-tests/CMakeLists.txt (+4/-0) tests/unit-tests/client/test_probing_client_platform_factory.cpp (+32/-0) tests/unit-tests/graphics/mesa/kms/test_platform.cpp (+47/-2) tests/unit-tests/graphics/test_platform_prober.cpp (+14/-6) |
| To merge this branch: | bzr merge lp:~raof/mir/eglstream-platform |
| Related bugs: |
| Reviewer | Review Type | Date Requested | Status |
|---|---|---|---|
| Mir CI Bot | continuous-integration | 2016-06-03 | Needs Fixing on 2016-06-09 |
| Alan Griffiths | Abstain on 2016-06-09 | ||
| Cemil Azizoglu (community) | Needs Fixing on 2016-06-07 | ||
| Daniel van Vugt | 2016-06-03 | Pending | |
|
Review via email:
|
|||
Commit Message
Add an EGLStream client platform and KMS-backed EGLStream server platform.
Currently supports only software clients, as hooking into nvidia's EGL is not (yet?) possible.
Description of the Change
The actual EGLStream platform
| Mir CI Bot (mir-ci-bot) wrote : | # |
PASSED: Continuous integration, rev:3540
https:/
Executed test runs:
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
| Cemil Azizoglu (cemil-azizoglu) wrote : | # |
Are there eglstream implementations that don't use kms? Instead of eglstream-kms, can't we call it eglstream?
-------
Couldn't mesa-kms and/or mesa-x11 return mg::PlatformPri
2489 +mg::PlatformPr
-------
Are guest platforms a TODO or will they be unsupported forever? A comment would be good either way?
2587 +mir::UniqueMod
2588 + std::shared_
2589 + std::shared_
2590 +{
2591 + mir::assert_
2592 + return nullptr;
2593 +}
-------
Isn't this going to require root? Can drm render nodes not be used instead?
2238 + if (drmSetMaster(
-------
Any reason why we don't request alpha? I changed mir-on-X on Gerry's request that he needed alpha. May want to do the same here.
907 + EGL_ALPHA_SIZE, 0,
-------
This only supports software rendering but we should still check for
if (buffer_
and throw if hardware is requested.
765 +std::shared_
766
-------
s/falied/failed
+ "Platform claims to support EGL_EXT_
-------
Probably be better handled by returning unsupported as was done to get the device_count.
2533 + if (eglQueryDevice
2534 + {
2535 + BOOST_THROW_
2536 + }
| Mir CI Bot (mir-ci-bot) wrote : | # |
PASSED: Continuous integration, rev:3541
https:/
Executed test runs:
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
| Mir CI Bot (mir-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:3542
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
deb: https:/
FAILURE: https:/
FAILURE: https:/
Click here to trigger a rebuild:
https:/
| Mir CI Bot (mir-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:3544
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
| Mir CI Bot (mir-ci-bot) wrote : | # |
PASSED: Continuous integration, rev:3544
https:/
Executed test runs:
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
| Alan Griffiths (alan-griffiths) wrote : | # |
This seems like a lot of code with only the most trivial of tests. But I guess there's a limit to what we can test when it is supplying our abstraction over the drivers.
| Chris Halse Rogers (raof) wrote : | # |
There are some more tests that I could usefully write; I'll write some tests that the platform-probe succeeds in appropriate environments and fails in inappropriate ones.
I'll also investigate writing a dummy KMS driver; that would let us usefully test a whole lot more.
| Alan Griffiths (alan-griffiths) wrote : | # |
We can land wit ha promise of tests later
| Mir CI Bot (mir-ci-bot) wrote : | # |
FAILED: Autolanding.
More details in the following jenkins job:
https:/
Executed test runs:
SUCCESS: https:/
FAILURE: https:/
None: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
| Chris Halse Rogers (raof) wrote : | # |
Ahem. Post-merge response to Cemil.
> Are there eglstream implementations that don't use kms? Instead of eglstream-kms, can't we call > it eglstream?
nvidia currently have non-KMS platforms that use EGLStream (they've talked about OpenWF things). We don't currently have non-KMS EGLStream platforms, but they're plausible.
> Couldn't mesa-kms and/or mesa-x11 return mg::PlatformPri
This was resolved by commits (and tests!) subsequent to this question; mesa-kms now checks for the EGL_MESA_
> Are guest platforms a TODO or will they be unsupported forever? A comment would be good either > way?
Guest platforms are a TODO, albeit a TODO that I hope to delay until it no longer needs to be done (splitting output from buffer-allocation will remove guest platforms entirely)
> Isn't this going to require root? Can drm render nodes not be used instead?
> 2238 + if (drmSetMaster(
Yes, this requires root (or to already be master, IIRC). You need to be master to do modesetting, so the platform can't work unless it's master.
Render nodes (as their name suggests) can't do modesetting ☺
> Any reason why we don't request alpha? I changed mir-on-X on Gerry's request that he needed
> alpha. May want to do the same here.
> 907 + EGL_ALPHA_SIZE, 0,
Hm, probably. I'll look into this when I get home and can test it.

FAILED: Continuous integration, rev:3539 /mir-jenkins. ubuntu. com/job/ mir-ci/ 1081/ /mir-jenkins. ubuntu. com/job/ build-mir/ 1197/console /mir-jenkins. ubuntu. com/job/ build-0- fetch/1247/ console /mir-jenkins. ubuntu. com/job/ build-1- sourcepkg/ release= vivid+overlay/ 1238/console /mir-jenkins. ubuntu. com/job/ build-1- sourcepkg/ release= xenial/ 1238/console /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= clang,platform= mesa,release= vivid+overlay/ 1207/console /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= gcc,platform= mesa,release= xenial/ 1207/console /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= cross-armhf, compiler= gcc,platform= android, release= vivid+overlay/ 1207/console /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= android, release= vivid+overlay/ 1207/console /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= mesa,release= xenial/ 1207/console
https:/
Executed test runs:
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
Click here to trigger a rebuild: /mir-jenkins. ubuntu. com/job/ mir-ci/ 1081/rebuild
https:/