dri: fromPlanar() can return NULL as a valid result

It was assumed that fromPlanar() could return NULL to mean
that the planar image is the same as the parent DRI image.
That assumption wasn't made everywhere though.

Let's fix things and make sure that all callers understand
a NULL result

Signed-off-by: Louis-Francis Ratté-Boulianne <lfrb@collabora.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Daniel Stone <daniels@collabora.com>
This commit is contained in:
Louis-Francis Ratté-Boulianne 2017-09-28 03:18:33 -04:00 committed by Daniel Stone
parent f0654dfa65
commit a34715ad9c
4 changed files with 10 additions and 8 deletions

View File

@ -1966,7 +1966,8 @@ dri2_create_image_wayland_wl_buffer(_EGLDisplay *disp, _EGLContext *ctx,
}
dri_image = dri2_dpy->image->fromPlanar(buffer->driver_buffer, plane, NULL);
if (dri_image == NULL && plane == 0)
dri_image = dri2_dpy->image->dupImage(buffer->driver_buffer, NULL);
if (dri_image == NULL) {
_eglError(EGL_BAD_PARAMETER, "dri2_create_image_wayland_wl_buffer");
return NULL;

View File

@ -814,13 +814,10 @@ create_wl_buffer(struct dri2_egl_display *dri2_dpy,
int stride, offset;
int fd = -1;
if (i == 0)
p_image = image;
else
p_image = dri2_dpy->image->fromPlanar(image, i, NULL);
p_image = dri2_dpy->image->fromPlanar(image, i, NULL);
if (!p_image) {
zwp_linux_buffer_params_v1_destroy(params);
return NULL;
assert(i == 0);
p_image = image;
}
query = dri2_dpy->image->queryImage(p_image,

View File

@ -849,6 +849,7 @@ gbm_dri_bo_get_offset(struct gbm_bo *_bo, int plane)
dri->image->queryImage(image, __DRI_IMAGE_ATTRIB_OFFSET, &offset);
dri->image->destroyImage(image);
} else {
assert(plane == 0);
dri->image->queryImage(bo->image, __DRI_IMAGE_ATTRIB_OFFSET, &offset);
}

View File

@ -1288,7 +1288,10 @@ loader_dri3_create_image(xcb_connection_t *c,
ret = image->fromPlanar(image_planar, 0, loaderPrivate);
image->destroyImage(image_planar);
if (!ret)
ret = image_planar;
else
image->destroyImage(image_planar);
return ret;
}