[Mesa-dev] [PATCH 2/2] st/dri: Don't require a dri_format for image creation.

Eric Anholt eric at anholt.net
Wed Jul 18 18:02:51 UTC 2018


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.
---
 src/gallium/state_trackers/dri/dri2.c        |  2 +-
 src/gallium/state_trackers/dri/dri_helpers.c | 12 ------------
 2 files changed, 1 insertion(+), 13 deletions(-)

diff --git a/src/gallium/state_trackers/dri/dri2.c b/src/gallium/state_trackers/dri/dri2.c
index e980698cfb6f..34205853335c 100644
--- a/src/gallium/state_trackers/dri/dri2.c
+++ b/src/gallium/state_trackers/dri/dri2.c
@@ -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;
diff --git a/src/gallium/state_trackers/dri/dri_helpers.c b/src/gallium/state_trackers/dri/dri_helpers.c
index 5d42873a208a..25095bbce890 100644
--- a/src/gallium/state_trackers/dri/dri_helpers.c
+++ b/src/gallium/state_trackers/dri/dri_helpers.c
@@ -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;
-- 
2.18.0



More information about the mesa-dev mailing list