Mesa (master): winsys/radeon: do the CS cleanup in the CS ioctl thread

Marek Olšák mareko at kemper.freedesktop.org
Thu Aug 4 22:11:42 PDT 2011


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

Author: Marek Olšák <maraeo at gmail.com>
Date:   Wed Aug  3 21:01:31 2011 +0200

winsys/radeon: do the CS cleanup in the CS ioctl thread

---

 src/gallium/winsys/radeon/drm/radeon_drm_cs.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_cs.c b/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
index fec660d..1b30b95 100644
--- a/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
+++ b/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
@@ -380,6 +380,8 @@ static PIPE_THREAD_ROUTINE(radeon_drm_cs_emit_ioctl, param)
 
     for (i = 0; i < csc->crelocs; i++)
         p_atomic_dec(&csc->relocs_bo[i]->num_active_ioctls);
+
+    radeon_cs_context_cleanup(csc);
     return NULL;
 }
 
@@ -424,6 +426,8 @@ static void radeon_drm_cs_flush(struct radeon_winsys_cs *rcs, unsigned flags)
         } else {
             radeon_drm_cs_emit_ioctl(cs->csc);
         }
+    } else {
+        radeon_cs_context_cleanup(cs->csc);
     }
 
     /* Flip command streams. */
@@ -432,8 +436,6 @@ static void radeon_drm_cs_flush(struct radeon_winsys_cs *rcs, unsigned flags)
     cs->cst = tmp;
 
     /* Prepare a new CS. */
-    radeon_cs_context_cleanup(cs->csc);
-
     cs->base.buf = cs->csc->buf;
     cs->base.cdw = 0;
 }



More information about the mesa-commit mailing list