On Sun, Jun 02, 2002 at 06:22:03PM +0200, Michel D�nzer wrote:
> > - Changing the do_wait_for_idle into a while(1) loop (not really a
> > permanant thing to do, just to see the improvement if we stop the
> > continual looping in and out of the kernel to wait for idle)
>
> I don't understand what you are saying here.
Well at the mo we have
do_whatever:
PUT_SOME_STUFF_ON_RING();
while (++i < usec timeout)
if (bit_is_clear) {
return 0; /* we're now idle */
}
udelay (1);
}
and in the drmDoWhatever
do {
ret = ioctl(do_whatever...);
} while (ret == EBUSY && ++i < SomeArbitraryInteger);
..and in the typical user of 'whatever' we have
do {
drmDoWhatever(fd,...);
} while (ret == EBUSY && ++i < AnotherArbitraryInteger);
I've basically changed do_idle to
while(1)
if (bit_is_clear) {
return;
}
udelay (1);
}
So you call it once, and it returns when it's idle, with the obvious
problem if it doesn't go idle, but I've not hit that (and some of the
callers either loop forever or have a massive count anyway).
Where 'whatever' includes things like waiting for a frame to complete,
waiting for idle etc. In the wait for idle, it also included a similar
call / return / call return loop for the fifo too, compounding it, but
that's gone in my test anyway.
> > I'm reversing some of the changes now, to see if there's a specific one that
> > made the difference.
>
> I'll happily test any patches, just send them my way.
Ok, I'll post something later...
> That's what I meant with 'X server option'. :) The 3D clients report
> that pageflipping would be allowed but never seem to use it.
Doh, I missed that.
If it says 'allow 1 current 0' it's using it afaict.
--
Michael.
_______________________________________________________________
Don't miss the 2002 Sprint PCS Application Developer's Conference
August 25-28 in Las Vegas -- http://devcon.sprintpcs.com/adp/index.cfm
_______________________________________________
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel