virgl/drm: insert correct handles into the table. (v3)
authorDave Airlie <airlied@redhat.com>
Tue, 9 Apr 2019 05:00:48 +0000 (15:00 +1000)
committerDave Airlie <airlied@redhat.com>
Wed, 24 Apr 2019 20:05:43 +0000 (06:05 +1000)
This inserts a handle for the flink name and a handle the correct
gem handle for the bo.

v2: fix handles/names confusion (Lepton Wu)
v3: set flink name correctly (Lepton Wu)

Reviewed-by: Chia-I Wu <olvaffe@gmail.com>
src/gallium/winsys/virgl/drm/virgl_drm_winsys.c

index 4c8947bf679c730677da9e069982821153e34bd2..c35d58b05523fe7188ec92f270cedae46a03e372 100644 (file)
@@ -438,6 +438,7 @@ virgl_drm_winsys_resource_create_handle(struct virgl_winsys *qws,
          goto done;
       }
       res->bo_handle = open_arg.handle;
+      res->flink_name = whandle->handle;
    }
 
    memset(&info_arg, 0, sizeof(info_arg));
@@ -457,7 +458,9 @@ virgl_drm_winsys_resource_create_handle(struct virgl_winsys *qws,
    pipe_reference_init(&res->reference, 1);
    res->num_cs_references = 0;
 
-   util_hash_table_set(qdws->bo_handles, (void *)(uintptr_t)handle, res);
+   if (res->flink_name)
+      util_hash_table_set(qdws->bo_names, (void *)(uintptr_t)res->flink_name, res);
+   util_hash_table_set(qdws->bo_handles, (void *)(uintptr_t)res->bo_handle, res);
 
 done:
    mtx_unlock(&qdws->bo_handles_mutex);