On Tue, 2007-06-12 at 19:23 +0200, Michel Dänzer wrote: > That would mean one register read sequence per waiter per interrupt > whereas otherwise it's one read sequence per CRTC (which is enabled and > has waiters) per interrupt. Looks like the latter can be made to be more > efficient.
So, just so I understand the basic control flow:
wait_for_vblank (crtc, seq)
{
enable_irq (crtc)
while ((seq - crtc->current_seq) < 0)
block ();
disable_irq (crtc)
}
enable_irq (crtc)
{
if (enable_count++ == 0) {
set_interrupts_enabled (crtc);
crtc->current_seq = read_frame_count (crtc)
}
}
disable_irq (crtc)
{
if (--enable_count == 0)
set_interrupts_disabled (crtc);
}
irq ()
{
if (status & interrupt_crtc0)
crtc0->current_seq = read_frame_count (crtc0);
if (status & interrupt_crtc1)
crtc1->current_seq = read_frame_count (crtc1);
wakeup ();
}
--
[EMAIL PROTECTED]
signature.asc
Description: This is a digitally signed message part
------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/
-- _______________________________________________ Dri-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/dri-devel
