Mesa (master): r300g: do not use ioctl thread offloading on single-core machines

Marek Olšák mareko at kemper.freedesktop.org
Wed Mar 2 16:55:38 UTC 2011


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

Author: Marek Olšák <maraeo at gmail.com>
Date:   Wed Mar  2 17:37:52 2011 +0100

r300g: do not use ioctl thread offloading on single-core machines

---

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

diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_common.c b/src/gallium/winsys/radeon/drm/radeon_drm_common.c
index 4676c2a..c0044d3 100644
--- a/src/gallium/winsys/radeon/drm/radeon_drm_common.c
+++ b/src/gallium/winsys/radeon/drm/radeon_drm_common.c
@@ -157,6 +157,8 @@ static void do_ioctls(struct radeon_drm_winsys *winsys)
     winsys->vram_size = gem_info.vram_size;
 
     drmFreeVersion(version);
+
+    winsys->num_cpus = sysconf(_SC_NPROCESSORS_ONLN);
 }
 
 static void radeon_winsys_destroy(struct r300_winsys_screen *rws)
diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_cs.c b/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
index a38b010..9ee800f 100644
--- a/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
+++ b/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
@@ -384,7 +384,7 @@ void radeon_drm_cs_flush(struct r300_winsys_cs *rcs)
         for (i = 0; i < crelocs; i++)
             p_atomic_inc(&cs->csc->relocs_bo[i]->num_active_ioctls);
 
-        if (debug_get_option_thread()) {
+        if (cs->ws->num_cpus > 1 && debug_get_option_thread()) {
             cs->thread = pipe_thread_create(radeon_drm_cs_emit_ioctl, cs->csc);
             assert(cs->thread);
         } else {
diff --git a/src/gallium/winsys/radeon/drm/radeon_winsys.h b/src/gallium/winsys/radeon/drm/radeon_winsys.h
index f8a89ab..9ecbb07 100644
--- a/src/gallium/winsys/radeon/drm/radeon_winsys.h
+++ b/src/gallium/winsys/radeon/drm/radeon_winsys.h
@@ -46,6 +46,7 @@ struct radeon_drm_winsys {
     uint32_t z_pipes;       /* Z pipe count (rv530 only) */
     uint32_t gart_size;     /* GART size. */
     uint32_t vram_size;     /* VRAM size. */
+    uint32_t num_cpus;      /* Number of CPUs. */
 
     unsigned drm_major;
     unsigned drm_minor;




More information about the mesa-commit mailing list