19226502bf
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
105 lines
3.6 KiB
Diff
105 lines
3.6 KiB
Diff
From f4645265e2dffcbc729a510aed85637b5519d8af Mon Sep 17 00:00:00 2001
|
|
From: Chunming Zhou <david1.zhou@amd.com>
|
|
Date: Thu, 30 Aug 2018 14:48:29 +0800
|
|
Subject: [PATCH 561/725] drm: expand drm_syncobj_find_fence to support
|
|
timeline point v2
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
we can fetch timeline point fence after expanded.
|
|
v2: The parameter fence is the result of the function and should come last.
|
|
|
|
Signed-off-by: Chunming Zhou <david1.zhou@amd.com>
|
|
Reviewed-by: Christian König <christian.koenig@amd.com>
|
|
Signed-off-by: Christian König <christian.koenig@amd.com>
|
|
Link: https://patchwork.freedesktop.org/patch/246541/
|
|
(cherry picked from commit 0a6730ea27b68c7ac4171c29a816c29d26a9637a)
|
|
Signed-off-by: Eric Anholt <eric@anholt.net>
|
|
---
|
|
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 2 +-
|
|
drivers/gpu/drm/drm_syncobj.c | 5 +++--
|
|
drivers/gpu/drm/v3d/v3d_gem.c | 4 ++--
|
|
drivers/gpu/drm/vc4/vc4_gem.c | 2 +-
|
|
include/drm/drm_syncobj.h | 2 +-
|
|
5 files changed, 8 insertions(+), 7 deletions(-)
|
|
|
|
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
|
|
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
|
|
@@ -1105,7 +1105,7 @@ static int amdgpu_syncobj_lookup_and_add
|
|
{
|
|
int r;
|
|
struct dma_fence *fence;
|
|
- r = drm_syncobj_find_fence(p->filp, handle, &fence);
|
|
+ r = drm_syncobj_find_fence(p->filp, handle, 0, &fence);
|
|
if (r)
|
|
return r;
|
|
|
|
--- a/drivers/gpu/drm/drm_syncobj.c
|
|
+++ b/drivers/gpu/drm/drm_syncobj.c
|
|
@@ -235,6 +235,7 @@ static int drm_syncobj_assign_null_handl
|
|
* drm_syncobj_find_fence - lookup and reference the fence in a sync object
|
|
* @file_private: drm file private pointer
|
|
* @handle: sync object handle to lookup.
|
|
+ * @point: timeline point
|
|
* @fence: out parameter for the fence
|
|
*
|
|
* This is just a convenience function that combines drm_syncobj_find() and
|
|
@@ -245,7 +246,7 @@ static int drm_syncobj_assign_null_handl
|
|
* dma_fence_put().
|
|
*/
|
|
int drm_syncobj_find_fence(struct drm_file *file_private,
|
|
- u32 handle,
|
|
+ u32 handle, u64 point,
|
|
struct dma_fence **fence)
|
|
{
|
|
struct drm_syncobj *syncobj = drm_syncobj_find(file_private, handle);
|
|
@@ -516,7 +517,7 @@ static int drm_syncobj_export_sync_file(
|
|
if (fd < 0)
|
|
return fd;
|
|
|
|
- ret = drm_syncobj_find_fence(file_private, handle, &fence);
|
|
+ ret = drm_syncobj_find_fence(file_private, handle, 0, &fence);
|
|
if (ret)
|
|
goto err_put_fd;
|
|
|
|
--- a/drivers/gpu/drm/v3d/v3d_gem.c
|
|
+++ b/drivers/gpu/drm/v3d/v3d_gem.c
|
|
@@ -521,12 +521,12 @@ v3d_submit_cl_ioctl(struct drm_device *d
|
|
kref_init(&exec->refcount);
|
|
|
|
ret = drm_syncobj_find_fence(file_priv, args->in_sync_bcl,
|
|
- &exec->bin.in_fence);
|
|
+ 0, &exec->bin.in_fence);
|
|
if (ret == -EINVAL)
|
|
goto fail;
|
|
|
|
ret = drm_syncobj_find_fence(file_priv, args->in_sync_rcl,
|
|
- &exec->render.in_fence);
|
|
+ 0, &exec->render.in_fence);
|
|
if (ret == -EINVAL)
|
|
goto fail;
|
|
|
|
--- a/drivers/gpu/drm/vc4/vc4_gem.c
|
|
+++ b/drivers/gpu/drm/vc4/vc4_gem.c
|
|
@@ -1173,7 +1173,7 @@ vc4_submit_cl_ioctl(struct drm_device *d
|
|
|
|
if (args->in_sync) {
|
|
ret = drm_syncobj_find_fence(file_priv, args->in_sync,
|
|
- &in_fence);
|
|
+ 0, &in_fence);
|
|
if (ret)
|
|
goto fail;
|
|
|
|
--- a/include/drm/drm_syncobj.h
|
|
+++ b/include/drm/drm_syncobj.h
|
|
@@ -139,7 +139,7 @@ void drm_syncobj_remove_callback(struct
|
|
void drm_syncobj_replace_fence(struct drm_syncobj *syncobj,
|
|
struct dma_fence *fence);
|
|
int drm_syncobj_find_fence(struct drm_file *file_private,
|
|
- u32 handle,
|
|
+ u32 handle, u64 point,
|
|
struct dma_fence **fence);
|
|
void drm_syncobj_free(struct kref *kref);
|
|
int drm_syncobj_create(struct drm_syncobj **out_syncobj, uint32_t flags,
|