diff options
-rw-r--r-- | src/gallium/auxiliary/os/os_thread.h | 11 | ||||
-rw-r--r-- | src/gallium/drivers/llvmpipe/lp_rast.c | 8 |
2 files changed, 18 insertions, 1 deletions
diff --git a/src/gallium/auxiliary/os/os_thread.h b/src/gallium/auxiliary/os/os_thread.h index ff46a891fe0..e9da8954885 100644 --- a/src/gallium/auxiliary/os/os_thread.h +++ b/src/gallium/auxiliary/os/os_thread.h @@ -85,6 +85,17 @@ static INLINE int pipe_thread_destroy( pipe_thread thread ) return thrd_detach( thread ); } +static INLINE void pipe_thread_setname( const char *name ) +{ +#if defined(HAVE_PTHREAD) +# if defined(__GNU_LIBRARY__) && defined(__GLIBC__) && defined(__GLIBC_MINOR__) && \ + (__GLIBC__ >= 3 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 12)) + pthread_setname_np(pthread_self(), name); +# endif +#endif + (void)name; +} + /* pipe_mutex */ diff --git a/src/gallium/drivers/llvmpipe/lp_rast.c b/src/gallium/drivers/llvmpipe/lp_rast.c index e168766e348..903e7c51002 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast.c +++ b/src/gallium/drivers/llvmpipe/lp_rast.c @@ -31,6 +31,7 @@ #include "util/u_rect.h" #include "util/u_surface.h" #include "util/u_pack_color.h" +#include "util/u_string.h" #include "os/os_time.h" @@ -747,11 +748,16 @@ static PIPE_THREAD_ROUTINE( thread_function, init_data ) struct lp_rasterizer_task *task = (struct lp_rasterizer_task *) init_data; struct lp_rasterizer *rast = task->rast; boolean debug = false; - unsigned fpstate = util_fpstate_get(); + char thread_name[16]; + unsigned fpstate; + + util_snprintf(thread_name, sizeof thread_name, "llvmpipe-%u", task->thread_index); + pipe_thread_setname(thread_name); /* Make sure that denorms are treated like zeros. This is * the behavior required by D3D10. OpenGL doesn't care. */ + fpstate = util_fpstate_get(); util_fpstate_set_denorms_to_zero(fpstate); while (1) { |