r300: Perform the locking closer to the DRM texture upload call.
authorOliver McFadden <z3ro.geek@gmail.com>
Sat, 12 May 2007 00:14:33 +0000 (00:14 +0000)
committerOliver McFadden <z3ro.geek@gmail.com>
Sat, 12 May 2007 00:14:33 +0000 (00:14 +0000)
This might help if with attaching GDB if the driver gets into a -EAGAIN loop.

src/mesa/drivers/dri/r300/r300_texmem.c

index eef5ff186f4c991cddfbd71847f1041c2abae7d5..30f3886542fa79690c64205e761aae28fbbbfd79 100644 (file)
@@ -469,12 +469,14 @@ static void r300UploadSubImage(r300ContextPtr rmesa, r300TexObjPtr t,
                }
        }
 
-       LOCK_HARDWARE(&rmesa->radeon);
        do {
+               LOCK_HARDWARE(&rmesa->radeon);
                ret =
                    drmCommandWriteRead(rmesa->radeon.dri.fd,
                                        DRM_RADEON_TEXTURE, &tex,
                                        sizeof(drm_radeon_texture_t));
+               UNLOCK_HARDWARE(&rmesa->radeon);
+
                if (ret) {
                        if (RADEON_DEBUG & DEBUG_IOCTL)
                                fprintf(stderr,
@@ -483,8 +485,6 @@ static void r300UploadSubImage(r300ContextPtr rmesa, r300TexObjPtr t,
                }
        } while (ret == -EAGAIN);
 
-       UNLOCK_HARDWARE(&rmesa->radeon);
-
        if (ret) {
                fprintf(stderr, "DRM_RADEON_TEXTURE: return = %d\n", ret);
                fprintf(stderr, "   offset=0x%08x\n", offset);