r300: Don't sleep between texture upload ioctl calls. From: (null) Drop the hardware lock instead, so others get a chance to grab it and try and do something useful. --- src/mesa/drivers/dri/r300/r300_texmem.c | 11 +++++------ 1 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/mesa/drivers/dri/r300/r300_texmem.c b/src/mesa/drivers/dri/r300/r300_texmem.c index 2db6dc5..9287ee3 100644 --- a/src/mesa/drivers/dri/r300/r300_texmem.c +++ b/src/mesa/drivers/dri/r300/r300_texmem.c @@ -43,7 +43,6 @@ SOFTWARE. #include "colormac.h" #include "macros.h" #include "simple_list.h" -#include "radeon_reg.h" /* gets definition for usleep */ #include "r300_context.h" #include "r300_state.h" #include "r300_cmdbuf.h" @@ -53,7 +52,6 @@ SOFTWARE. */ #include "r300_tex.h" #include "r300_ioctl.h" -#include /* for usleep() */ #ifdef USER_BUFFERS #include "radeon_mm.h" @@ -467,10 +465,11 @@ static void uploadSubImage( r300ContextPtr rmesa, r300TexObjPtr t, do { ret = drmCommandWriteRead( rmesa->radeon.dri.fd, DRM_RADEON_TEXTURE, &tex, sizeof(drm_radeon_texture_t) ); - if (ret) { - if (RADEON_DEBUG & DEBUG_IOCTL) - fprintf(stderr, "DRM_RADEON_TEXTURE: again!\n"); - usleep(1); + if (ret == -EAGAIN) { + UNLOCK_HARDWARE( &rmesa->radeon ); + if (RADEON_DEBUG & DEBUG_IOCTL) + fprintf(stderr, "DRM_RADEON_TEXTURE: again!\n"); + LOCK_HARDWARE( &rmesa->radeon ); } } while ( ret == -EAGAIN );