[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