mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-28 10:20:09 +01:00
swr/rast: Correctly allocate SWR_STATS memory as cacheline aligned
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-stable@lists.freedesktop.org
Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
(cherry picked from commit bab03c06fc)
This commit is contained in:
parent
7bd9eccbfe
commit
d856e97d92
2 changed files with 5 additions and 5 deletions
|
|
@ -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.
|
||||
|
|
@ -367,7 +367,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();
|
||||
|
|
@ -392,7 +392,7 @@ void SwrDestroyContext(HANDLE hContext)
|
|||
}
|
||||
|
||||
delete[] pContext->ppScratch;
|
||||
delete[] pContext->pStats;
|
||||
AlignedFree(pContext->pStats);
|
||||
|
||||
delete(pContext->pHotTileMgr);
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
@ -972,7 +972,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);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue