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__,

Reply via email to