diff options
-rw-r--r-- | src/egl/drivers/dri2/egl_dri2.c | 3 | ||||
-rw-r--r-- | src/egl/drivers/dri2/platform_wayland.c | 9 | ||||
-rw-r--r-- | src/gbm/backends/dri/gbm_dri.c | 1 | ||||
-rw-r--r-- | src/loader/loader_dri3_helper.c | 5 |
4 files changed, 10 insertions, 8 deletions
diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index e9b556ec5f7..17b646e7ede 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -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; diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c index f91baded877..5b8bec901b0 100644 --- a/src/egl/drivers/dri2/platform_wayland.c +++ b/src/egl/drivers/dri2/platform_wayland.c @@ -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, diff --git a/src/gbm/backends/dri/gbm_dri.c b/src/gbm/backends/dri/gbm_dri.c index 0d088bd62b6..ed64ad61bf0 100644 --- a/src/gbm/backends/dri/gbm_dri.c +++ b/src/gbm/backends/dri/gbm_dri.c @@ -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); } diff --git a/src/loader/loader_dri3_helper.c b/src/loader/loader_dri3_helper.c index fbda3d635c7..2912bb6749b 100644 --- a/src/loader/loader_dri3_helper.c +++ b/src/loader/loader_dri3_helper.c @@ -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; } |