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