i965/bufmgr: Add a helper to mark a BO as external

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Cc: mesa-stable@lists.freedesktop.org
(cherry picked from commit 344252a27f)
This commit is contained in:
Jason Ekstrand 2017-11-17 16:49:03 -08:00 committed by Emil Velikov
parent d1e6cf4639
commit 0904becf94

View file

@ -1177,8 +1177,8 @@ err:
return NULL;
}
int
brw_bo_gem_export_to_prime(struct brw_bo *bo, int *prime_fd)
static void
brw_bo_make_external(struct brw_bo *bo)
{
struct brw_bufmgr *bufmgr = bo->bufmgr;
@ -1190,6 +1190,14 @@ brw_bo_gem_export_to_prime(struct brw_bo *bo, int *prime_fd)
}
mtx_unlock(&bufmgr->lock);
}
}
int
brw_bo_gem_export_to_prime(struct brw_bo *bo, int *prime_fd)
{
struct brw_bufmgr *bufmgr = bo->bufmgr;
brw_bo_make_external(bo);
if (drmPrimeHandleToFD(bufmgr->fd, bo->gem_handle,
DRM_CLOEXEC, prime_fd) != 0)
@ -1213,11 +1221,8 @@ brw_bo_flink(struct brw_bo *bo, uint32_t *name)
if (drmIoctl(bufmgr->fd, DRM_IOCTL_GEM_FLINK, &flink))
return -errno;
brw_bo_make_external(bo);
mtx_lock(&bufmgr->lock);
if (!bo->external) {
_mesa_hash_table_insert(bufmgr->handle_table, &bo->gem_handle, bo);
bo->external = true;
}
if (!bo->global_name) {
bo->global_name = flink.name;
_mesa_hash_table_insert(bufmgr->name_table, &bo->global_name, bo);