On Fri, Aug 9, 2013 at 10:44 AM, Mike Lothian <m...@fireburn.co.uk> wrote: > Hi > > I seem to have a missing symbol wayland_drm_buffer_get in libgbm.so.1 > > I'm pretty sure its related
No, it's a different issue: https://bugs.freedesktop.org/show_bug.cgi?id=67962 Kristian > Regards > > Mike > > On 18 Jul 2013 13:15, "Ander Conselvan de Oliveira" > <ander.conselvan.de.olive...@intel.com> wrote: >> >> Since Wayland 1.2, struct wl_buffer and a few functions are deprecated. >> >> References to wl_buffer are replaced with wl_resource and some getter >> functions and calls to deprecated functions are replaced with the proper >> new API. The latter changes are related to resource versioning. >> >> Signed-off-by: Ander Conselvan de Oliveira >> <ander.conselvan.de.olive...@intel.com> >> --- >> docs/specs/WL_bind_wayland_display.spec | 8 ++- >> include/EGL/eglmesaext.h | 6 +- >> src/egl/drivers/dri2/egl_dri2.c | 28 +++++---- >> src/egl/drivers/dri2/egl_dri2.h | 1 - >> src/egl/main/eglapi.c | 2 +- >> src/egl/main/eglapi.h | 2 +- >> src/egl/wayland/wayland-drm/wayland-drm.c | 66 >> +++++++++++++--------- >> src/egl/wayland/wayland-drm/wayland-drm.h | 13 +++-- >> .../state_trackers/egl/common/egl_g3d_api.c | 2 +- >> .../state_trackers/egl/common/egl_g3d_image.c | 4 +- >> .../egl/common/native_wayland_bufmgr.h | 6 +- >> .../egl/common/native_wayland_drm_bufmgr.c | 25 +++++--- >> src/gbm/backends/dri/gbm_dri.c | 5 +- >> 13 files changed, 99 insertions(+), 69 deletions(-) >> >> diff --git a/docs/specs/WL_bind_wayland_display.spec >> b/docs/specs/WL_bind_wayland_display.spec >> index 02bd6ea..8f0083c 100644 >> --- a/docs/specs/WL_bind_wayland_display.spec >> +++ b/docs/specs/WL_bind_wayland_display.spec >> @@ -17,7 +17,7 @@ Status >> >> Version >> >> - Version 1, March 1, 2011 >> + Version 5, July 16, 2013 >> >> Number >> >> @@ -57,7 +57,7 @@ New Procedures and Functions >> struct wl_display *display); >> >> EGLBoolean eglQueryWaylandBufferWL(EGLDisplay dpy, >> - struct wl_buffer *buffer, >> + struct wl_resource *buffer, >> EGLint attribute, EGLint *value); >> >> New Tokens >> @@ -173,3 +173,7 @@ Revision History >> Use EGL_TEXTURE_FORMAT, EGL_TEXTURE_RGB, and EGL_TEXTURE_RGBA, >> and just define the new YUV texture formats. Add support for >> EGL_WIDTH and EGL_HEIGHT in the query attributes (Kristian >> Høgsberg) >> + Version 5, July 16, 2013 >> + Change eglQueryWaylandBufferWL to take a resource pointer to the >> + buffer instead of a pointer to a struct wl_buffer, as the latter >> has >> + been deprecated. (Ander Conselvan de Oliveira) >> diff --git a/include/EGL/eglmesaext.h b/include/EGL/eglmesaext.h >> index d476d18..e0eae28 100644 >> --- a/include/EGL/eglmesaext.h >> +++ b/include/EGL/eglmesaext.h >> @@ -120,15 +120,15 @@ typedef EGLDisplay (EGLAPIENTRYP >> PFNEGLGETDRMDISPLAYMESA) (int fd); >> #define EGL_TEXTURE_Y_XUXV_WL 0x31D9 >> >> struct wl_display; >> -struct wl_buffer; >> +struct wl_resource; >> #ifdef EGL_EGLEXT_PROTOTYPES >> EGLAPI EGLBoolean EGLAPIENTRY eglBindWaylandDisplayWL(EGLDisplay dpy, >> struct wl_display *display); >> EGLAPI EGLBoolean EGLAPIENTRY eglUnbindWaylandDisplayWL(EGLDisplay dpy, >> struct wl_display *display); >> -EGLAPI EGLBoolean EGLAPIENTRY eglQueryWaylandBufferWL(EGLDisplay dpy, >> struct wl_buffer *buffer, EGLint attribute, EGLint *value); >> +EGLAPI EGLBoolean EGLAPIENTRY eglQueryWaylandBufferWL(EGLDisplay dpy, >> struct wl_resource *buffer, EGLint attribute, EGLint *value); >> #endif >> typedef EGLBoolean (EGLAPIENTRYP PFNEGLBINDWAYLANDDISPLAYWL) (EGLDisplay >> dpy, struct wl_display *display); >> typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNBINDWAYLANDDISPLAYWL) >> (EGLDisplay dpy, struct wl_display *display); >> -typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYWAYLANDBUFFERWL) (EGLDisplay >> dpy, struct wl_buffer *buffer, EGLint attribute, EGLint *value); >> +typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYWAYLANDBUFFERWL) (EGLDisplay >> dpy, struct wl_resource *buffer, EGLint attribute, EGLint *value); >> >> #endif >> >> diff --git a/src/egl/drivers/dri2/egl_dri2.c >> b/src/egl/drivers/dri2/egl_dri2.c >> index 1bce314..44fd8a8 100644 >> --- a/src/egl/drivers/dri2/egl_dri2.c >> +++ b/src/egl/drivers/dri2/egl_dri2.c >> @@ -41,6 +41,10 @@ >> >> #include "egl_dri2.h" >> >> +#ifdef HAVE_WAYLAND_PLATFORM >> +#include "wayland-drm.h" >> +#endif >> + >> const __DRIuseInvalidateExtension use_invalidate = { >> { __DRI_USE_INVALIDATE, 1 } >> }; >> @@ -1195,7 +1199,7 @@ dri2_create_image_wayland_wl_buffer(_EGLDisplay >> *disp, _EGLContext *ctx, >> EGLClientBuffer _buffer, >> const EGLint *attr_list) >> { >> - struct wl_drm_buffer *buffer = (struct wl_drm_buffer *) _buffer; >> + struct wl_drm_buffer *buffer; >> struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp); >> const struct wl_drm_components_descriptor *f; >> __DRIimage *dri_image; >> @@ -1203,7 +1207,8 @@ dri2_create_image_wayland_wl_buffer(_EGLDisplay >> *disp, _EGLContext *ctx, >> EGLint err; >> int32_t plane; >> >> - if (!wayland_buffer_is_drm(&buffer->buffer)) >> + buffer = wayland_drm_buffer_get((struct wl_resource *) _buffer); >> + if (!buffer) >> return NULL; >> >> err = _eglParseImageAttribList(&attrs, disp, attr_list); >> @@ -1508,8 +1513,8 @@ dri2_wl_reference_buffer(void *user_data, uint32_t >> name, int fd, >> >> if (fd == -1) >> img = dri2_dpy->image->createImageFromNames(dri2_dpy->dri_screen, >> - buffer->buffer.width, >> - buffer->buffer.height, >> + buffer->width, >> + buffer->height, >> buffer->format, >> (int*)&name, 1, >> buffer->stride, >> @@ -1517,8 +1522,8 @@ dri2_wl_reference_buffer(void *user_data, uint32_t >> name, int fd, >> NULL); >> else >> img = dri2_dpy->image->createImageFromFds(dri2_dpy->dri_screen, >> - buffer->buffer.width, >> - buffer->buffer.height, >> + buffer->width, >> + buffer->height, >> buffer->format, >> &fd, 1, >> buffer->stride, >> @@ -1607,13 +1612,14 @@ dri2_unbind_wayland_display_wl(_EGLDriver *drv, >> _EGLDisplay *disp, >> >> static EGLBoolean >> dri2_query_wayland_buffer_wl(_EGLDriver *drv, _EGLDisplay *disp, >> - struct wl_buffer *_buffer, >> + struct wl_resource *buffer_resource, >> EGLint attribute, EGLint *value) >> { >> - struct wl_drm_buffer *buffer = (struct wl_drm_buffer *) _buffer; >> + struct wl_drm_buffer *buffer; >> const struct wl_drm_components_descriptor *format; >> >> - if (!wayland_buffer_is_drm(&buffer->buffer)) >> + buffer = wayland_drm_buffer_get(buffer_resource); >> + if (!buffer) >> return EGL_FALSE; >> >> format = buffer->driver_format; >> @@ -1622,10 +1628,10 @@ dri2_query_wayland_buffer_wl(_EGLDriver *drv, >> _EGLDisplay *disp, >> *value = format->components; >> return EGL_TRUE; >> case EGL_WIDTH: >> - *value = buffer->buffer.width; >> + *value = buffer->width; >> return EGL_TRUE; >> case EGL_HEIGHT: >> - *value = buffer->buffer.height; >> + *value = buffer->height; >> return EGL_TRUE; >> } >> >> diff --git a/src/egl/drivers/dri2/egl_dri2.h >> b/src/egl/drivers/dri2/egl_dri2.h >> index 6dfdf94..fba5f81 100644 >> --- a/src/egl/drivers/dri2/egl_dri2.h >> +++ b/src/egl/drivers/dri2/egl_dri2.h >> @@ -37,7 +37,6 @@ >> >> #ifdef HAVE_WAYLAND_PLATFORM >> #include <wayland-client.h> >> -#include "wayland-drm.h" >> #include "wayland-egl-priv.h" >> #endif >> >> diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c >> index 4a9831b..a788295 100644 >> --- a/src/egl/main/eglapi.c >> +++ b/src/egl/main/eglapi.c >> @@ -1571,7 +1571,7 @@ eglUnbindWaylandDisplayWL(EGLDisplay dpy, struct >> wl_display *display) >> } >> >> EGLBoolean EGLAPIENTRY >> -eglQueryWaylandBufferWL(EGLDisplay dpy,struct wl_buffer *buffer, >> +eglQueryWaylandBufferWL(EGLDisplay dpy, struct wl_resource *buffer, >> EGLint attribute, EGLint *value) >> { >> _EGLDisplay *disp = _eglLockDisplay(dpy); >> diff --git a/src/egl/main/eglapi.h b/src/egl/main/eglapi.h >> index ee382d0..4a4f976 100644 >> --- a/src/egl/main/eglapi.h >> +++ b/src/egl/main/eglapi.h >> @@ -123,7 +123,7 @@ typedef EGLBoolean (*ExportDRMImageMESA_t)(_EGLDriver >> *drv, _EGLDisplay *disp, _ >> struct wl_display; >> typedef EGLBoolean (*BindWaylandDisplayWL_t)(_EGLDriver *drv, _EGLDisplay >> *disp, struct wl_display *display); >> typedef EGLBoolean (*UnbindWaylandDisplayWL_t)(_EGLDriver *drv, >> _EGLDisplay *disp, struct wl_display *display); >> -typedef EGLBoolean (*QueryWaylandBufferWL_t)(_EGLDriver *drv, _EGLDisplay >> *displ, struct wl_buffer *buffer, EGLint attribute, EGLint *value); >> +typedef EGLBoolean (*QueryWaylandBufferWL_t)(_EGLDriver *drv, _EGLDisplay >> *displ, struct wl_resource *buffer, EGLint attribute, EGLint *value); >> #endif >> >> typedef EGLBoolean (*PostSubBufferNV_t)(_EGLDriver *drv, _EGLDisplay >> *disp, _EGLSurface *surface, EGLint x, EGLint y, EGLint width, EGLint >> height); >> diff --git a/src/egl/wayland/wayland-drm/wayland-drm.c >> b/src/egl/wayland/wayland-drm/wayland-drm.c >> index 7e2073a..d317c5e 100644 >> --- a/src/egl/wayland/wayland-drm/wayland-drm.c >> +++ b/src/egl/wayland/wayland-drm/wayland-drm.c >> @@ -37,6 +37,8 @@ >> #include "wayland-drm.h" >> #include "wayland-drm-server-protocol.h" >> >> +#define MIN(x,y) (((x)<(y))?(x):(y)) >> + >> struct wl_drm { >> struct wl_display *display; >> >> @@ -86,8 +88,8 @@ create_buffer(struct wl_client *client, struct >> wl_resource *resource, >> } >> >> buffer->drm = drm; >> - buffer->buffer.width = width; >> - buffer->buffer.height = height; >> + buffer->width = width; >> + buffer->height = height; >> buffer->format = format; >> buffer->offset[0] = offset0; >> buffer->stride[0] = stride0; >> @@ -104,16 +106,17 @@ create_buffer(struct wl_client *client, struct >> wl_resource *resource, >> return; >> } >> >> - buffer->buffer.resource.object.id = id; >> - buffer->buffer.resource.object.interface = &wl_buffer_interface; >> - buffer->buffer.resource.object.implementation = >> - (void (**)(void)) &drm_buffer_interface; >> - buffer->buffer.resource.data = buffer; >> - >> - buffer->buffer.resource.destroy = destroy_buffer; >> - buffer->buffer.resource.client = resource->client; >> + buffer->resource = >> + wl_resource_create(client, &wl_buffer_interface, 1, id); >> + if (!buffer->resource) { >> + wl_resource_post_no_memory(resource); >> + free(buffer); >> + return; >> + } >> >> - wl_client_add_resource(resource->client, >> &buffer->buffer.resource); >> + wl_resource_set_implementation(buffer->resource, >> + (void (**)(void)) >> &drm_buffer_interface, >> + buffer, destroy_buffer); >> } >> >> static void >> @@ -208,8 +211,15 @@ bind_drm(struct wl_client *client, void *data, >> uint32_t version, uint32_t id) >> struct wl_resource *resource; >> uint32_t capabilities; >> >> - resource = wl_client_add_object(client, &wl_drm_interface, >> - &drm_interface, id, data); >> + resource = wl_resource_create(client, &wl_drm_interface, >> + MIN(version, 2), id); >> + if (!resource) { >> + wl_client_post_no_memory(client); >> + return; >> + } >> + >> + wl_resource_set_implementation(resource, &drm_interface, data, >> NULL); >> + >> wl_resource_post_event(resource, WL_DRM_DEVICE, drm->device_name); >> wl_resource_post_event(resource, WL_DRM_FORMAT, >> WL_DRM_FORMAT_ARGB8888); >> @@ -232,6 +242,19 @@ bind_drm(struct wl_client *client, void *data, >> uint32_t version, uint32_t id) >> wl_resource_post_event(resource, WL_DRM_CAPABILITIES, >> capabilities); >> } >> >> +struct wl_drm_buffer * >> +wayland_drm_buffer_get(struct wl_resource *resource) >> +{ >> + if (resource == NULL) >> + return NULL; >> + >> + if (wl_resource_instance_of(resource, &wl_buffer_interface, >> + &drm_buffer_interface)) >> + return wl_resource_get_user_data(resource); >> + else >> + return NULL; >> +} >> + >> struct wl_drm * >> wayland_drm_init(struct wl_display *display, char *device_name, >> struct wayland_drm_callbacks *callbacks, void >> *user_data, >> @@ -247,7 +270,7 @@ wayland_drm_init(struct wl_display *display, char >> *device_name, >> drm->user_data = user_data; >> drm->flags = flags; >> >> - wl_display_add_global(display, &wl_drm_interface, drm, bind_drm); >> + wl_global_create(display, &wl_drm_interface, 2, drm, bind_drm); >> >> return drm; >> } >> @@ -262,25 +285,14 @@ wayland_drm_uninit(struct wl_drm *drm) >> free(drm); >> } >> >> -int >> -wayland_buffer_is_drm(struct wl_buffer *buffer) >> -{ >> - return buffer->resource.object.implementation == >> - (void (**)(void)) &drm_buffer_interface; >> -} >> - >> uint32_t >> -wayland_drm_buffer_get_format(struct wl_buffer *buffer_base) >> +wayland_drm_buffer_get_format(struct wl_drm_buffer *buffer) >> { >> - struct wl_drm_buffer *buffer = (struct wl_drm_buffer *) >> buffer_base; >> - >> return buffer->format; >> } >> >> void * >> -wayland_drm_buffer_get_buffer(struct wl_buffer *buffer_base) >> +wayland_drm_buffer_get_buffer(struct wl_drm_buffer *buffer) >> { >> - struct wl_drm_buffer *buffer = (struct wl_drm_buffer *) >> buffer_base; >> - >> return buffer->driver_buffer; >> } >> diff --git a/src/egl/wayland/wayland-drm/wayland-drm.h >> b/src/egl/wayland/wayland-drm/wayland-drm.h >> index 335073a..ca04882 100644 >> --- a/src/egl/wayland/wayland-drm/wayland-drm.h >> +++ b/src/egl/wayland/wayland-drm/wayland-drm.h >> @@ -70,8 +70,9 @@ enum wl_drm_format { >> struct wl_drm; >> >> struct wl_drm_buffer { >> - struct wl_buffer buffer; >> + struct wl_resource *resource; >> struct wl_drm *drm; >> + int32_t width, height; >> uint32_t format; >> const void *driver_format; >> int32_t offset[3]; >> @@ -90,6 +91,9 @@ struct wayland_drm_callbacks { >> >> enum { WAYLAND_DRM_PRIME = 0x01 }; >> >> +struct wl_drm_buffer * >> +wayland_drm_buffer_get(struct wl_resource *resource); >> + >> struct wl_drm * >> wayland_drm_init(struct wl_display *display, char *device_name, >> struct wayland_drm_callbacks *callbacks, void *user_data, >> @@ -98,13 +102,10 @@ wayland_drm_init(struct wl_display *display, char >> *device_name, >> void >> wayland_drm_uninit(struct wl_drm *drm); >> >> -int >> -wayland_buffer_is_drm(struct wl_buffer *buffer); >> - >> uint32_t >> -wayland_drm_buffer_get_format(struct wl_buffer *buffer_base); >> +wayland_drm_buffer_get_format(struct wl_drm_buffer *buffer); >> >> void * >> -wayland_drm_buffer_get_buffer(struct wl_buffer *buffer); >> +wayland_drm_buffer_get_buffer(struct wl_drm_buffer *buffer); >> >> #endif >> diff --git a/src/gallium/state_trackers/egl/common/egl_g3d_api.c >> b/src/gallium/state_trackers/egl/common/egl_g3d_api.c >> index 2e5424e..3ee0d67 100644 >> --- a/src/gallium/state_trackers/egl/common/egl_g3d_api.c >> +++ b/src/gallium/state_trackers/egl/common/egl_g3d_api.c >> @@ -874,7 +874,7 @@ egl_g3d_unbind_wayland_display_wl(_EGLDriver *drv, >> _EGLDisplay *dpy, >> >> static EGLBoolean >> egl_g3d_query_wayland_buffer_wl(_EGLDriver *drv, _EGLDisplay *dpy, >> - struct wl_buffer *buffer, >> + struct wl_resource *buffer, >> EGLint attribute, EGLint *value) >> { >> struct egl_g3d_display *gdpy = egl_g3d_display(dpy); >> diff --git a/src/gallium/state_trackers/egl/common/egl_g3d_image.c >> b/src/gallium/state_trackers/egl/common/egl_g3d_image.c >> index aa1980b..c459dc3 100644 >> --- a/src/gallium/state_trackers/egl/common/egl_g3d_image.c >> +++ b/src/gallium/state_trackers/egl/common/egl_g3d_image.c >> @@ -183,7 +183,7 @@ egl_g3d_reference_drm_buffer(_EGLDisplay *dpy, EGLint >> name, >> #ifdef EGL_WL_bind_wayland_display >> >> static struct pipe_resource * >> -egl_g3d_reference_wl_buffer(_EGLDisplay *dpy, struct wl_buffer *buffer, >> +egl_g3d_reference_wl_buffer(_EGLDisplay *dpy, struct wl_resource *buffer, >> _EGLImage *img, const EGLint *attribs) >> { >> struct egl_g3d_display *gdpy = egl_g3d_display(dpy); >> @@ -253,7 +253,7 @@ egl_g3d_create_image(_EGLDriver *drv, _EGLDisplay >> *dpy, _EGLContext *ctx, >> #ifdef EGL_WL_bind_wayland_display >> case EGL_WAYLAND_BUFFER_WL: >> ptex = egl_g3d_reference_wl_buffer(dpy, >> - (struct wl_buffer *) buffer, &gimg->base, attribs); >> + (struct wl_resource *) buffer, &gimg->base, attribs); >> break; >> #endif >> #ifdef EGL_ANDROID_image_native_buffer >> diff --git a/src/gallium/state_trackers/egl/common/native_wayland_bufmgr.h >> b/src/gallium/state_trackers/egl/common/native_wayland_bufmgr.h >> index dd27828..eb324bf 100644 >> --- a/src/gallium/state_trackers/egl/common/native_wayland_bufmgr.h >> +++ b/src/gallium/state_trackers/egl/common/native_wayland_bufmgr.h >> @@ -27,7 +27,7 @@ >> >> struct native_display; >> struct wl_display; >> -struct wl_buffer; >> +struct wl_resource; >> struct pipe_resource; >> >> struct native_display_wayland_bufmgr { >> @@ -38,11 +38,11 @@ struct native_display_wayland_bufmgr { >> struct wl_display *wl_dpy); >> >> struct pipe_resource *(*buffer_get_resource)(struct native_display >> *ndpy, >> - struct wl_buffer >> *buffer); >> + struct wl_resource >> *buffer); >> >> >> boolean (*query_buffer)(struct native_display *ndpy, >> - struct wl_buffer *buffer, >> + struct wl_resource *buffer, >> int attribute, int *value); >> }; >> >> diff --git >> a/src/gallium/state_trackers/egl/common/native_wayland_drm_bufmgr.c >> b/src/gallium/state_trackers/egl/common/native_wayland_drm_bufmgr.c >> index 1603a3a..9b69cb9 100644 >> --- a/src/gallium/state_trackers/egl/common/native_wayland_drm_bufmgr.c >> +++ b/src/gallium/state_trackers/egl/common/native_wayland_drm_bufmgr.c >> @@ -70,8 +70,8 @@ wayland_drm_bufmgr_reference_buffer(void *user_data, >> uint32_t name, int fd, >> templ.target = PIPE_TEXTURE_2D; >> templ.format = pf; >> templ.bind = PIPE_BIND_RENDER_TARGET | PIPE_BIND_SAMPLER_VIEW; >> - templ.width0 = buffer->buffer.width; >> - templ.height0 = buffer->buffer.height; >> + templ.width0 = buffer->width; >> + templ.height0 = buffer->height; >> templ.depth0 = 1; >> templ.array_size = 1; >> >> @@ -137,22 +137,29 @@ wayland_drm_bufmgr_unbind_display(struct >> native_display *ndpy, >> >> static struct pipe_resource * >> wayland_drm_bufmgr_wl_buffer_get_resource(struct native_display *ndpy, >> - struct wl_buffer *buffer) >> + struct wl_resource >> *buffer_resource) >> { >> + struct wl_drm_buffer *buffer = >> wayland_drm_buffer_get(buffer_resource); >> + >> + if (!buffer) >> + return NULL; >> + >> return wayland_drm_buffer_get_buffer(buffer); >> } >> >> static EGLBoolean >> wayland_drm_bufmgr_query_buffer(struct native_display *ndpy, >> - struct wl_buffer *_buffer, >> + struct wl_resource *buffer_resource, >> EGLint attribute, EGLint *value) >> { >> - struct wl_drm_buffer *buffer = (struct wl_drm_buffer *) _buffer; >> - struct pipe_resource *resource = buffer->driver_buffer; >> + struct wl_drm_buffer *buffer = >> wayland_drm_buffer_get(buffer_resource); >> + struct pipe_resource *resource; >> >> - if (!wayland_buffer_is_drm(&buffer->buffer)) >> + if (!buffer) >> return EGL_FALSE; >> >> + resource = buffer->driver_buffer; >> + >> switch (attribute) { >> case EGL_TEXTURE_FORMAT: >> switch (resource->format) { >> @@ -166,10 +173,10 @@ wayland_drm_bufmgr_query_buffer(struct >> native_display *ndpy, >> return EGL_FALSE; >> } >> case EGL_WIDTH: >> - *value = buffer->buffer.width; >> + *value = buffer->width; >> return EGL_TRUE; >> case EGL_HEIGHT: >> - *value = buffer->buffer.height; >> + *value = buffer->height; >> return EGL_TRUE; >> default: >> return EGL_FALSE; >> diff --git a/src/gbm/backends/dri/gbm_dri.c >> b/src/gbm/backends/dri/gbm_dri.c >> index a3a0530..f7da79c 100644 >> --- a/src/gbm/backends/dri/gbm_dri.c >> +++ b/src/gbm/backends/dri/gbm_dri.c >> @@ -374,9 +374,10 @@ gbm_dri_bo_import(struct gbm_device *gbm, >> #if HAVE_WAYLAND_PLATFORM >> case GBM_BO_IMPORT_WL_BUFFER: >> { >> - struct wl_drm_buffer *wb = (struct wl_drm_buffer *) buffer; >> + struct wl_drm_buffer *wb; >> >> - if (!wayland_buffer_is_drm(buffer)) >> + wb = wayland_drm_buffer_get((struct wl_resource *) buffer); >> + if (!wb) >> return NULL; >> >> image = wb->driver_buffer; >> -- >> 1.8.1.2 >> >> _______________________________________________ >> mesa-dev mailing list >> mesa-dev@lists.freedesktop.org >> http://lists.freedesktop.org/mailman/listinfo/mesa-dev > > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev