egl/wayland: use the image_driver alongside the image_loader

Analogous to earlier commits - image_driver and image_loader are meant
to be used hand in hand.

v2: Rebase

Cc: Derek Foreman <derekf@osg.samsung.com>
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
This commit is contained in:
Emil Velikov
2017-05-11 22:49:04 +01:00
committed by Emil Velikov
parent 429d56693d
commit 5cb16e07ab
+14 -6
View File
@@ -191,7 +191,9 @@ dri2_wl_create_window_surface(_EGLDriver *drv, _EGLDisplay *disp,
if (dri2_dpy->flush)
dri2_surf->wl_win->resize_callback = resize_callback;
if (dri2_dpy->dri2)
if (dri2_dpy->image_driver)
createNewDrawable = dri2_dpy->image_driver->createNewDrawable;
else if (dri2_dpy->dri2)
createNewDrawable = dri2_dpy->dri2->createNewDrawable;
else
createNewDrawable = dri2_dpy->swrast->createNewDrawable;
@@ -1214,15 +1216,21 @@ dri2_initialize_wayland_drm(_EGLDriver *drv, _EGLDisplay *disp)
goto cleanup;
}
if (!dri2_load_driver(disp))
goto cleanup;
/* render nodes cannot use Gem names, and thus do not support
* the __DRI_DRI2_LOADER extension */
if (!dri2_dpy->is_render_node)
if (!dri2_dpy->is_render_node) {
dri2_dpy->loader_extensions = dri2_loader_extensions;
else
if (!dri2_load_driver(disp)) {
_eglError(EGL_BAD_ALLOC, "DRI2: failed to load driver");
goto cleanup;
}
} else {
dri2_dpy->loader_extensions = image_loader_extensions;
if (!dri2_load_driver_dri3(disp)) {
_eglError(EGL_BAD_ALLOC, "DRI3: failed to load driver");
goto cleanup;
}
}
if (!dri2_create_screen(disp))
goto cleanup;