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

Reply via email to