diff --git a/src/gallium/drivers/llvmpipe/lp_texture.c b/src/gallium/drivers/llvmpipe/lp_texture.c index 9bad41a9836..6e86a6da06c 100644 --- a/src/gallium/drivers/llvmpipe/lp_texture.c +++ b/src/gallium/drivers/llvmpipe/lp_texture.c @@ -664,7 +664,13 @@ llvmpipe_resource_from_handle(struct pipe_screen *_screen, #ifdef HAVE_LINUX_UDMABUF_H struct llvmpipe_memory_fd_alloc *alloc; uint64_t size; - if(_screen->import_memory_fd(_screen, whandle->handle, (struct pipe_memory_allocation**)&alloc, &size, true)) { + /* Not all winsys implement displaytarget_create_mapped so we need to check + * that is available (not null). + */ + if (winsys->displaytarget_create_mapped && + _screen->import_memory_fd(_screen, whandle->handle, + (struct pipe_memory_allocation**)&alloc, + &size, true)) { data = alloc->data; lpr->dt = winsys->displaytarget_create_mapped(winsys, template->bind, template->format, template->width0, template->height0,