summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gallium/auxiliary/os/os_thread.h11
-rw-r--r--src/gallium/drivers/llvmpipe/lp_rast.c8
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) {