gallium/u_queue: add an option to name threads
for debugging v2: correct the snprintf use Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
parent
404d0d50d8
commit
2fba0aaa70
|
@ -26,6 +26,7 @@
|
||||||
|
|
||||||
#include "u_queue.h"
|
#include "u_queue.h"
|
||||||
#include "u_memory.h"
|
#include "u_memory.h"
|
||||||
|
#include "u_string.h"
|
||||||
#include "os/os_time.h"
|
#include "os/os_time.h"
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -61,6 +62,12 @@ static PIPE_THREAD_ROUTINE(util_queue_thread_func, input)
|
||||||
|
|
||||||
FREE(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) {
|
while (1) {
|
||||||
struct util_queue_job job;
|
struct util_queue_job job;
|
||||||
|
|
||||||
|
@ -96,6 +103,7 @@ static PIPE_THREAD_ROUTINE(util_queue_thread_func, input)
|
||||||
|
|
||||||
bool
|
bool
|
||||||
util_queue_init(struct util_queue *queue,
|
util_queue_init(struct util_queue *queue,
|
||||||
|
const char *name,
|
||||||
unsigned max_jobs,
|
unsigned max_jobs,
|
||||||
unsigned num_threads,
|
unsigned num_threads,
|
||||||
void (*execute_job)(void *, int))
|
void (*execute_job)(void *, int))
|
||||||
|
@ -103,6 +111,7 @@ util_queue_init(struct util_queue *queue,
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
|
||||||
memset(queue, 0, sizeof(*queue));
|
memset(queue, 0, sizeof(*queue));
|
||||||
|
queue->name = name;
|
||||||
queue->num_threads = num_threads;
|
queue->num_threads = num_threads;
|
||||||
queue->max_jobs = max_jobs;
|
queue->max_jobs = max_jobs;
|
||||||
|
|
||||||
|
|
|
@ -51,6 +51,7 @@ struct util_queue_job {
|
||||||
|
|
||||||
/* Put this into your context. */
|
/* Put this into your context. */
|
||||||
struct util_queue {
|
struct util_queue {
|
||||||
|
const char *name;
|
||||||
pipe_mutex lock;
|
pipe_mutex lock;
|
||||||
pipe_semaphore has_space;
|
pipe_semaphore has_space;
|
||||||
pipe_semaphore queued;
|
pipe_semaphore queued;
|
||||||
|
@ -64,6 +65,7 @@ struct util_queue {
|
||||||
};
|
};
|
||||||
|
|
||||||
bool util_queue_init(struct util_queue *queue,
|
bool util_queue_init(struct util_queue *queue,
|
||||||
|
const char *name,
|
||||||
unsigned max_jobs,
|
unsigned max_jobs,
|
||||||
unsigned num_threads,
|
unsigned num_threads,
|
||||||
void (*execute_job)(void *, int));
|
void (*execute_job)(void *, int));
|
||||||
|
|
|
@ -493,7 +493,7 @@ amdgpu_winsys_create(int fd, radeon_screen_create_t screen_create)
|
||||||
pipe_mutex_init(ws->bo_fence_lock);
|
pipe_mutex_init(ws->bo_fence_lock);
|
||||||
|
|
||||||
if (sysconf(_SC_NPROCESSORS_ONLN) > 1 && debug_get_option_thread())
|
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
|
/* Create the screen at the end. The winsys must be initialized
|
||||||
* completely.
|
* completely.
|
||||||
|
|
|
@ -783,7 +783,7 @@ radeon_drm_winsys_create(int fd, radeon_screen_create_t screen_create)
|
||||||
ws->info.gart_page_size = sysconf(_SC_PAGESIZE);
|
ws->info.gart_page_size = sysconf(_SC_PAGESIZE);
|
||||||
|
|
||||||
if (ws->num_cpus > 1 && debug_get_option_thread())
|
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);
|
radeon_drm_cs_emit_ioctl_oneshot);
|
||||||
|
|
||||||
/* Create the screen at the end. The winsys must be initialized
|
/* Create the screen at the end. The winsys must be initialized
|
||||||
|
|
Loading…
Reference in New Issue