egl: check for extensions' presence during attr parsing
authorEmil Velikov <emil.velikov@collabora.com>
Wed, 28 Jun 2017 23:12:15 +0000 (00:12 +0100)
committerEmil Velikov <emil.l.velikov@gmail.com>
Wed, 12 Jul 2017 14:43:12 +0000 (15:43 +0100)
If the respective extension is not supported, one should return
EGL_BAD_PARAMETER as mentioned in earlier commits.

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
src/egl/main/eglimage.c

index b361a2d02428ee0f76a6b6c9d96ca6355bd25bc9..a96075fe558daaede54325b32f435e5b9bfc60a2 100644 (file)
@@ -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;