summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Gray <jsg@jsg.id.au>2013-06-05 15:00:33 +1000
committerMichel Dänzer <michel@daenzer.net>2013-06-06 11:01:18 +0200
commit5bd808a2c793a81fe79c0a473c25c6e50c313fef (patch)
tree350ff29cc0351f0483ef877ccf8c078e6f3a7352
parent962204961def009610e60b23d40a22f064214dc7 (diff)
downloadexternal_mesa3d-5bd808a2c793a81fe79c0a473c25c6e50c313fef.zip
external_mesa3d-5bd808a2c793a81fe79c0a473c25c6e50c313fef.tar.gz
external_mesa3d-5bd808a2c793a81fe79c0a473c25c6e50c313fef.tar.bz2
radeon/winsys: correct RADEON_GEM_WAIT_IDLE use
RADEON_GEM_WAIT_IDLE is declared DRM_IOW but mesa uses it with drmCommandWriteRead instead of drmCommandWrite which leads to the ioctl being unmatched and returning an error on at least OpenBSD. Problem originally noticed in libdrm by Mark Kettenis. Dave Airlie pointed out that mesa has the same issue. Signed-off-by: Jonathan Gray <jsg@jsg.id.au>
-rw-r--r--src/gallium/winsys/radeon/drm/radeon_drm_bo.c2
-rw-r--r--src/gallium/winsys/radeon/tools/radeon_ctx.h2
2 files changed, 2 insertions, 2 deletions
diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_bo.c b/src/gallium/winsys/radeon/drm/radeon_drm_bo.c
index 6ec1713..bcd4b27 100644
--- a/src/gallium/winsys/radeon/drm/radeon_drm_bo.c
+++ b/src/gallium/winsys/radeon/drm/radeon_drm_bo.c
@@ -167,7 +167,7 @@ static void radeon_bo_wait(struct pb_buffer *_buf, enum radeon_bo_usage usage)
struct drm_radeon_gem_wait_idle args;
memset(&args, 0, sizeof(args));
args.handle = bo->handle;
- while (drmCommandWriteRead(bo->rws->fd, DRM_RADEON_GEM_WAIT_IDLE,
+ while (drmCommandWrite(bo->rws->fd, DRM_RADEON_GEM_WAIT_IDLE,
&args, sizeof(args)) == -EBUSY);
}
}
diff --git a/src/gallium/winsys/radeon/tools/radeon_ctx.h b/src/gallium/winsys/radeon/tools/radeon_ctx.h
index c2967ff..1eecfd5 100644
--- a/src/gallium/winsys/radeon/tools/radeon_ctx.h
+++ b/src/gallium/winsys/radeon/tools/radeon_ctx.h
@@ -98,7 +98,7 @@ static void bo_wait(struct ctx *ctx, struct bo *bo)
memset(&args, 0, sizeof(args));
args.handle = bo->handle;
do {
- r = drmCommandWriteRead(ctx->fd, DRM_RADEON_GEM_WAIT_IDLE, &args, sizeof(args));
+ r = drmCommandWrite(ctx->fd, DRM_RADEON_GEM_WAIT_IDLE, &args, sizeof(args));
} while (r == -EBUSY);
}