Skip to content

Commit

Permalink
drm: expand replace_fence to support timeline point v2
Browse files Browse the repository at this point in the history
we can place a fence to a timeline point after expanded.
v2: change func parameter order

Signed-off-by: Chunming Zhou <[email protected]>
Reviewed-by: Christian König <[email protected]>
Signed-off-by: Christian König <[email protected]>
Link: https://patchwork.freedesktop.org/patch/246543/
  • Loading branch information
amingriyue authored and easy2rememberchk committed Sep 6, 2018
1 parent 0a6730e commit 9a09a42
Show file tree
Hide file tree
Showing 6 changed files with 13 additions and 11 deletions.
2 changes: 1 addition & 1 deletion drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -1191,7 +1191,7 @@ static void amdgpu_cs_post_dependencies(struct amdgpu_cs_parser *p)
int i;

for (i = 0; i < p->num_post_dep_syncobjs; ++i)
drm_syncobj_replace_fence(p->post_dep_syncobjs[i], p->fence);
drm_syncobj_replace_fence(p->post_dep_syncobjs[i], 0, p->fence);
}

static int amdgpu_cs_submit(struct amdgpu_cs_parser *p,
Expand Down
14 changes: 8 additions & 6 deletions drivers/gpu/drm/drm_syncobj.c
Original file line number Diff line number Diff line change
Expand Up @@ -167,11 +167,13 @@ void drm_syncobj_remove_callback(struct drm_syncobj *syncobj,
/**
* drm_syncobj_replace_fence - replace fence in a sync object.
* @syncobj: Sync object to replace fence in
* @point: timeline point
* @fence: fence to install in sync file.
*
* This replaces the fence on a sync object.
* This replaces the fence on a sync object, or a timeline point fence.
*/
void drm_syncobj_replace_fence(struct drm_syncobj *syncobj,
u64 point,
struct dma_fence *fence)
{
struct dma_fence *old_fence;
Expand Down Expand Up @@ -211,7 +213,7 @@ static int drm_syncobj_assign_null_handle(struct drm_syncobj *syncobj)
&fence->lock, 0, 0);
dma_fence_signal(&fence->base);

drm_syncobj_replace_fence(syncobj, &fence->base);
drm_syncobj_replace_fence(syncobj, 0, &fence->base);

dma_fence_put(&fence->base);

Expand Down Expand Up @@ -262,7 +264,7 @@ void drm_syncobj_free(struct kref *kref)
struct drm_syncobj *syncobj = container_of(kref,
struct drm_syncobj,
refcount);
drm_syncobj_replace_fence(syncobj, NULL);
drm_syncobj_replace_fence(syncobj, 0, NULL);
kfree(syncobj);
}
EXPORT_SYMBOL(drm_syncobj_free);
Expand Down Expand Up @@ -302,7 +304,7 @@ int drm_syncobj_create(struct drm_syncobj **out_syncobj, uint32_t flags,
}

if (fence)
drm_syncobj_replace_fence(syncobj, fence);
drm_syncobj_replace_fence(syncobj, 0, fence);

*out_syncobj = syncobj;
return 0;
Expand Down Expand Up @@ -487,7 +489,7 @@ static int drm_syncobj_import_sync_file_fence(struct drm_file *file_private,
return -ENOENT;
}

drm_syncobj_replace_fence(syncobj, fence);
drm_syncobj_replace_fence(syncobj, 0, fence);
dma_fence_put(fence);
drm_syncobj_put(syncobj);
return 0;
Expand Down Expand Up @@ -969,7 +971,7 @@ drm_syncobj_reset_ioctl(struct drm_device *dev, void *data,
return ret;

for (i = 0; i < args->count_handles; i++)
drm_syncobj_replace_fence(syncobjs[i], NULL);
drm_syncobj_replace_fence(syncobjs[i], 0, NULL);

drm_syncobj_array_free(syncobjs, args->count_handles);

Expand Down
2 changes: 1 addition & 1 deletion drivers/gpu/drm/i915/i915_gem_execbuffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -2166,7 +2166,7 @@ signal_fence_array(struct i915_execbuffer *eb,
if (!(flags & I915_EXEC_FENCE_SIGNAL))
continue;

drm_syncobj_replace_fence(syncobj, fence);
drm_syncobj_replace_fence(syncobj, 0, fence);
}
}

Expand Down
2 changes: 1 addition & 1 deletion drivers/gpu/drm/v3d/v3d_gem.c
Original file line number Diff line number Diff line change
Expand Up @@ -584,7 +584,7 @@ v3d_submit_cl_ioctl(struct drm_device *dev, void *data,
/* Update the return sync object for the */
sync_out = drm_syncobj_find(file_priv, args->out_sync);
if (sync_out) {
drm_syncobj_replace_fence(sync_out,
drm_syncobj_replace_fence(sync_out, 0,
&exec->render.base.s_fence->finished);
drm_syncobj_put(sync_out);
}
Expand Down
2 changes: 1 addition & 1 deletion drivers/gpu/drm/vc4/vc4_gem.c
Original file line number Diff line number Diff line change
Expand Up @@ -681,7 +681,7 @@ vc4_queue_submit(struct drm_device *dev, struct vc4_exec_info *exec,
exec->fence = &fence->base;

if (out_sync)
drm_syncobj_replace_fence(out_sync, exec->fence);
drm_syncobj_replace_fence(out_sync, 0, exec->fence);

vc4_update_bo_seqnos(exec, seqno);

Expand Down
2 changes: 1 addition & 1 deletion include/drm/drm_syncobj.h
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ drm_syncobj_fence_get(struct drm_syncobj *syncobj)

struct drm_syncobj *drm_syncobj_find(struct drm_file *file_private,
u32 handle);
void drm_syncobj_replace_fence(struct drm_syncobj *syncobj,
void drm_syncobj_replace_fence(struct drm_syncobj *syncobj, u64 point,
struct dma_fence *fence);
int drm_syncobj_find_fence(struct drm_file *file_private,
u32 handle, u64 point,
Expand Down

0 comments on commit 9a09a42

Please sign in to comment.