<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Mar 3, 2015 at 10:07 AM, Chad Versace <span dir="ltr"><<a href="mailto:chad.versace@intel.com" target="_blank">chad.versace@intel.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 02/23/2015 06:32 AM, Jonny Lamb wrote:<br>
> Bugzilla: <a href="https://bugs.freedesktop.org/show_bug.cgi?id=67676" target="_blank">https://bugs.freedesktop.org/show_bug.cgi?id=67676</a><br>
> ---<br>
>  include/EGL/eglmesaext.h                |  5 +++++<br>
>  src/egl/drivers/dri2/platform_wayland.c |  9 +++++++--<br>
>  src/egl/drivers/dri2/platform_x11.c     | 22 +++++++++++++---------<br>
>  src/egl/main/eglapi.c                   | 13 +++++++++++++<br>
>  src/egl/main/eglconfig.c                |  3 ++-<br>
>  5 files changed, 40 insertions(+), 12 deletions(-)<br>
><br>
> diff --git a/include/EGL/eglmesaext.h b/include/EGL/eglmesaext.h<br>
> index 5fcc527..3fa7c9c 100644<br>
> --- a/include/EGL/eglmesaext.h<br>
> +++ b/include/EGL/eglmesaext.h<br>
> @@ -170,6 +170,11 @@ typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSREGIONNOK) (EGLDisplay dpy, EG<br>
>  #define EGL_NO_CONFIG_MESA                   ((EGLConfig)0)<br>
>  #endif<br>
><br>
> +#ifndef EGL_MESA_transparent_alpha<br>
> +#define EGL_MESA_transparent_alpha 1<br>
> +#define EGL_TRANSPARENT_ALPHA_MESA           0x31E9<br>
> +#endif<br>
<br>
</span>According to the EGL registry today, 0x31E9 is owned by Hitachi. The first unused enum<br>
in Mesa's reserved range is 0x31D9, so you should use that.<br>
<div><div class="h5"><br>
> +<br>
>  #ifdef __cplusplus<br>
>  }<br>
>  #endif<br>
> diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c<br>
> index 3c34e07..ba071a5 100644<br>
> --- a/src/egl/drivers/dri2/platform_wayland.c<br>
> +++ b/src/egl/drivers/dri2/platform_wayland.c<br>
> @@ -965,6 +965,10 @@ dri2_initialize_wayland(_EGLDriver *drv, _EGLDisplay *disp)<br>
>        { 0xff0000, 0xff00, 0xff, 0xff000000 };<br>
>     static const unsigned int rgb_masks[4] = { 0xff0000, 0xff00, 0xff, 0 };<br>
>     static const unsigned int rgb565_masks[4] = { 0xf800, 0x07e0, 0x001f, 0 };<br>
> +   static const EGLint argb_attrs[] = {<br>
> +       EGL_TRANSPARENT_TYPE, EGL_TRANSPARENT_ALPHA_MESA,<br>
> +       EGL_NONE<br>
> +   };<br>
><br>
>     loader_set_logger(_eglLog);<br>
><br>
> @@ -1044,8 +1048,9 @@ dri2_initialize_wayland(_EGLDriver *drv, _EGLDisplay *disp)<br>
>        config = dri2_dpy->driver_configs[i];<br>
>        if (dri2_dpy->formats & HAS_XRGB8888)<br>
>        dri2_add_config(disp, config, i + 1, types, NULL, rgb_masks);<br>
> -      if (dri2_dpy->formats & HAS_ARGB8888)<br>
> -      dri2_add_config(disp, config, i + 1, types, NULL, argb_masks);<br>
> +      if (dri2_dpy->formats & HAS_ARGB8888) {<br>
> +      dri2_add_config(disp, config, i + 1, types, argb_attrs, argb_masks);<br>
> +      }<br>
>        if (dri2_dpy->formats & HAS_RGB565)<br>
>          dri2_add_config(disp, config, i + 1, types, NULL, rgb565_masks);<br>
>     }<br>
<br>
</div></div>I tested this patch with X11 and Mesa, and it works as advertised. BUT...<br>
<br>
Pre-patch, Wayland applications who requested an EGLConfig with alpha<br>
received one. The EGLSurface had compositor-transparent alpha, which<br>
the application may not have expected. But the alpha configs *were*<br>
available.<br>
<br>
Post-patch, existing Wayland applications that request an EGLConfig with<br>
alpha will no longer receive one, because the existing applications<br>
do not yet know about EGL_TRANSPARENT_ALPHA_MESA.<br>
<br>
I believe a correct solution is to continue create EGLConfigs<br>
with EGL_ALPHA and without EGL_TRANSPARENT_TYPE, as Mesa does today,<br>
but tell the compositor to ignore the alpha channel. The alpha channel<br>
will be used for client-side alpha-blending but not for compositing.<br>
Jason says that should be possible by telling the compositor that<br>
the buffer format is WL_DRM_FORMAT_XRGB8888. And in addition to the existing<br>
EGLConfigs, also create new EGLConfigs with EGL_TRANSPARENT_ALPHA_MESA, as<br>
this patch already does.<br></blockquote><div> <br></div><div>Yes, XRGB8888 would be the correct *technical* way to handle that, but it still makes me wonder... What about Wayland apps that expect to get transparency by simply asking for alpha now?  Won't this break them?  I guess we have to break one class of apps or the other.<br></div><div>--Jason<br></div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
By the way, the X11 portion of the patch looks good to me.<br>
<br>_______________________________________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/mesa-dev" target="_blank">http://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
<br></blockquote></div><br></div></div>