• Dave Airlie's avatar
    amdgpu: use drm sync objects for shared semaphores (v6) · 660e8558
    Dave Airlie authored
    This creates a new command submission chunk for amdgpu
    to add in and out sync objects around the submission.
    
    Sync objects are managed via the drm syncobj ioctls.
    
    The command submission interface is enhanced with two new
    chunks, one for syncobj pre submission dependencies,
    and one for post submission sync obj signalling,
    and just takes a list of handles for each.
    
    This is based on work originally done by David Zhou at AMD,
    with input from Christian Konig on what things should look like.
    
    In theory VkFences could be backed with sync objects and
    just get passed into the cs as syncobj handles as well.
    
    NOTE: this interface addition needs a version bump to expose
    it to userspace.
    
    TODO: update to dep_sync when rebasing onto amdgpu master.
    (with this - r-b from Christian)
    
    v1.1: keep file reference on import.
    v2: move to using syncobjs
    v2.1: change some APIs to just use p pointer.
    v3: make more robust against CS failures, we now add the
    wait sems but only remove them once the CS job has been
    submitted.
    v4: rewrite names of API and base on new syncobj code.
    v5: move post deps earlier, rename some apis
    v6: lookup post deps earlier, and just replace fences
    in post deps stage (Christian)
    Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
    Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
    Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    660e8558
amdgpu_cs.c 35.8 KB