On Thu, Oct 20, 2016 at 01:55:38PM -0200, Gustavo Padovan wrote:
2016-10-20 Ville Syrjälä ville.syrjala@linux.intel.com:
On Thu, Oct 20, 2016 at 12:50:05PM -0200, Gustavo Padovan wrote:
From: Gustavo Padovan gustavo.padovan@collabora.co.uk
Support DRM out-fences by creating a sync_file with a fence for each CRTC that sets the OUT_FENCE_PTR property.
I still maintain the out fence should also be per fb (well, per plane since we can't add it to fbs). Otherwise it's not going to be at all useful if you do fps>vrefresh and don't include the same set of planes in every atomic ioctl, eg. if you only ever include ones that are somehow dirty.
How would the kernel signal these dirty planes then? Right now we signal at the vblank.
So if I think about it in terms of the previous fbs something like this comes to mind:
starting point: plane a, fb 0 plane b, fb 1
ioctl: plane a, fb 2, fence A plane b, fb 3, fence B
ioctl: plane a, fb 4, fence C -> fb 2 can be reused, so fence C should signal immediately?
vblank: -> fb 0,1 can be reused, so fence A,B signal?
It feels a bit wonky since the fence is effectively associated with the previous fb after the previous fb was already submitted to the kernel. One might assume fence A to be the one signalled early, but that would give the impression that fb 0 would be free for reuse when it's not.