[PATCH] Add flag to disable implicit synchronization

Andres Rodriguez andresx7 at gmail.com
Mon Sep 18 23:16:49 UTC 2017


Implicit synchronization of jobs that access a shared bo is always enabled.
Currently this behaviour is required for DRI2/3 and PRIME use cases, where the
protocol doesn't provide a mechanism to shared an synchronization primitive
alongside the surface.

This patch series aims to provide a mechanism to allow userspace to disable
implicit synchronization when it is not required.

Following is an example of some async compute work getting delayed for 2.12ms
due to implicit synchronization:
https://drive.google.com/open?id=0B2ygSoZuj3IMRzFCYzBxaDFpaFk

Following is the same workload but AMDGPU_GEM_CREATE_EXPLICIT_SYNC enabled:
https://drive.google.com/open?id=0B2ygSoZuj3IMb0pTZEJRQmNwVHM

In the second case we can see that hellovr_vulkan and the steamvr compositor
can access the same surface simultaneously, without the gpu scheduler
introducing any implicit waits.

Gpuvis traces for these two scenarios can be found here:
https://drive.google.com/open?id=0B2ygSoZuj3IMRklfM1llbTJqTnc

The libdrm and radv patches are included for reference.

Andres Rodriguez (1):
  drm/amdgpu: introduce AMDGPU_GEM_CREATE_EXPLICIT_SYNC

 drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c     |  4 +++-
 drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c    |  4 +++-
 drivers/gpu/drm/amd/amdgpu/amdgpu_object.h |  8 ++++++++
 drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c   |  8 ++++++--
 drivers/gpu/drm/amd/amdgpu/amdgpu_sync.h   |  3 ++-
 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c    |  6 ++++--
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c     | 10 ++++++----
 include/uapi/drm/amdgpu_drm.h              |  2 ++
 8 files changed, 34 insertions(+), 11 deletions(-)

-- 
2.9.3



More information about the amd-gfx mailing list