[Mesa-dev] [PATCH 0/2] Use explicit sync for non-dri BOs

Andres Rodriguez andresx7 at gmail.com
Fri Oct 20 22:42:11 UTC 2017


Currently, implicit synchronization of jobs that access a shared bo is always
enabled.  Currently this behaviour is required for DRI use cases, where the
protocol doesn't provide a mechanism to share a synchronization primitive
alongside the surface.

This patch selectively disables implicit synchronization for all non-dri BOs.

Following is an example of some steamvr 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 with 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
Implicit sync is only required for dri BOs, where we don't have
an explicit sync protocol available.

This benefits non-dri compositors that use explicit synchronization,
e.g. the steamvr compositor.

Andres Rodriguez (2):
  radv: factor out radv_alloc_memory
  radv: disable implicit sync for radv allocated bos v2

 src/amd/vulkan/radv_device.c                  | 22 +++++++++++++++++-----
 src/amd/vulkan/radv_private.h                 | 11 +++++++++++
 src/amd/vulkan/radv_radeon_winsys.h           |  1 +
 src/amd/vulkan/radv_wsi.c                     |  3 ++-
 src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c |  2 ++
 5 files changed, 33 insertions(+), 6 deletions(-)

-- 
2.9.3



More information about the mesa-dev mailing list