Vladimir Dergachev ([EMAIL PROTECTED]):
> > and hope that someone in the kernel has an accurate clock. It would
> > also need to tell me the (exact) refresh rate + sync point.
>
> _You_ don't need to know that. All you need is to tell the card:
> display this frame after sync. It will do the rest !
I think that you think I'm trying to solve the tearing problem. No,
I'm not. I understand that you won't tear.
I'm talking about planning how many refreshes to show each frame. I'd
be really surprised if you could say to the ATI card 'show this 2
refreshes from now'.
> > I'm not worried about tearing, I'm worried about amortizing frame
> > time over the refresh rate in a pleasing way (especially for special
> > refresh rates like 72hz: think projector).
>
> I am not sure I understand the problem here. What is it again ?
I'm glad you asked. :)
Say I'm playing 24fps content and I have a projector which I'm going
to run at exactly 72hz refresh. So, for every frame of video, I want to
show it for exactly 3 refreshes.
To do this correctly, I want to make sure I do my blit safely inside
a refresh interval to account for some error (it takes time to have the
frame copied to video memory etc). Say I don't at all know when the
refresh is occuring (since I have no API for that), and I'm doing my
blits at _just_ before the refresh all the time. Sometimes I blit and
the card is in the middle of the refresh, sometimes I blit and it hasn't
happened yet.
So, say I want to blit before the refresh. Here's a possible
scenario:
Output Refreshes Blits
0 Blit 1 [ we make it in before the next refresh ]
1 Refresh 1
1 Refresh 2
1 Refresh 3
1 Refresh 4 Blit 2 [ this time, we collide with the refresh,
2 Refresh 5 so the card waits for the next one to show
2 Refresh 6 our frame ]
Blit 3 [ we make it again, before the intended
3 Refresh 7 refresh ]
3 Refresh 8
3 Refresh 9
So you can see in this case, frame 1 was shown for 4 refreshes, and
frame 2 for only 2, instead of the intended refresh-per-frame average we
wanted of 3. Over time we sometimes make it and sometimes don't, and
our video output quality suffers.
Tonight I did up some discussion on the effects of 10ms scheduling
resolution on frame blits. However, the results do assume that we can
determine when the video refresh occurs so that we can avoid cases like
the above.
http://www.dumbterm.net/graphics/refresh/
I'll try and do up a similar experiment to show the effects of not
being refresh-aware.
--
Billy Biggs
[EMAIL PROTECTED]
_______________________________________________
Xpert mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/xpert