[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