Mesa (master): r300g: Handle PIPE_BUFFER_USAGE_DONTBLOCK as intended.

Michel Dänzer daenzer at kemper.freedesktop.org
Sun Sep 6 16:30:10 UTC 2009


Module: Mesa
Branch: master
Commit: 7b8ec0d8e72b4dd0c60db9c9454acd1f1ec75a7e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7b8ec0d8e72b4dd0c60db9c9454acd1f1ec75a7e

Author: Michel Dänzer <daenzer at vmware.com>
Date:   Sun Sep  6 18:12:14 2009 +0200

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 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/gallium/winsys/drm/radeon/core/radeon_buffer.c b/src/gallium/winsys/drm/radeon/core/radeon_buffer.c
index 07551e7..ee39af9 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;




More information about the mesa-commit mailing list