On 04/26/2016 11:39 PM, Daniel Vetter wrote:
A (per-CRTC?) array of fences would be more flexible. And even in the cases where you could make a 1-to-1 mapping between planes and fences, it's not that much more work for userspace to assemble those fences into an array anyway.
I'm ok with an array too if that's what you folks prefer (it's meant to be used by you after all). I just don't want just 1 fence for the entire op, forcing userspace to first merge them all together. That seems silly.
One side-effect of that is that we'd also have to rework all the internal bits and move fences around in atomic. Which means change a pile of drivers. Not sure that's worth it, but I'd be ok either way really. -Daniel
It's not a strong preference on my end. The 1:1 plane-to-layer mapping breaks down somewhat on hardware where you need to split large hwcomposer layers across multiple DRM planes.
That said, you can force that case to fit by just dup()ing the fence a bunch of times or arbitrarily picking one of the planes to assign the fence to. Either is kludgey, but I can't argue it's kludgey enough to justify refactoring a bunch of existing driver code.