Commit a34715ad authored by Louis-Francis Ratté-Boulianne's avatar Louis-Francis Ratté-Boulianne Committed by Daniel Stone

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's avatarLouis-Francis Ratté-Boulianne <lfrb@collabora.com>
Reviewed-by: Jason Ekstrand's avatarJason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Daniel Stone's avatarDaniel Stone <daniels@collabora.com>
parent f0654dfa
......@@ -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;
......
......@@ -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,
......
......@@ -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);
}
......
......@@ -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;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment