On Thu, Sep 8, 2016 at 8:13 PM, Christopher James Halse Rogers < ch...@cooperteam.net> wrote:
> 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. > Right. EGL windowing support can be built on top of NBS, and so can multimedia, vulkan, nested passthrough, software rendering. > 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