From: Tim Rowley Date: Mon, 22 Aug 2016 20:30:08 +0000 (-0500) Subject: swr: [rasterizer core] minor cleanup to thread initialization X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a4efbd14d382855a21d13bad510a4f67757480ab;p=mesa.git swr: [rasterizer core] minor cleanup to thread initialization Signed-off-by: Tim Rowley --- diff --git a/src/gallium/drivers/swr/rasterizer/core/api.cpp b/src/gallium/drivers/swr/rasterizer/core/api.cpp index 7108a83d0d3..3e2a67ddd3d 100644 --- a/src/gallium/drivers/swr/rasterizer/core/api.cpp +++ b/src/gallium/drivers/swr/rasterizer/core/api.cpp @@ -104,14 +104,6 @@ HANDLE SwrCreateContext( CreateThreadPool(pContext, &pContext->threadPool); - // Calling createThreadPool() above can set SINGLE_THREADED - if (pContext->threadInfo.SINGLE_THREADED) - { - pContext->NumWorkerThreads = 1; - pContext->NumFEThreads = 1; - pContext->NumBEThreads = 1; - } - pContext->ppScratch = new uint8_t*[pContext->NumWorkerThreads]; pContext->pStats = new SWR_STATS[pContext->NumWorkerThreads]; @@ -356,7 +348,7 @@ DRAW_CONTEXT* GetDrawContext(SWR_CONTEXT *pContext, bool isSplitDraw = false) pCurDrawContext->threadsDone = 0; pCurDrawContext->retireCallback.pfnCallbackFunc = nullptr; - pCurDrawContext->dynState.Reset(pContext->threadPool.numThreads); + pCurDrawContext->dynState.Reset(pContext->NumWorkerThreads); // Assign unique drawId for this DC pCurDrawContext->drawId = pContext->dcRing.GetHead(); diff --git a/src/gallium/drivers/swr/rasterizer/core/context.h b/src/gallium/drivers/swr/rasterizer/core/context.h index fe78cd6dc93..f24b8f0d4c2 100644 --- a/src/gallium/drivers/swr/rasterizer/core/context.h +++ b/src/gallium/drivers/swr/rasterizer/core/context.h @@ -373,7 +373,7 @@ struct DRAW_DYNAMIC_STATE SWR_STATS* pSavePtr = pStats; memset(this, 0, sizeof(*this)); pStats = pSavePtr; - memset(pStats, 0, sizeof(SWR_STATS) * (numThreads ? numThreads : 1)); + memset(pStats, 0, sizeof(SWR_STATS) * numThreads); } ///@todo Currently assumes only a single FE can do stream output for a draw. uint32_t SoWriteOffset[4]; diff --git a/src/gallium/drivers/swr/rasterizer/core/threads.cpp b/src/gallium/drivers/swr/rasterizer/core/threads.cpp index ed03d70a1f9..24e78123087 100644 --- a/src/gallium/drivers/swr/rasterizer/core/threads.cpp +++ b/src/gallium/drivers/swr/rasterizer/core/threads.cpp @@ -877,8 +877,6 @@ void CreateThreadPool(SWR_CONTEXT *pContext, THREAD_POOL *pPool) } else { - pPool->numThreads = 0; - numThreads = 1; pContext->threadInfo.SINGLE_THREADED = true; } } @@ -895,6 +893,11 @@ void CreateThreadPool(SWR_CONTEXT *pContext, THREAD_POOL *pPool) } } + if (pContext->threadInfo.SINGLE_THREADED) + { + numThreads = 1; + } + // Initialize DRAW_CONTEXT's per-thread stats for (uint32_t dc = 0; dc < KNOB_MAX_DRAWS_IN_FLIGHT; ++dc) { @@ -904,10 +907,14 @@ void CreateThreadPool(SWR_CONTEXT *pContext, THREAD_POOL *pPool) if (pContext->threadInfo.SINGLE_THREADED) { + pContext->NumWorkerThreads = 1; + pContext->NumFEThreads = 1; + pContext->NumBEThreads = 1; + pPool->numThreads = 0; + return; } - pPool->numThreads = numThreads; pContext->NumWorkerThreads = pPool->numThreads;