From 7b8ec0d8e72b4dd0c60db9c9454acd1f1ec75a7e Mon Sep 17 00:00:00 2001 From: Michel Dänzer Date: Sun, 6 Sep 2009 18:12:14 +0200 Subject: r300g: Handle PIPE_BUFFER_USAGE_DONTBLOCK as intended. Return NULL if the BO is busy, otherwise just map it. --- src/gallium/winsys/drm/radeon/core/radeon_buffer.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src/gallium/winsys') diff --git a/src/gallium/winsys/drm/radeon/core/radeon_buffer.c b/src/gallium/winsys/drm/radeon/core/radeon_buffer.c index 07551e7cd1..ee39af9f76 100644 --- a/src/gallium/winsys/drm/radeon/core/radeon_buffer.c +++ b/src/gallium/winsys/drm/radeon/core/radeon_buffer.c @@ -134,8 +134,11 @@ static void *radeon_buffer_map(struct pipe_winsys *ws, (struct radeon_pipe_buffer*)buffer; int write = 0; - if (!(flags & PIPE_BUFFER_USAGE_DONTBLOCK)) { - radeon_bo_wait(radeon_buffer->bo); + if (flags & PIPE_BUFFER_USAGE_DONTBLOCK) { + uint32_t domain; + + if (radeon_bo_is_busy(radeon_buffer->bo, &domain)) + return NULL; } if (flags & PIPE_BUFFER_USAGE_CPU_WRITE) { write = 1; -- cgit v1.2.3