Hi,
The patch makes radeonWaitIrq() try again if -EBUSY is returned.
This fixes benchmark 3 & 4 in progs/demos/gltestperf
Benchmark: 3 - ZSmooth Tex Blend Triangles
Benchmark: 4 - ZSmooth Tex Blend TMesh Triangles
Not an important app, but other apps might run in to this problem.
Rune Petersen
Index: radeon_ioctl.c
===================================================================
RCS file: /cvs/mesa/Mesa/src/mesa/drivers/dri/r300/radeon_ioctl.c,v
retrieving revision 1.11
diff -u -r1.11 radeon_ioctl.c
--- radeon_ioctl.c 31 Mar 2006 15:48:04 -0000 1.11
+++ radeon_ioctl.c 27 May 2006 10:59:12 -0000
@@ -118,11 +118,12 @@
static void radeonWaitIrq(radeonContextPtr radeon)
{
int ret;
+ int tries = 5;
do {
ret = drmCommandWrite(radeon->dri.fd, DRM_RADEON_IRQ_WAIT,
&radeon->iw, sizeof(radeon->iw));
- } while (ret && (errno == EINTR || errno == EAGAIN));
+ } while (ret && (errno == EINTR || errno == EAGAIN || (errno == EBUSY
&& --tries)));
if (ret) {
fprintf(stderr, "%s: drmRadeonIrqWait: %d\n", __FUNCTION__,