Mesa (master): r300g: flush CS in bo_map even if we get USAGE_DONTBLOCK

Marek Olšák mareko at kemper.freedesktop.org
Mon Feb 14 22:59:19 UTC 2011


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

Author: Marek Olšák <maraeo at gmail.com>
Date:   Mon Feb 14 23:15:55 2011 +0100

r300g: flush CS in bo_map even if we get USAGE_DONTBLOCK

Because an app may do something like this:

while (!(ptr = bo_map(..., DONT_BLOCK))) {
    /* Do some other work. */
}

And it would be looping endlessly if we didn't flush.

---

 src/gallium/winsys/radeon/drm/radeon_drm_bo.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_bo.c b/src/gallium/winsys/radeon/drm/radeon_drm_bo.c
index 550886d..027e9d3 100644
--- a/src/gallium/winsys/radeon/drm/radeon_drm_bo.c
+++ b/src/gallium/winsys/radeon/drm/radeon_drm_bo.c
@@ -162,6 +162,7 @@ static void *radeon_bo_map_internal(struct pb_buffer *_buf,
 
     if (flags & PB_USAGE_DONTBLOCK) {
         if (radeon_bo_is_referenced_by_cs(cs, bo)) {
+            cs->flush_cs(cs->flush_data);
             return NULL;
         }
 




More information about the mesa-commit mailing list