diff options
-rw-r--r-- | src/gallium/drivers/swr/rasterizer/core/threads.cpp | 46 |
1 files changed, 24 insertions, 22 deletions
diff --git a/src/gallium/drivers/swr/rasterizer/core/threads.cpp b/src/gallium/drivers/swr/rasterizer/core/threads.cpp index 6fa5c044334..17bf6163bd8 100644 --- a/src/gallium/drivers/swr/rasterizer/core/threads.cpp +++ b/src/gallium/drivers/swr/rasterizer/core/threads.cpp @@ -248,46 +248,48 @@ void bindThread(uint32_t threadId, uint32_t procGroupId = 0, bool bindProcGroup= } #if defined(_WIN32) - { - GROUP_AFFINITY affinity = {}; - affinity.Group = procGroupId; + + GROUP_AFFINITY affinity = {}; + affinity.Group = procGroupId; #if !defined(_WIN64) - if (threadId >= 32) - { - // Hopefully we don't get here. Logic in CreateThreadPool should prevent this. - SWR_REL_ASSERT(false, "Shouldn't get here"); + if (threadId >= 32) + { + // Hopefully we don't get here. Logic in CreateThreadPool should prevent this. + SWR_REL_ASSERT(false, "Shouldn't get here"); - // In a 32-bit process on Windows it is impossible to bind - // to logical processors 32-63 within a processor group. - // In this case set the mask to 0 and let the system assign - // the processor. Hopefully it will make smart choices. - affinity.Mask = 0; - } - else + // In a 32-bit process on Windows it is impossible to bind + // to logical processors 32-63 within a processor group. + // In this case set the mask to 0 and let the system assign + // the processor. Hopefully it will make smart choices. + affinity.Mask = 0; + } + else #endif + { + // If KNOB_MAX_WORKER_THREADS is set, only bind to the proc group, + // Not the individual HW thread. + if (!KNOB_MAX_WORKER_THREADS) { - // If KNOB_MAX_WORKER_THREADS is set, only bind to the proc group, - // Not the individual HW thread. - if (!KNOB_MAX_WORKER_THREADS) - { - affinity.Mask = KAFFINITY(1) << threadId; - } + affinity.Mask = KAFFINITY(1) << threadId; } - - SetThreadGroupAffinity(GetCurrentThread(), &affinity, nullptr); } + + SetThreadGroupAffinity(GetCurrentThread(), &affinity, nullptr); + #elif defined(__CYGWIN__) // do nothing #else + cpu_set_t cpuset; pthread_t thread = pthread_self(); CPU_ZERO(&cpuset); CPU_SET(threadId, &cpuset); pthread_setaffinity_np(thread, sizeof(cpu_set_t), &cpuset); + #endif } |