From: Michel D. <mi...@da...> - 2009-02-17 17:43:57
|
On Tue, 2009-02-17 at 09:27 -0800, Jesse Barnes wrote: > On Tuesday, February 17, 2009 9:04 am Michel Dänzer wrote: > > On Mon, 2009-02-16 at 10:42 -0800, Jesse Barnes wrote: > > > On Sunday, February 15, 2009 11:33 pm Michel Dänzer wrote: > > > > On Fri, 2009-02-13 at 10:27 -0800, Jesse Barnes wrote: > > > > > Recall our last discussion where I outlined the cases we'd have to > > > > > deal with in the modeset ioctl if we didn't use get/put to just keep > > > > > interrupts on around the calls: > > > > > > > > But we are intending to keep them on around the calls. So the problem > > > > is that you are disabling the IRQ in between? Maybe a solution could be > > > > not to mess with the counter when disabling/enabling the IRQ. It needs > > > > to be guarded by the modeset ioctl anyway, so shouldn't that work? > > > > > > The current problem isn't a disable between modeset ioctls, it's a > > > disable followed by a counter reset of any kind (modeset ioctls or not), > > > since the "last" count we track is just done in the disable function, not > > > in the modeset ioctl. Doing in in the modeset ioctl instead may be > > > possible, but as I said there are lots of cases to deal with. > > > > Isn't the actual problem that drm_irq_uninstall() updates last_vblank? > > If it didn't (and the modeset ioctl is properly called around the > > disabling and re-enabling of the IRQ), wouldn't it just work? > > No, this happens w/o an uninstall, it's just due to wraparound being added > between the disable timer & the next drm_vblank_get. I still don't understand the problem then; this can only happen if there actually was a wraparound, as the drm_vblank_get must happen (via the modeset ioctl) before the hardware frame counter resets for any other reason. > > > But apps can't assume that; frames *will* be lost when the monitor goes > > > off, for as long as the monitor is off. So if an app isn't actively > > > using the framecount for something it can't count on a given value. > > > Right? > > > > Again, I disagree with the notion that because something may not work > > under some (in this case exceptional) circumstances, we shouldn't try to > > make it work whenever possible. > > So DPMS is exceptional? I think it's normal. Surely it's exceptional while a 'normal' OpenGL application is running. -- Earthling Michel Dänzer | http://www.vmware.com Libre software enthusiast | Debian, X and DRI developer |