Hi everyone,

In previous discussion it surfaced that different drivers use the shared and 
explicit fences in the dma_resv object with different meanings.

This is problematic when we share buffers between those drivers and 
requirements for implicit and explicit synchronization leaded to quite a number 
of workarounds related to this.

So I started an effort to get all drivers back to a common understanding of 
what the fences in the dma_resv object mean and be able to use the object for 
different kind of workloads independent of the classic DRM command submission 
interface.

The result is this patch set which modifies the dma_resv API to get away from a 
single explicit fence and multiple shared fences, towards a notation where we 
have explicit categories for writers, readers and others.

To do this I came up with a new container called dma_resv_fences which can 
store both a single fence as well as multiple fences in a dma_fence_array.

This turned out to actually be even be quite a bit simpler, since we don't need 
any complicated dance between RCU and sequence count protected updates any more.

Instead we can just grab a reference to the dma_fence_array under RCU and so 
keep the current state of synchronization alive until we are done with it.

This results in both a small performance improvement since we don't need so 
many barriers any more, as well as fewer lines of code in the actual 
implementation.

Please review and/or comment,
Christian. 


_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to