[Mesa-dev] [PATCH 1/3] egl/sl: split out swrast probe into separate function

Mathias Fröhlich Mathias.Froehlich at gmx.net
Mon Feb 18 06:16:31 UTC 2019


Emil,

indeed this is easier to read.

For patch #1 and #2 you get 

Reviewed-by: Mathias Fröhlich <Mathias.Froehlich at web.de>

For patch #3, I don't know vgem good enough to judge the big picture.
The change within mesa itself looks technically correct.

best

Mathias


On Tuesday, 5 February 2019 16:31:06 CET Emil Velikov wrote:
> From: Emil Velikov <emil.velikov at collabora.com>
> 
> Make the code a bit easier to read.
> 
> As a bonus point this makes it obvious that we forgot to call
> _eglAddDevice() for the device - do so.
> 
> Signed-off-by: Emil Velikov <emil.velikov at collabora.com>
> ---
>  src/egl/drivers/dri2/platform_surfaceless.c | 46 ++++++++++++---------
>  1 file changed, 27 insertions(+), 19 deletions(-)
> 
> diff --git a/src/egl/drivers/dri2/platform_surfaceless.c b/src/egl/drivers/dri2/platform_surfaceless.c
> index f9809561611..d6e48ba11b2 100644
> --- a/src/egl/drivers/dri2/platform_surfaceless.c
> +++ b/src/egl/drivers/dri2/platform_surfaceless.c
> @@ -322,25 +322,27 @@ surfaceless_probe_device(_EGLDisplay *dpy, bool swrast)
>        dri2_dpy->loader_extensions = NULL;
>     }
>  
> -   /* No DRM device, so attempt to fall back to software path w/o DRM. */
> -   if (swrast) {
> -      _eglLog(_EGL_DEBUG, "Falling back to surfaceless swrast without DRM.");
> -      dri2_dpy->fd = -1;
> -      dri2_dpy->driver_name = strdup("swrast");
> -      if (!dri2_dpy->driver_name) {
> -         return false;
> -      }
> +   return false;
> +}
>  
> -      if (dri2_load_driver_swrast(dpy)) {
> -         dri2_dpy->loader_extensions = swrast_loader_extensions;
> -         return true;
> -      }
> +static bool
> +surfaceless_probe_device_sw(_EGLDisplay *dpy)
> +{
> +   struct dri2_egl_display *dri2_dpy = dpy->DriverData;
>  
> -      free(dri2_dpy->driver_name);
> -      dri2_dpy->driver_name = NULL;
> -   }
> +   dri2_dpy->fd = -1;
> +   dpy->Device = _eglAddDevice(dri2_dpy->fd, true);
> +   assert(dpy->Device);
>  
> -   return false;
> +   dri2_dpy->driver_name = strdup("swrast");
> +   if (!dri2_dpy->driver_name)
> +      return false;
> +
> +   if (!dri2_load_driver_swrast(dpy))
> +      return false;
> +
> +   dri2_dpy->loader_extensions = swrast_loader_extensions;
> +   return true;
>  }
>  
>  EGLBoolean
> @@ -364,9 +366,15 @@ dri2_initialize_surfaceless(_EGLDriver *drv, _EGLDisplay *disp)
>                   "No hardware driver found, falling back to software rendering");
>     }
>  
> -   if (!driver_loaded && !surfaceless_probe_device(disp, true)) {
> -      err = "DRI2: failed to load driver";
> -      goto cleanup;
> +   if (!driver_loaded)
> +      driver_loaded = surfaceless_probe_device(disp, true);
> +
> +   if (!driver_loaded) {
> +      _eglLog(_EGL_DEBUG, "Falling back to surfaceless swrast without DRM.");
> +      if (!surfaceless_probe_device_sw(disp)) {
> +         err = "DRI2: failed to load driver";
> +         goto cleanup;
> +      }
>     }
>  
>     if (!dri2_create_screen(disp)) {
> 






More information about the mesa-dev mailing list