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