On Wednesday 6 July 2011, Jerome Glisse j.glisse@gmail.com wrote:
On Wed, Jul 6, 2011 at 12:29 PM, Simon Farnsworth
In particular, I'm a bit hazy about what the fence in pageflip is doing - I assume it's there to synchronize drawing and scanout, so that I don't flip to a buffer that's still being drawn on by the GPU.
In my view all the fence stuff become useless as when the irq handler call we know we can unpin previous scanout (the crtc is scanning from new buffer). Otherwise it looks good (beside the optimization of computing how much time we should sleep instead of while msleep but this can be left as a latter patch).
So, I don't know why this makes a difference - but removing the fence completely causes the second pageflip to stall forever. Changing it for a radeon_bo_wait on the new frontbuffer still results in infinite stalls.
I've noticed a couple of minor issues in the patch anyway (a redundant lock/unlock pair left in, and I should be using usleep_range not msleep, given that I want to wait for less than a millisecond normally), so I'll respin anyway.