Reviewed-by: Bruce Cherniak <bruce.chern...@intel.com>
> On Jul 6, 2017, at 1:55 PM, Tim Rowley <timothy.o.row...@intel.com> wrote: > > Cacheline alignment of SWR_STATS to prevent sharing of cachelines > between threads (performance). > > Gets rid of gcc-7.1 warning about using c++17's over-aligned new > feature. > > Cc: mesa-sta...@lists.freedesktop.org > --- > src/gallium/drivers/swr/rasterizer/core/api.cpp | 6 +++--- > src/gallium/drivers/swr/rasterizer/core/threads.cpp | 4 ++-- > 2 files changed, 5 insertions(+), 5 deletions(-) > > diff --git a/src/gallium/drivers/swr/rasterizer/core/api.cpp > b/src/gallium/drivers/swr/rasterizer/core/api.cpp > index d3d80e4..087a24a 100644 > --- a/src/gallium/drivers/swr/rasterizer/core/api.cpp > +++ b/src/gallium/drivers/swr/rasterizer/core/api.cpp > @@ -108,7 +108,7 @@ HANDLE SwrCreateContext( > CreateThreadPool(pContext, &pContext->threadPool); > > pContext->ppScratch = new uint8_t*[pContext->NumWorkerThreads]; > - pContext->pStats = new SWR_STATS[pContext->NumWorkerThreads]; > + pContext->pStats = (SWR_STATS*)AlignedMalloc(sizeof(SWR_STATS) * > pContext->NumWorkerThreads, 64); > > #if defined(KNOB_ENABLE_AR) > // Setup ArchRast thread contexts which includes +1 for API thread. > @@ -363,7 +363,7 @@ void SwrDestroyContext(HANDLE hContext) > // free the fifos > for (uint32_t i = 0; i < KNOB_MAX_DRAWS_IN_FLIGHT; ++i) > { > - delete[] pContext->dcRing[i].dynState.pStats; > + AlignedFree(pContext->dcRing[i].dynState.pStats); > delete pContext->dcRing[i].pArena; > delete pContext->dsRing[i].pArena; > pContext->pMacroTileManagerArray[i].~MacroTileMgr(); > @@ -388,7 +388,7 @@ void SwrDestroyContext(HANDLE hContext) > } > > delete[] pContext->ppScratch; > - delete[] pContext->pStats; > + AlignedFree(pContext->pStats); > > delete(pContext->pHotTileMgr); > > diff --git a/src/gallium/drivers/swr/rasterizer/core/threads.cpp > b/src/gallium/drivers/swr/rasterizer/core/threads.cpp > index e03632b..36710bf 100644 > --- a/src/gallium/drivers/swr/rasterizer/core/threads.cpp > +++ b/src/gallium/drivers/swr/rasterizer/core/threads.cpp > @@ -363,7 +363,7 @@ INLINE void UpdateClientStats(SWR_CONTEXT* pContext, > uint32_t workerId, DRAW_CON > } > > DRAW_DYNAMIC_STATE& dynState = pDC->dynState; > - SWR_STATS stats{ 0 }; > + OSALIGNLINE(SWR_STATS) stats{ 0 }; > > // Sum up stats across all workers before sending to client. > for (uint32_t i = 0; i < pContext->NumWorkerThreads; ++i) > @@ -986,7 +986,7 @@ void CreateThreadPool(SWR_CONTEXT* pContext, THREAD_POOL* > pPool) > // Initialize DRAW_CONTEXT's per-thread stats > for (uint32_t dc = 0; dc < KNOB_MAX_DRAWS_IN_FLIGHT; ++dc) > { > - pContext->dcRing[dc].dynState.pStats = new SWR_STATS[numThreads]; > + pContext->dcRing[dc].dynState.pStats = > (SWR_STATS*)AlignedMalloc(sizeof(SWR_STATS) * numThreads, 64); > memset(pContext->dcRing[dc].dynState.pStats, 0, sizeof(SWR_STATS) * > numThreads); > } > > -- > 2.7.4 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev rvb.. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev