diff options
author | Emil Velikov <[email protected]> | 2017-06-29 00:12:15 +0100 |
---|---|---|
committer | Emil Velikov <[email protected]> | 2017-07-12 15:43:12 +0100 |
commit | 4d8191fd000071328b97bde5fc31ab1c39238d27 (patch) | |
tree | e08e89baac396f86111f2f7409c2c1ef17594451 /src/egl/main/eglimage.c | |
parent | cd859452e900e588ad8f7c067d2378fad7fc9c93 (diff) |
egl: check for extensions' presence during attr parsing
If the respective extension is not supported, one should return
EGL_BAD_PARAMETER as mentioned in earlier commits.
Signed-off-by: Emil Velikov <[email protected]>
Reviewed-by: Eric Engestrom <[email protected]>
Diffstat (limited to 'src/egl/main/eglimage.c')
-rw-r--r-- | src/egl/main/eglimage.c | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/src/egl/main/eglimage.c b/src/egl/main/eglimage.c index b361a2d0242..a96075fe558 100644 --- a/src/egl/main/eglimage.c +++ b/src/egl/main/eglimage.c @@ -39,16 +39,23 @@ _eglParseKHRImageAttribs(_EGLImageAttribs *attrs, _EGLDisplay *dpy, EGLint attr, EGLint val) { switch (attr) { - /* EGL_KHR_image_base */ case EGL_IMAGE_PRESERVED_KHR: + if (!dpy->Extensions.KHR_image_base) + return EGL_BAD_PARAMETER; + attrs->ImagePreserved = val; break; - /* EGL_KHR_gl_image */ case EGL_GL_TEXTURE_LEVEL_KHR: + if (!dpy->Extensions.KHR_gl_texture_2D_image) + return EGL_BAD_PARAMETER; + attrs->GLTextureLevel = val; break; case EGL_GL_TEXTURE_ZOFFSET_KHR: + if (!dpy->Extensions.KHR_gl_texture_3D_image) + return EGL_BAD_PARAMETER; + attrs->GLTextureZOffset = val; break; default: @@ -62,8 +69,10 @@ static EGLint _eglParseMESADrmImageAttribs(_EGLImageAttribs *attrs, _EGLDisplay *dpy, EGLint attr, EGLint val) { + if (!dpy->Extensions.MESA_drm_image) + return EGL_BAD_PARAMETER; + switch (attr) { - /* EGL_MESA_drm_image */ case EGL_WIDTH: attrs->Width = val; break; @@ -90,8 +99,10 @@ static EGLint _eglParseWLBindWaylandDisplayAttribs(_EGLImageAttribs *attrs, _EGLDisplay *dpy, EGLint attr, EGLint val) { + if (!dpy->Extensions.WL_bind_wayland_display) + return EGL_BAD_PARAMETER; + switch (attr) { - /* EGL_WL_bind_wayland_display */ case EGL_WAYLAND_PLANE_WL: attrs->PlaneWL = val; break; @@ -106,6 +117,9 @@ static EGLint _eglParseEXTImageDmaBufImportAttribs(_EGLImageAttribs *attrs, _EGLDisplay *dpy, EGLint attr, EGLint val) { + if (!dpy->Extensions.EXT_image_dma_buf_import) + return EGL_BAD_PARAMETER; + switch (attr) { case EGL_WIDTH: attrs->Width = val; |