[Mesa-dev] [PATCH mesa] egl: add missing error-checking to eglReleaseTexImage()

Tapani Pälli tapani.palli at intel.com
Wed Oct 26 11:56:05 UTC 2016


Verified that these are indeed the cases listed in EGL spec "3.6.2 
Releasing a Surface from an OpenGL ES Texture" ..

Reviewed-by: Tapani Pälli <tapani.palli at intel.com>

On 10/01/2016 02:23 AM, Eric Engestrom wrote:
> Signed-off-by: Eric Engestrom <eric at engestrom.ch>
> ---
>  src/egl/main/eglsurface.c | 43 ++++++++++++++++++++++++++++++++++++++++---
>  1 file changed, 40 insertions(+), 3 deletions(-)
>
> diff --git a/src/egl/main/eglsurface.c b/src/egl/main/eglsurface.c
> index 231a5f0..2762503 100644
> --- a/src/egl/main/eglsurface.c
> +++ b/src/egl/main/eglsurface.c
> @@ -521,14 +521,51 @@ _eglBindTexImage(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surface,
>  }
>
>  EGLBoolean
> -_eglReleaseTexImage(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *surf,
> +_eglReleaseTexImage(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surf,
>                      EGLint buffer)
>  {
> -   /* TODO: do basic error checking and return success/fail.
> +   /* Just do basic error checking and return success/fail.
>      * Drivers must implement the real stuff.
>      */
>
> +   EGLint texture_type = EGL_PBUFFER_BIT;
> +
> +   if (surf == EGL_NO_SURFACE)
> +   {
> +      _eglError(EGL_BAD_SURFACE, "eglReleaseTexImage");
> +      return EGL_FALSE;
> +   }
> +
> +   if (!surf->BoundToTexture)
> +   {
> +      /* Not an error, simply nothing to do */
> +      return EGL_TRUE;
> +   }
> +
> +   if (surf->TextureFormat == EGL_NO_TEXTURE)
> +   {
> +      _eglError(EGL_BAD_MATCH, "eglReleaseTexImage");
> +      return EGL_FALSE;
> +   }
> +
> +   if (buffer != EGL_BACK_BUFFER)
> +   {
> +      _eglError(EGL_BAD_PARAMETER, "eglReleaseTexImage");
> +      return EGL_FALSE;
> +   }
> +
> +   if (dpy->Extensions.NOK_texture_from_pixmap)
> +      texture_type |= EGL_PIXMAP_BIT;
> +
> +   if (!(surf->Type & texture_type))
> +   {
> +      _eglError(EGL_BAD_SURFACE, "eglReleaseTexImage");
> +      return EGL_FALSE;
> +   }
> +
> +   surf->BoundToTexture = EGL_FALSE;
> +
> -  return EGL_TRUE;
> +   return EGL_TRUE;
>  }
>
>
>


More information about the mesa-dev mailing list