Am Freitag, den 16.06.2017, 18:14 +0100 schrieb Daniel Stone: > Remove surface-specific code from create_wl_buffer, so it's now just a > generic translation from DRIimage to wl_buffer. > > Signed-off-by: Daniel Stone <dani...@collabora.com>
Reviewed-by: Lucas Stach <l.st...@pengutronix.de> > --- > src/egl/drivers/dri2/platform_wayland.c | 66 > +++++++++++++++++---------------- > 1 file changed, 34 insertions(+), 32 deletions(-) > > diff --git a/src/egl/drivers/dri2/platform_wayland.c > b/src/egl/drivers/dri2/platform_wayland.c > index c1cbb11f26..7a85cb1073 100644 > --- a/src/egl/drivers/dri2/platform_wayland.c > +++ b/src/egl/drivers/dri2/platform_wayland.c > @@ -642,51 +642,40 @@ static const struct wl_callback_listener > throttle_listener = { > .done = wayland_throttle_callback > }; > > -static void > -create_wl_buffer(struct dri2_egl_surface *dri2_surf) > +static struct wl_buffer * > +create_wl_buffer(struct dri2_egl_display *dri2_dpy, > + struct dri2_egl_surface *dri2_surf, > + __DRIimage *image) > { > - struct dri2_egl_display *dri2_dpy = > - dri2_egl_display(dri2_surf->base.Resource.Display); > - __DRIimage *image; > + struct wl_buffer *ret; > int fd, stride, name; > > - if (dri2_surf->current->wl_buffer != NULL) > - return; > - > - if (dri2_dpy->is_different_gpu) { > - image = dri2_surf->current->linear_copy; > - } else { > - image = dri2_surf->current->dri_image; > - } > if (dri2_dpy->capabilities & WL_DRM_CAPABILITY_PRIME) { > dri2_dpy->image->queryImage(image, __DRI_IMAGE_ATTRIB_FD, &fd); > dri2_dpy->image->queryImage(image, __DRI_IMAGE_ATTRIB_STRIDE, &stride); > > - dri2_surf->current->wl_buffer = > - wl_drm_create_prime_buffer(dri2_surf->wl_drm_wrapper, > - fd, > - dri2_surf->base.Width, > - dri2_surf->base.Height, > - dri2_surf->format, > - 0, stride, > - 0, 0, > - 0, 0); > + ret = wl_drm_create_prime_buffer(dri2_surf->wl_drm_wrapper, > + fd, > + dri2_surf->base.Width, > + dri2_surf->base.Height, > + dri2_surf->format, > + 0, stride, > + 0, 0, > + 0, 0); > close(fd); > } else { > dri2_dpy->image->queryImage(image, __DRI_IMAGE_ATTRIB_NAME, &name); > dri2_dpy->image->queryImage(image, __DRI_IMAGE_ATTRIB_STRIDE, &stride); > > - dri2_surf->current->wl_buffer = > - wl_drm_create_buffer(dri2_surf->wl_drm_wrapper, > - name, > - dri2_surf->base.Width, > - dri2_surf->base.Height, > - stride, > - dri2_surf->format); > + ret = wl_drm_create_buffer(dri2_surf->wl_drm_wrapper, > + name, > + dri2_surf->base.Width, > + dri2_surf->base.Height, > + stride, > + dri2_surf->format); > } > > - wl_buffer_add_listener(dri2_surf->current->wl_buffer, > - &wl_buffer_listener, dri2_surf); > + return ret; > } > > static EGLBoolean > @@ -751,7 +740,20 @@ dri2_wl_swap_buffers_with_damage(_EGLDriver *drv, > dri2_surf->current = dri2_surf->back; > dri2_surf->back = NULL; > > - create_wl_buffer(dri2_surf); > + if (!dri2_surf->current->wl_buffer) { > + __DRIimage *image; > + > + if (dri2_dpy->is_different_gpu) > + image = dri2_surf->current->linear_copy; > + else > + image = dri2_surf->current->dri_image; > + > + dri2_surf->current->wl_buffer = > + create_wl_buffer(dri2_dpy, dri2_surf, image); > + > + wl_buffer_add_listener(dri2_surf->current->wl_buffer, > + &wl_buffer_listener, dri2_surf); > + } > > wl_surface_attach(dri2_surf->wl_surface_wrapper, > dri2_surf->current->wl_buffer, _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev