On Fri, Sep 9, 2016 at 4:18 AM, Cemil Azizoglu <cemil.azizo...@canonical.com> wrote:

We quite literally cast MirRenderSurface* to EGLNativeWindowSurface in the current WIP:
http://bazaar.launchpad.net/%7Ecemil-azizoglu/mir/mir-render-surface-v3/view/head:/playground/eglflash_render_surface.c#L112

​Perhaps, I should point out that our EGLNativeWindowType is not (and cannot be) 'MirRenderSurface'. It's void*.​ This is because we (have to) pretend to be other platforms (Android).

Hm, this got me thinking.

*Does* Mir need to pretend to be SurfaceFlinger?

As I understand it, the only relevant constraint is that we need to be able to bring up Unity8 and USC using unmodified Android drivers. - This means we need to use Android libEGL at *some* point in the stack.
- We (as in Ubuntu) control what libEGL.so.1 resolves to.
+ This does *not* have to be Android's libEGL - indeed, it's currently *not* Android's libEGL, it's libhybris' wrapper. - This means we have the opportunity to interpose code between EGL-using clients and Android's EGL.

I looked at the code in platforms/android/client, and there doesn't appear to be any code there that can *only* be implemented inside a platform module. Indeed, it looks like the NBS API was basically designed to allow code linking against libmirclient to do exactly what is done inside the EGLNativeWindow producing bits of the Android platform.

So I think we *could* #define EGLNativeWindowType MirRenderSurface* (and likewise #define EGLNativeDisplayType MirConnection*) without a great deal of effort required. Mostly this would require moving code from platforms/android/client into a new libEGL that implements eglGetDisplay() and eglCreateWindowSurface() and links to the hybris libEGL to satisfy all other EGL symbols.

This would make Mir look like all other EGL platforms. To create an EGLDisplay you'd eglGetDisplay(connection); to create an EGLSurface you'd eglCreateWindowSurface(render_surface, ...).

I'm not sure if this is worth doing, but it does not appear that it would be terribly difficult to do.


--
Mir-devel mailing list
Mir-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/mir-devel

Reply via email to