From b98bbdf4906882f056478d7b99c1959081f46490 Mon Sep 17 00:00:00 2001 From: Bas Nieuwenhuizen Date: Mon, 18 Dec 2017 20:33:07 +0100 Subject: [PATCH] radv/amdgpu: wrap sync fd import/export. Reviewed-by: Dave Airlie --- src/amd/vulkan/radv_radeon_winsys.h | 5 +++++ src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c | 21 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/src/amd/vulkan/radv_radeon_winsys.h b/src/amd/vulkan/radv_radeon_winsys.h index e851c3edf86..45f58f063a4 100644 --- a/src/amd/vulkan/radv_radeon_winsys.h +++ b/src/amd/vulkan/radv_radeon_winsys.h @@ -281,6 +281,11 @@ struct radeon_winsys { int (*export_syncobj)(struct radeon_winsys *ws, uint32_t syncobj, int *fd); int (*import_syncobj)(struct radeon_winsys *ws, int fd, uint32_t *syncobj); + int (*export_syncobj_to_sync_file)(struct radeon_winsys *ws, uint32_t syncobj, int *fd); + + /* Note that this, unlike the normal import, uses an existing syncobj. */ + int (*import_syncobj_from_sync_file)(struct radeon_winsys *ws, uint32_t syncobj, int fd); + }; static inline void radeon_emit(struct radeon_winsys_cs *cs, uint32_t value) diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c index e4d444b8524..4578a9b5484 100644 --- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c +++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c @@ -1336,6 +1336,25 @@ static int radv_amdgpu_import_syncobj(struct radeon_winsys *_ws, return amdgpu_cs_import_syncobj(ws->dev, fd, syncobj); } + +static int radv_amdgpu_export_syncobj_to_sync_file(struct radeon_winsys *_ws, + uint32_t syncobj, + int *fd) +{ + struct radv_amdgpu_winsys *ws = radv_amdgpu_winsys(_ws); + + return amdgpu_cs_syncobj_export_sync_file(ws->dev, syncobj, fd); +} + +static int radv_amdgpu_import_syncobj_from_sync_file(struct radeon_winsys *_ws, + uint32_t syncobj, + int fd) +{ + struct radv_amdgpu_winsys *ws = radv_amdgpu_winsys(_ws); + + return amdgpu_cs_syncobj_import_sync_file(ws->dev, syncobj, fd); +} + void radv_amdgpu_cs_init_functions(struct radv_amdgpu_winsys *ws) { ws->base.ctx_create = radv_amdgpu_ctx_create; @@ -1361,5 +1380,7 @@ void radv_amdgpu_cs_init_functions(struct radv_amdgpu_winsys *ws) ws->base.wait_syncobj = radv_amdgpu_wait_syncobj; ws->base.export_syncobj = radv_amdgpu_export_syncobj; ws->base.import_syncobj = radv_amdgpu_import_syncobj; + ws->base.export_syncobj_to_sync_file = radv_amdgpu_export_syncobj_to_sync_file; + ws->base.import_syncobj_from_sync_file = radv_amdgpu_import_syncobj_from_sync_file; ws->base.fence_wait = radv_amdgpu_fence_wait; } -- 2.30.2