_EGLDevice *dev;
struct dri2_egl_display *dri2_dpy;
tpl_display_t *tpl_display = NULL;
+ tpl_backend_type_t tpl_backend = TPL_BACKEND_UNKNOWN;
const char *err;
int tbm_bufmgr_fd = -1;
char *tbm_bufmgr_device_name = NULL;
dri2_dpy->own_device = 1;
}
- /* TPL_BACKEND_UNKNOWN type make checking runtime type check */
- tpl_display = tpl_display_create(TPL_BACKEND_UNKNOWN, disp->PlatformDisplay);
+ /* Can find the backend type of libtpl-egl through PlatformDisplay */
+ tpl_backend = tpl_display_get_backend_type(disp->PlatformDisplay);
+ /* If tpl_backend is a wayland client, thread backend should be used
+ * to use dri2_surf->out_fence_fd. */
+ if (tpl_backend == TPL_BACKEND_WAYLAND)
+ tpl_backend = TPL_BACKEND_WAYLAND_THREAD;
+
+ tpl_display = tpl_display_create(tpl_backend, disp->PlatformDisplay);
if (!tpl_display) {
err = "DRI2: failed to create tpl_display";
goto cleanup_display;