[Mesa-dev] [PATCH] egl/dri2: Do not need to check return value from mtx_lock

Emil Velikov emil.l.velikov at gmail.com
Mon Aug 15 13:45:04 UTC 2016


Hi Kim,

On 28 July 2016 at 22:38, Dongwon Kim <dongwon.kim at intel.com> wrote:
> This removes unnecessary error checks on return result of mtx_lock
> calls as in all other places in MESA source since there is no chance
> that mtx_lock returns any of error codes in current implementation.
>
> Signed-off-by: Dongwon Kim <dongwon.kim at intel.com>
> ---
>  src/egl/drivers/dri2/egl_dri2.c | 21 ++++++---------------
>  1 file changed, 6 insertions(+), 15 deletions(-)
>
> diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
> index ac2be86..26b80d4 100644
> --- a/src/egl/drivers/dri2/egl_dri2.c
> +++ b/src/egl/drivers/dri2/egl_dri2.c
> @@ -2578,10 +2578,7 @@ dri2_client_wait_sync(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSync *sync,
>
>        /* if timeout is EGL_FOREVER_KHR, it should wait without any timeout.*/
>        if (timeout == EGL_FOREVER_KHR) {
> -         if (mtx_lock(&dri2_sync->mutex)) {
> -            ret = EGL_FALSE;
> -            goto cleanup;
> -         }
> +         mtx_lock(&dri2_sync->mutex);
>
>           ret = cnd_wait(&dri2_sync->cond, &dri2_sync->mutex);
>
> @@ -2609,10 +2606,7 @@ dri2_client_wait_sync(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSync *sync,
>                 expire.nsec -= 1000000000L;
>              }
>
> -            if (mtx_lock(&dri2_sync->mutex)) {
> -               ret = EGL_FALSE;
> -               goto cleanup;
> -            }
> +            mtx_lock(&dri2_sync->mutex);
>
>              ret = cnd_timedwait(&dri2_sync->cond, &dri2_sync->mutex, &expire);
>
> @@ -2632,15 +2626,12 @@ dri2_client_wait_sync(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSync *sync,
>        break;
>    }
>
> - cleanup:
> -   dri2_egl_unref_sync(dri2_dpy, dri2_sync);
> +  dri2_egl_unref_sync(dri2_dpy, dri2_sync);
>
> -   if (ret == EGL_FALSE) {
> -      _eglError(EGL_BAD_ACCESS, "eglClientWaitSyncKHR");
> -      return EGL_FALSE;
> -   }
> +  if (ret == EGL_FALSE)
> +     _eglError(EGL_BAD_ACCESS, "eglClientWaitSyncKHR");
>
> -   return ret;
> +  return ret;
Patch looks great and although looking more into it - the original
implementation is calling _eglError multiple times.
Initially as the errors are detected and secondly in the cleanup path.
Can we drop either one please ?

Aside: all the users of cnd_wait (its gallium wrapper or the core
pthread function) don't bother checking the return value. Worth
keeping/dropping the check ?

Regardless of which one(s) get nuked (or the cnd_wait comment) the patch is
Reviewed-by: Emil Velikov <emil.velikov at collabora.com>

Thanks
Emil


More information about the mesa-dev mailing list