diff options
author | Marek Olšák <[email protected]> | 2016-06-12 13:36:39 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2016-06-24 12:24:40 +0200 |
commit | 2fba0aaa700bbdef37ac5da6da005b24be570e48 (patch) | |
tree | 9aa44ac9a083c5c6201473f8efad27d7e4f84c11 /src | |
parent | 404d0d50d8aaf60597668e65a2d7c96cdea53aea (diff) |
gallium/u_queue: add an option to name threads
for debugging
v2: correct the snprintf use
Reviewed-by: Nicolai Hähnle <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/auxiliary/util/u_queue.c | 9 | ||||
-rw-r--r-- | src/gallium/auxiliary/util/u_queue.h | 2 | ||||
-rw-r--r-- | src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c | 2 | ||||
-rw-r--r-- | src/gallium/winsys/radeon/drm/radeon_drm_winsys.c | 2 |
4 files changed, 13 insertions, 2 deletions
diff --git a/src/gallium/auxiliary/util/u_queue.c b/src/gallium/auxiliary/util/u_queue.c index a958c04d5db..de0422a0c13 100644 --- a/src/gallium/auxiliary/util/u_queue.c +++ b/src/gallium/auxiliary/util/u_queue.c @@ -26,6 +26,7 @@ #include "u_queue.h" #include "u_memory.h" +#include "u_string.h" #include "os/os_time.h" static void @@ -61,6 +62,12 @@ static PIPE_THREAD_ROUTINE(util_queue_thread_func, input) FREE(input); + if (queue->name) { + char name[16]; + util_snprintf(name, sizeof(name), "%s:%i", queue->name, thread_index); + pipe_thread_setname(name); + } + while (1) { struct util_queue_job job; @@ -96,6 +103,7 @@ static PIPE_THREAD_ROUTINE(util_queue_thread_func, input) bool util_queue_init(struct util_queue *queue, + const char *name, unsigned max_jobs, unsigned num_threads, void (*execute_job)(void *, int)) @@ -103,6 +111,7 @@ util_queue_init(struct util_queue *queue, unsigned i; memset(queue, 0, sizeof(*queue)); + queue->name = name; queue->num_threads = num_threads; queue->max_jobs = max_jobs; diff --git a/src/gallium/auxiliary/util/u_queue.h b/src/gallium/auxiliary/util/u_queue.h index f3aa4f6f5c6..f005ad5ef4c 100644 --- a/src/gallium/auxiliary/util/u_queue.h +++ b/src/gallium/auxiliary/util/u_queue.h @@ -51,6 +51,7 @@ struct util_queue_job { /* Put this into your context. */ struct util_queue { + const char *name; pipe_mutex lock; pipe_semaphore has_space; pipe_semaphore queued; @@ -64,6 +65,7 @@ struct util_queue { }; bool util_queue_init(struct util_queue *queue, + const char *name, unsigned max_jobs, unsigned num_threads, void (*execute_job)(void *, int)); diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c index 22a81220ace..8782665cca9 100644 --- a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c @@ -493,7 +493,7 @@ amdgpu_winsys_create(int fd, radeon_screen_create_t screen_create) pipe_mutex_init(ws->bo_fence_lock); if (sysconf(_SC_NPROCESSORS_ONLN) > 1 && debug_get_option_thread()) - util_queue_init(&ws->cs_queue, 8, 1, amdgpu_cs_submit_ib); + util_queue_init(&ws->cs_queue, "amdgpu_cs", 8, 1, amdgpu_cs_submit_ib); /* Create the screen at the end. The winsys must be initialized * completely. diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c index 32d58b9b9e5..ea5d212803c 100644 --- a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c +++ b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c @@ -783,7 +783,7 @@ radeon_drm_winsys_create(int fd, radeon_screen_create_t screen_create) ws->info.gart_page_size = sysconf(_SC_PAGESIZE); if (ws->num_cpus > 1 && debug_get_option_thread()) - util_queue_init(&ws->cs_queue, 8, 1, + util_queue_init(&ws->cs_queue, "radeon_cs", 8, 1, radeon_drm_cs_emit_ioctl_oneshot); /* Create the screen at the end. The winsys must be initialized |