summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2017-11-17 16:49:03 -0800
committerJason Ekstrand <[email protected]>2017-11-17 17:16:44 -0800
commit344252a27f8d875572bbe65641a825af8e73845d (patch)
tree22b743d116ac9b8ed747ef557f9f97df0b31b01e
parent1866f7aee596d203c34439c7b603db22788b0190 (diff)
i965/bufmgr: Add a helper to mark a BO as external
Reviewed-by: Kenneth Graunke <[email protected]> Cc: [email protected]
-rw-r--r--src/mesa/drivers/dri/i965/brw_bufmgr.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_bufmgr.c b/src/mesa/drivers/dri/i965/brw_bufmgr.c
index 17036b53bcd..60b0dad2be7 100644
--- a/src/mesa/drivers/dri/i965/brw_bufmgr.c
+++ b/src/mesa/drivers/dri/i965/brw_bufmgr.c
@@ -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);