On Mon, Aug 17, 2009 at 4:36 PM, Jesse Barnes<jbar...@virtuousgeek.org> wrote: > On Mon, 17 Aug 2009 22:22:34 +0200 > Thomas Hellström <tho...@shipmail.org> wrote: > >> Kristian Høgsberg wrote: >> > This patch adds a vblank synced pageflip ioctl for to the >> > modesetting family of ioctls. The ioctl takes a crtc and an fb and >> > schedules a pageflip to the new fb at the next coming vertical >> > blank event. This feature lets userspace implement tear-free >> > updating of the screen contents with hw-guaranteed low latency page >> > flipping. >> > >> > The ioctl is asynchronous in that it returns immediately and then >> > later notifies the client by making an event available for reading >> > on the drm fd. This lets applications add the drm fd to their main >> > loop and handle other tasks while waiting for the flip to happen. >> > The event includes the time of the flip, the frame counter and a 64 >> > bit opaque token provided by user space in the ioctl. >> > >> > Based on work and suggestions from >> > Jesse Barnes <jbar...@virtuousgeek.org>, >> > Jakob Bornecrantz <wallbra...@gmail.com>, >> > Chris Wilson <ch...@chris-wilson.co.uk> >> > >> > Signed-off-by: Kristian Høgsberg <k...@redhat.com> >> > Signed-off-by: Jesse Barnes <jbar...@virtuousgeek.org> >> > --- >> > >> > Ok, another version of this patch. This one has fixes to work with >> > radeon kms plus a missing list head init that would cause an oops >> > in the case where we schedule a flip before the previous one has >> > been queued. >> > >> > I'm now ready to propose this patch for the 2.6.32 merge window. >> > >> > >> Hi! >> First a general question: There is some hardware (for example >> Unichromes and Chrome9) that can schedule >> page-flips in the command stream after optional vblank barriers. For >> this kind of hardware the pageflip would be a matter of scheduling >> the flip and fence the old and new buffers. No need for delayed >> unpins and explicit user-space notifications, although the workqueue >> could be handy to avoid command processing stalls in the vblank >> barriers. How would such a scheme fit into the framework below? > > If you fence the flip, doesn't that mean you only unpin after it's > completed? The initial version of this patch used a command stream > flip, but I still had to worry about pinning... > > If you don't need the userspace notifications we could probably factor > that out; do you see any issues with the flip ioctl itself? If not, we > can change things as needed if/when more drivers support it...
We need the async notiifcation for AIGLX. We can't just block the X server on the flip finishing, we need to be able to suspend and resume the AIGLX client. >> A couple of years ago, any attempt to return anything else than 0 >> from drm poll resulted in an X server error. >> http://freedesktop.org/bugzilla/show_bug.cgi?id=1505. The fix >> mentioned in the bug was actually to return 0 from drm poll, and a >> comment about this is still present in drm.git. The above breaks drm >> for old X servers and all drivers, which I think is against drm >> policy? > > Ouch... I remember Kristian had some issues with this part, but I don't > think this was one of them. The trouble I ran into here is that the WakeupHandler call chain is called even if select returns with an error, specifically ERESTART when the input SIGIO fires. When that happens the select read fd_set hasn't been changed, which means the drm fd looks readable. cheers, Kristian ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july -- _______________________________________________ Dri-devel mailing list Dri-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/dri-devel