On Fri,  3 Apr 2015 07:05:23 +0200
Manuel Bachmann <manuel.bachm...@open.eurogiciel.org> wrote:

> From: Manuel Bachmann <manuel.bachm...@open.eurogiciel.org>
> 
> Some DRI drivers, including VMware vmwgfx, do not support
> calling eglQueryString() with a EGL_NO_DISPLAY parameter.
> Just as we do in gl_renderer_supports(), which returns 0
> but does not fail in this case, do not fail in
> gl_renderer_setup_egl_extensions().
> 
> With some versions of Mesa, EGL client extensions may
> very well be defined without the corresponding platform
> extensions ("EGL_EXT_platform_x11/wayland/gbm"). Do not
> fail in this case, but report lack of information.
> 
> Signed-off-by: Manuel Bachmann <manuel.bachm...@open.eurogiciel.org>
> ---
>  src/gl-renderer.c | 33 ++++++++++++++++++---------------
>  1 file changed, 18 insertions(+), 15 deletions(-)
> 
> diff --git a/src/gl-renderer.c b/src/gl-renderer.c
> index b3b2364..d9b6a66 100644
> --- a/src/gl-renderer.c
> +++ b/src/gl-renderer.c
> @@ -2136,7 +2136,7 @@ gl_renderer_setup_egl_extensions(struct 
> weston_compositor *ec)
>               (const char *) eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS);
>       if (!extensions) {
>               weston_log("Retrieving EGL client extension string failed.\n");
> -             return -1;
> +             return 0;

Hi,

I think this should be two different patches. This hunk is the first
patch.

>       }
>  
>       if (strstr(extensions, "EGL_EXT_platform_base"))
> @@ -2213,23 +2213,26 @@ gl_renderer_supports(struct weston_compositor *ec,
>                              extensions);
>       }
>  
> -     snprintf(s, sizeof s, "EGL_KHR_platform_%s", extension_suffix);
> -     if (strstr(extensions, s))
> -             return 1;
> +     if (strstr(extensions, "EGL_EXT_client_extensions")) {

Wasn't this supposed to be testing for EGL_EXT_platform_base?

Also, if platform_base is not there, just return 0 right away, no need
to add indentation levels to the rest of the code.

> +             snprintf(s, sizeof s, "EGL_KHR_platform_%s", extension_suffix);
> +             if (strstr(extensions, s))
> +                     return 1;
>  
> -     snprintf(s, sizeof s, "EGL_EXT_platform_%s", extension_suffix);
> -     if (strstr(extensions, s))
> -             return 1;
> +             snprintf(s, sizeof s, "EGL_EXT_platform_%s", extension_suffix);
> +             if (strstr(extensions, s))
> +                     return 1;
>  
> -     snprintf(s, sizeof s, "EGL_MESA_platform_%s", extension_suffix);
> -     if (strstr(extensions, s))
> -             return 1;
> +             snprintf(s, sizeof s, "EGL_MESA_platform_%s", extension_suffix);
> +             if (strstr(extensions, s))
> +                     return 1;
>  
> -     /* at this point we definitely have some client extensions but
> -      * haven't found the supplied client extension, so chances are it's
> -      * not supported. */
> -
> -     return -1;
> +             /* at this point we definitely have some client extensions but
> +              * haven't found the supplied client extension, so it may be
> +              * supported or not. */
> +             return 0;
> +     } else {
> +             return -1;

For platform_base test, these conditionals are reversed.

> +     }
>  }
>  
>  static const char *

I think I'll make my own version of this for you, I need to fix some
other damage close by, too. Stay tuned.


Thanks,
pq
_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to