st/dri: Don't require a dri_format for image creation.
authorEric Anholt <eric@anholt.net>
Mon, 16 Jul 2018 22:22:57 +0000 (15:22 -0700)
committerEric Anholt <eric@anholt.net>
Fri, 20 Jul 2018 18:26:12 +0000 (11:26 -0700)
Nothing in EGL_KHR_gl_image.txt seems to let us deny creation based on
formats, and doing so causes many failures in
dEQP-EGL.functional.image.api.*

The NONE value we were protecting from only gets looked at in the
__DRI_IMAGE_ATTRIB_FORMAT and __DRI_IMAGE_ATTRIB_FOURCC queries, which are
used from wayland and gbm (which throw an error cleanly on unknown format)
and DMABUF export.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/gallium/state_trackers/dri/dri2.c
src/gallium/state_trackers/dri/dri_helpers.c

index e980698cfb6f1c4eaf038f6a30cfe81ad9c78f53..34205853335ca2e430105ea6f3cd20d2462add4f 100644 (file)
@@ -1318,7 +1318,7 @@ dri2_query_image(__DRIimage *image, int attrib, int *value)
       return GL_TRUE;
    case __DRI_IMAGE_ATTRIB_FOURCC:
       *value = convert_to_fourcc(image->dri_format);
-      return GL_TRUE;
+      return *value != -1;
    case __DRI_IMAGE_ATTRIB_NUM_PLANES:
       *value = 1;
       return GL_TRUE;
index 5d42873a208a810b05ffab76af1f154ffe3a63a7..25095bbce890a9ddf50e76cb475fba293556cfb4 100644 (file)
@@ -296,12 +296,6 @@ dri2_create_image_from_renderbuffer2(__DRIcontext *context,
    img->dri_format = driGLFormatToImageFormat(rb->Format);
    img->loader_private = loaderPrivate;
 
-   if (img->dri_format == __DRI_IMAGE_FORMAT_NONE) {
-      *error = __DRI_IMAGE_ERROR_BAD_PARAMETER;
-      free(img);
-      return NULL;
-   }
-
    pipe_resource_reference(&img->texture, tex);
 
    *error = __DRI_IMAGE_ERROR_SUCCESS;
@@ -379,12 +373,6 @@ dri2_create_from_texture(__DRIcontext *context, int target, unsigned texture,
 
    img->loader_private = loaderPrivate;
 
-   if (img->dri_format == __DRI_IMAGE_FORMAT_NONE) {
-      *error = __DRI_IMAGE_ERROR_BAD_PARAMETER;
-      free(img);
-      return NULL;
-   }
-
    pipe_resource_reference(&img->texture, tex);
 
    *error = __DRI_IMAGE_ERROR_SUCCESS;