[Mesa-dev] [PATCH] egl: Introduce eglGetDisplayMESA()
Chia-I Wu
olvaffe at gmail.com
Sat May 29 00:37:38 PDT 2010
2010/5/28 Kristian Høgsberg <krh at bitplanet.net>:
> 2010/5/28 Chia-I Wu <olvaffe at gmail.com>:
> ...
>> The right fix is to define a sensible "xorg/drm" platform which has different
>> EGLNative{Display,Window,Pixmap}Type than the tentative ones as defined in
>> eglplatform.h. The new platform should be able to fulfill all your
>> requirements.
>
> I think the "right fix" would be to define different, strongly typed
> display and surface constructors for different platforms. For X11 you
> would have eglGetDisplayX11() that takes an X Display and
> eglCreateSurfaceFromXPixmap() etc. For win32 you would have
> eglGetDisplayHDC() and we could add eglGetDisplayDRM() for the DRM fd
> case. That way you get type safety and if you link to the wrong
> libEGL you don't get a crash or a runtime error, your application
> fails to link. Quite an improvement.
>
> But it doesn't matter what we think the "right fix" may be, we need to
> work with what's there, including the already in-use "tentative" X11
> platform.
>
>> The dilemma is that, the new platform is not compatible with the tentative x11
>> platform (as called in eglplatform.h), unless we play the magic trick in your
>> previous path series.
>>
>> As such, it leaves 4 equally good options
>>
>> 1) acknowledge the tentative x11 platform is official though ill-designed, and
>> add EGL_MESA_get_display to support non-xlib toolkits
>> 2) replace the tentative x11 platform by a better but incompatible new
>> platform
>> 3) extend the tentative x11 platform to support non-xlib toolkits "magically"
>> (see attachment)
>> 4) Sorry, xcb and drm are only supported by manually setting EGL_DRIVER
>>
>> I favor 1) slightly more than others, but I would like to hear more feedbacks.
>
> I'm definitely in favor of 1) too. The way I see it 2) isn't feasible
> as we break the existing and in-uise X11 API, 3) is just a different
> take on the (too) magic display I posted earlier and 4) doesn't solve
> the problem.
>> As for the patch itself, I think eglGetDisplayMESA should be given another
>> name, such as eglGetTypedDisplayMESA. Normally, eglFooBarEXT is expected to be
>> equivalent to eglFooBar. And it might be a good idea to separate the extension
>> into
>>
>> * EGL_MESA_get_typed_display to define eglGetTypedDisplayMESA and
>> EGL_NATIVE_DISPLAY_TYPE_MESA.
>> * EGL_MESA_get_drm_display to define EGL_DRM_DISPLAY_TYPE_MESA.
>>
>> The naming of the tokens is also slightly changed to fit the conventions of
>> other tokens.
> Yeah, good suggestions. I'm a little reluctant to splitting the
> extension; I can see why, but from a spec consumer point of view, the
> splitting of the EGLImage specs didn't help me figure out what was
> going on. Keeping it in one spec gives a full picture of what's going
> on. And there's an important difference in that you don't need to
> implement all the different display types to implement the extension.
> There's no way to check for the presence of the extensions or
> follow-on extensions anyway, all you can do is try to
> eglGetProcAddress to get the eglGetTypedScreenMESA() entry point.
Ah, right. I forgot one cannot test the extensions without a display.
Then I might favor 1) less.
How do you think about such scheme on a common desktop system
- libEGL.so: the tentative x11 platform
- libEGL-mesa.so: the MESA (bad name, but basically drm+xlib+xcb) platform
- libEGL-directfb.so: the imaginary DirectFB platform
- ... (more)
Multiple EGL libraries may be parallelly installed. It is sort of
like the scheme of GTK+. Applications then find the correct library
using the respective .pc file. This is also more close to the "right
fix" you mentioned above.
libEGL-mesa is then free to define its own platform, or use
EGL_MESA_get_typed_display if you prefer.
Or if no mixed use of the drm/xlib/xcb is expected in the near
future, split libEGL-mesa.so into libEGL-drm.so and libEGL-xcb.so.
Using eglGetDisplay(drm_fd) or eglGetDisplay(xcb_conn) is still more
direct IMHO.
>> If there is no immediate need for xcb support, I would prefer omitting it for
>> now. If there is, then also a new extension for it.
> Well, it's a chicken and egg-problem with xcb. Nobody will use it if
> it's not supported and you're suggesting we don't support it unless
> somebody uses it. But I'm not too attached to it, I can drop it if it
> bugs you.
>
> Kristian
>
--
olv at LunarG.com
More information about the mesa-dev
mailing list