Merge lp:~kdub/mir/split-platform-into-rendering-and-display into lp:mir
Status: | Merged |
---|---|
Approved by: | Chris Halse Rogers |
Approved revision: | no longer in the source branch. |
Merged at revision: | 4092 |
Proposed branch: | lp:~kdub/mir/split-platform-into-rendering-and-display |
Merge into: | lp:mir |
Diff against target: |
159 lines (+61/-19) 4 files modified
debian/control (+2/-2) debian/libmirplatform16.install (+1/-1) include/platform/mir/graphics/platform.h (+57/-15) src/CMakeLists.txt (+1/-1) |
To merge this branch: | bzr merge lp:~kdub/mir/split-platform-into-rendering-and-display |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Chris Halse Rogers | Approve | ||
Mir CI Bot | continuous-integration | Approve | |
Daniel van Vugt | Approve | ||
Cemil Azizoglu (community) | Approve | ||
Andreas Pokorny (community) | Needs Information | ||
Alan Griffiths | Approve | ||
Review via email: mp+319828@code.launchpad.net |
Commit message
Start to split 'server platform' into rendering and display components. More specifically, provide mg::DisplayPlatform and mg::RenderingPl
Our current system has 'host' platform and a 'guest' platform (both of which are confusingly mg::Platforms). The guest platform is used when the server wants to implement its own mg::Display (nested or offscreen). The host platform provides the capability to make displays. Its a bit confusing, and hasn't scaled well.
The outputs we currently have, or intend to have are: {kms, x11, hwc, nested, offscreen} [1] [2]
The rendering system we currently have, or intend to have are: { cpu, gbm/mesa, eglstreams/nvidia, ANWB/android } [1] [3]
Description of the change
Start to split 'server platform' into rendering and display components. More specifically, provide mg::DisplayPlatform and mg::RenderingPl
Our current system has 'host' platform and a 'guest' platform (both of which are confusingly mg::Platforms). The guest platform is used when the server wants to implement its own mg::Display (nested or offscreen). The host platform provides the capability to make displays. Its a bit confusing, and hasn't scaled well.
The outputs we currently have, or intend to have are: {kms, x11, hwc, nested, offscreen} [1] [2]
The rendering system we currently have, or intend to have are: { cpu, gbm/mesa, eglstreams/nvidia, ANWB/android } [1] [3]
The plan is to add these interfaces, transition each platform in its own MP, transition the server code to the new system, and then remove host/guest and mg::Platform once the transition is done. At first, each 'server module' will probably contain rendering or (not xor) display, and the server will figure things out from there. We can further regroup the binaries to make more sense once the internal transition is done.
[1] roughly speaking
[2] miracast and/or remote gfx access might be a part of 'offscreen' or a their own platforms. Not quit hashed out very well at the moment.
[3] we have a set of graphics API's that can run on each rendering system. eg, gbm/mesa can soon run with vulkan and various GL's (depending on how we're compiled). Those GL's will soon be able to run in software mode, or with actual drivers. 'RenderingPlatform' refers to the underlying buffering system.
@Alberto I'd expect that RenderingPlatform will need some sort of 'create a stream' function in it to accommodate eglstreams.