On 2 May 2015 at 11:15, Axel Davy <axel.d...@ens.fr> wrote: > When the server gpu and requested gpu are different: > . They likely don't support the same tiling modes > . They likely do not have fast access to the same locations > > Thus we do: > . render to a tiled buffer we do not share with the server > . Copy the content at every swap to a buffer with no tiling > that we share with the server. > > This is similar to the glx dri3 DRI_PRIME implementation. > > Signed-off-by: Axel Davy <axel.d...@ens.fr> > ---
> --- a/src/egl/drivers/dri2/platform_wayland.c > +++ b/src/egl/drivers/dri2/platform_wayland.c > @@ -632,6 +658,8 @@ dri2_wl_swap_buffers_with_damage(_EGLDriver *drv, > { > struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp); > struct dri2_egl_surface *dri2_surf = dri2_egl_surface(draw); > + struct dri2_egl_context *dri2_ctx; > + _EGLContext *ctx; Nit: Move the variable declarations where they're used. Otherwise static analysis tools flag lovely message(s). > @@ -1084,6 +1123,24 @@ dri2_initialize_wayland(_EGLDriver *drv, _EGLDisplay > *disp) > if (roundtrip(dri2_dpy) < 0 || !dri2_dpy->authenticated) > goto cleanup_fd; > > + dri2_dpy->fd = loader_get_user_preferred_fd(dri2_dpy->fd, > + &dri2_dpy->is_different_gpu); > + if (dri2_dpy->is_different_gpu) { > + free(dri2_dpy->device_name); > + dri2_dpy->device_name = loader_get_device_name_for_fd(dri2_dpy->fd); > + if (!dri2_dpy->device_name) { > + _eglError(EGL_BAD_ALLOC, "wayland-egl: failed to get device name " > + "for requested GPU"); > + goto cleanup_fd; > + } > + } > + Shouldn't we authenticate with the correct gpu or master/render node ? This implementation will auth with GPU1, and then use GPU2 which seems a bit odd. I might be missing something ? > @@ -1127,6 +1184,15 @@ dri2_initialize_wayland(_EGLDriver *drv, _EGLDisplay > *disp) > goto cleanup_screen; > } > > + if (dri2_dpy->is_different_gpu && > + (dri2_dpy->image->base.version < 9 || > + dri2_dpy->image->blitImage == NULL)) { > + _eglLog(_EGL_WARNING, "wayland-egl: Different GPU, but image extension > " > + "version 9 or later not found, or blitImage not " > + "implemented for this driver"); Nit: Alternative message: "Different GPU selected, but the Image extension in the driver is not compatible. Version 9 or later and blitImage() are required." Thanks Emil _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev