[Mesa-dev] [PATCH v2 12/19] swr: [rasterizer] rename _aligned_malloc to AlignedMalloc

Ian Romanick idr at freedesktop.org
Tue May 17 23:07:29 UTC 2016


Gallium already has os_malloc_aligned (in
src/gallium/auxiliary/os/os_memory_stdc.h) for this purpose.  Does this
duplication add anything?

On 05/17/2016 03:36 PM, Tim Rowley wrote:
> ---
>  src/gallium/drivers/swr/rasterizer/common/os.h       | 19 +++++++++++++++++--
>  src/gallium/drivers/swr/rasterizer/core/api.cpp      | 16 ++++++++--------
>  src/gallium/drivers/swr/rasterizer/core/arena.h      |  4 ++--
>  src/gallium/drivers/swr/rasterizer/core/frontend.cpp |  8 ++++----
>  src/gallium/drivers/swr/rasterizer/core/ringbuffer.h |  4 ++--
>  src/gallium/drivers/swr/rasterizer/core/tilemgr.cpp  |  2 +-
>  src/gallium/drivers/swr/rasterizer/core/tilemgr.h    |  4 ++--
>  src/gallium/drivers/swr/swr_screen.cpp               |  8 ++++----
>  8 files changed, 40 insertions(+), 25 deletions(-)
> 
> diff --git a/src/gallium/drivers/swr/rasterizer/common/os.h b/src/gallium/drivers/swr/rasterizer/common/os.h
> index 1d68585..8b15670 100644
> --- a/src/gallium/drivers/swr/rasterizer/common/os.h
> +++ b/src/gallium/drivers/swr/rasterizer/common/os.h
> @@ -49,6 +49,16 @@
>  
>  #define PRAGMA_WARNING_POP() __pragma(warning(pop))
>  
> +static inline void *AlignedMalloc(size_t _Size, size_t _Alignment)
> +{
> +    return _aligned_malloc(_Size, _Alignment);
> +}
> +
> +static inline void AlignedFree(void* p)
> +{
> +    return _aligned_free(p);
> +}
> +
>  #if defined(_WIN64)
>  #define BitScanReverseSizeT BitScanReverse64
>  #define BitScanForwardSizeT BitScanForward64
> @@ -155,7 +165,7 @@ unsigned char _BitScanReverse(unsigned int *Index, unsigned int Mask)
>  }
>  
>  inline
> -void *_aligned_malloc(unsigned int size, unsigned int alignment)
> +void *AlignedMalloc(unsigned int size, unsigned int alignment)
>  {
>      void *ret;
>      if (posix_memalign(&ret, alignment, size))
> @@ -171,12 +181,17 @@ unsigned char _bittest(const LONG *a, LONG b)
>      return ((*(unsigned *)(a) & (1 << b)) != 0);
>  }
>  
> +static inline
> +void AlignedFree(void* p)
> +{
> +    free(p);
> +}
> +
>  #define GetCurrentProcessId getpid
>  #define GetCurrentThreadId gettid
>  
>  #define CreateDirectory(name, pSecurity) mkdir(name, 0777)
>  
> -#define _aligned_free free
>  #define InterlockedCompareExchange(Dest, Exchange, Comparand) __sync_val_compare_and_swap(Dest, Comparand, Exchange)
>  #define InterlockedExchangeAdd(Addend, Value) __sync_fetch_and_add(Addend, Value)
>  #define InterlockedDecrement(Append) __sync_sub_and_fetch(Append, 1)
> diff --git a/src/gallium/drivers/swr/rasterizer/core/api.cpp b/src/gallium/drivers/swr/rasterizer/core/api.cpp
> index 3c25370..9d6f250 100644
> --- a/src/gallium/drivers/swr/rasterizer/core/api.cpp
> +++ b/src/gallium/drivers/swr/rasterizer/core/api.cpp
> @@ -57,7 +57,7 @@ HANDLE SwrCreateContext(
>      RDTSC_RESET();
>      RDTSC_INIT(0);
>  
> -    void* pContextMem = _aligned_malloc(sizeof(SWR_CONTEXT), KNOB_SIMD_WIDTH * 4);
> +    void* pContextMem = AlignedMalloc(sizeof(SWR_CONTEXT), KNOB_SIMD_WIDTH * 4);
>      memset(pContextMem, 0, sizeof(SWR_CONTEXT));
>      SWR_CONTEXT *pContext = new (pContextMem) SWR_CONTEXT();
>  
> @@ -67,8 +67,8 @@ HANDLE SwrCreateContext(
>      pContext->dcRing.Init(KNOB_MAX_DRAWS_IN_FLIGHT);
>      pContext->dsRing.Init(KNOB_MAX_DRAWS_IN_FLIGHT);
>  
> -    pContext->pMacroTileManagerArray = (MacroTileMgr*)_aligned_malloc(sizeof(MacroTileMgr) * KNOB_MAX_DRAWS_IN_FLIGHT, 64);
> -    pContext->pDispatchQueueArray = (DispatchQueue*)_aligned_malloc(sizeof(DispatchQueue) * KNOB_MAX_DRAWS_IN_FLIGHT, 64);
> +    pContext->pMacroTileManagerArray = (MacroTileMgr*)AlignedMalloc(sizeof(MacroTileMgr) * KNOB_MAX_DRAWS_IN_FLIGHT, 64);
> +    pContext->pDispatchQueueArray = (DispatchQueue*)AlignedMalloc(sizeof(DispatchQueue) * KNOB_MAX_DRAWS_IN_FLIGHT, 64);
>  
>      for (uint32_t dc = 0; dc < KNOB_MAX_DRAWS_IN_FLIGHT; ++dc)
>      {
> @@ -110,7 +110,7 @@ HANDLE SwrCreateContext(
>              MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE,
>              numaNode);
>  #else
> -        pContext->pScratch[i] = (uint8_t*)_aligned_malloc(32 * sizeof(KILOBYTE), KNOB_SIMD_WIDTH * 4);
> +        pContext->pScratch[i] = (uint8_t*)AlignedMalloc(32 * sizeof(KILOBYTE), KNOB_SIMD_WIDTH * 4);
>  #endif
>      }
>  
> @@ -152,8 +152,8 @@ void SwrDestroyContext(HANDLE hContext)
>          pContext->pDispatchQueueArray[i].~DispatchQueue();
>      }
>  
> -    _aligned_free(pContext->pDispatchQueueArray);
> -    _aligned_free(pContext->pMacroTileManagerArray);
> +    AlignedFree(pContext->pDispatchQueueArray);
> +    AlignedFree(pContext->pMacroTileManagerArray);
>  
>      // Free scratch space.
>      for (uint32_t i = 0; i < pContext->NumWorkerThreads; ++i)
> @@ -161,14 +161,14 @@ void SwrDestroyContext(HANDLE hContext)
>  #if defined(_WIN32)
>          VirtualFree(pContext->pScratch[i], 0, MEM_RELEASE);
>  #else
> -        _aligned_free(pContext->pScratch[i]);
> +        AlignedFree(pContext->pScratch[i]);
>  #endif
>      }
>  
>      delete(pContext->pHotTileMgr);
>  
>      pContext->~SWR_CONTEXT();
> -    _aligned_free((SWR_CONTEXT*)hContext);
> +    AlignedFree((SWR_CONTEXT*)hContext);
>  }
>  
>  void CopyState(DRAW_STATE& dst, const DRAW_STATE& src)
> diff --git a/src/gallium/drivers/swr/rasterizer/core/arena.h b/src/gallium/drivers/swr/rasterizer/core/arena.h
> index 26785db..1db0972 100644
> --- a/src/gallium/drivers/swr/rasterizer/core/arena.h
> +++ b/src/gallium/drivers/swr/rasterizer/core/arena.h
> @@ -54,7 +54,7 @@ public:
>      {
>          SWR_ASSUME_ASSERT(size >= sizeof(ArenaBlock));
>  
> -        ArenaBlock* p = new (_aligned_malloc(size, align)) ArenaBlock();
> +        ArenaBlock* p = new (AlignedMalloc(size, align)) ArenaBlock();
>          p->blockSize = size;
>          return p;
>      }
> @@ -64,7 +64,7 @@ public:
>          if (pMem)
>          {
>              SWR_ASSUME_ASSERT(pMem->blockSize < size_t(0xdddddddd));
> -            _aligned_free(pMem);
> +            AlignedFree(pMem);
>          }
>      }
>  };
> diff --git a/src/gallium/drivers/swr/rasterizer/core/frontend.cpp b/src/gallium/drivers/swr/rasterizer/core/frontend.cpp
> index 6bb9b12..d6643c6 100644
> --- a/src/gallium/drivers/swr/rasterizer/core/frontend.cpp
> +++ b/src/gallium/drivers/swr/rasterizer/core/frontend.cpp
> @@ -946,7 +946,7 @@ static void AllocateTessellationData(SWR_CONTEXT* pContext)
>      if (gt_pTessellationThreadData == nullptr)
>      {
>          gt_pTessellationThreadData = (TessellationThreadLocalData*)
> -            _aligned_malloc(sizeof(TessellationThreadLocalData), 64);
> +            AlignedMalloc(sizeof(TessellationThreadLocalData), 64);
>          memset(gt_pTessellationThreadData, 0, sizeof(*gt_pTessellationThreadData));
>      }
>  }
> @@ -985,7 +985,7 @@ static void TessellationStages(
>          gt_pTessellationThreadData->tsCtxSize);
>      if (tsCtx == nullptr)
>      {
> -        gt_pTessellationThreadData->pTxCtx = _aligned_malloc(gt_pTessellationThreadData->tsCtxSize, 64);
> +        gt_pTessellationThreadData->pTxCtx = AlignedMalloc(gt_pTessellationThreadData->tsCtxSize, 64);
>          tsCtx = TSInitCtx(
>              tsState.domain,
>              tsState.partitioning,
> @@ -1063,8 +1063,8 @@ static void TessellationStages(
>          size_t requiredAllocSize = sizeof(simdvector) * requiredDSOutputVectors;
>          if (requiredDSOutputVectors > gt_pTessellationThreadData->numDSOutputVectors)
>          {
> -            _aligned_free(gt_pTessellationThreadData->pDSOutput);
> -            gt_pTessellationThreadData->pDSOutput = (simdscalar*)_aligned_malloc(requiredAllocSize, 64);
> +            AlignedFree(gt_pTessellationThreadData->pDSOutput);
> +            gt_pTessellationThreadData->pDSOutput = (simdscalar*)AlignedMalloc(requiredAllocSize, 64);
>              gt_pTessellationThreadData->numDSOutputVectors = requiredDSOutputVectors;
>          }
>          SWR_ASSERT(gt_pTessellationThreadData->pDSOutput);
> diff --git a/src/gallium/drivers/swr/rasterizer/core/ringbuffer.h b/src/gallium/drivers/swr/rasterizer/core/ringbuffer.h
> index d8eb50a..b9076de 100644
> --- a/src/gallium/drivers/swr/rasterizer/core/ringbuffer.h
> +++ b/src/gallium/drivers/swr/rasterizer/core/ringbuffer.h
> @@ -47,14 +47,14 @@ public:
>      {
>          SWR_ASSERT(numEntries > 0);
>          mNumEntries = numEntries;
> -        mpRingBuffer = (T*)_aligned_malloc(sizeof(T)*numEntries, 64);
> +        mpRingBuffer = (T*)AlignedMalloc(sizeof(T)*numEntries, 64);
>          SWR_ASSERT(mpRingBuffer != nullptr);
>          memset(mpRingBuffer, 0, sizeof(T)*numEntries);
>      }
>  
>      void Destroy()
>      {
> -        _aligned_free(mpRingBuffer);
> +        AlignedFree(mpRingBuffer);
>          mpRingBuffer = nullptr;
>      }
>  
> diff --git a/src/gallium/drivers/swr/rasterizer/core/tilemgr.cpp b/src/gallium/drivers/swr/rasterizer/core/tilemgr.cpp
> index 87d9f42..e0aa8dd 100644
> --- a/src/gallium/drivers/swr/rasterizer/core/tilemgr.cpp
> +++ b/src/gallium/drivers/swr/rasterizer/core/tilemgr.cpp
> @@ -181,7 +181,7 @@ HOTTILE* HotTileMgr::GetHotTileNoLoad(
>          if (create)
>          {
>              uint32_t size = numSamples * mHotTileSize[attachment];
> -            hotTile.pBuffer = (uint8_t*)_aligned_malloc(size, KNOB_SIMD_WIDTH * 4);
> +            hotTile.pBuffer = (uint8_t*)AlignedMalloc(size, KNOB_SIMD_WIDTH * 4);
>              hotTile.state = HOTTILE_INVALID;
>              hotTile.numSamples = numSamples;
>              hotTile.renderTargetArrayIndex = 0;
> diff --git a/src/gallium/drivers/swr/rasterizer/core/tilemgr.h b/src/gallium/drivers/swr/rasterizer/core/tilemgr.h
> index 82a15e1..41d29ba 100644
> --- a/src/gallium/drivers/swr/rasterizer/core/tilemgr.h
> +++ b/src/gallium/drivers/swr/rasterizer/core/tilemgr.h
> @@ -313,7 +313,7 @@ private:
>          HANDLE hProcess = GetCurrentProcess();
>          p = VirtualAllocExNuma(hProcess, nullptr, size, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE, numaNode);
>  #else
> -        p = _aligned_malloc(size, align);
> +        p = AlignedMalloc(size, align);
>  #endif
>  
>          return p;
> @@ -326,7 +326,7 @@ private:
>  #if defined(_WIN32)
>              VirtualFree(pBuffer, 0, MEM_RELEASE);
>  #else
> -            _aligned_free(pBuffer);
> +            AlignedFree(pBuffer);
>  #endif
>          }
>      }
> diff --git a/src/gallium/drivers/swr/swr_screen.cpp b/src/gallium/drivers/swr/swr_screen.cpp
> index 3d280e3..90ad220 100644
> --- a/src/gallium/drivers/swr/swr_screen.cpp
> +++ b/src/gallium/drivers/swr/swr_screen.cpp
> @@ -558,7 +558,7 @@ swr_texture_layout(struct swr_screen *screen,
>     res->swr.pitch = res->row_stride[0];
>  
>     if (allocate) {
> -      res->swr.pBaseAddress = (uint8_t *)_aligned_malloc(total_size, 64);
> +      res->swr.pBaseAddress = (uint8_t *)AlignedMalloc(total_size, 64);
>  
>        if (res->has_depth && res->has_stencil) {
>           SWR_FORMAT_INFO finfo = GetFormatInfo(res->secondary.format);
> @@ -571,7 +571,7 @@ swr_texture_layout(struct swr_screen *screen,
>           res->secondary.numSamples = (1 << pt->nr_samples);
>           res->secondary.pitch = res->alignedWidth * finfo.Bpp;
>  
> -         res->secondary.pBaseAddress = (uint8_t *)_aligned_malloc(
> +         res->secondary.pBaseAddress = (uint8_t *)AlignedMalloc(
>              res->alignedHeight * res->secondary.pitch, 64);
>        }
>     }
> @@ -663,9 +663,9 @@ swr_resource_destroy(struct pipe_screen *p_screen, struct pipe_resource *pt)
>        struct sw_winsys *winsys = screen->winsys;
>        winsys->displaytarget_destroy(winsys, spr->display_target);
>     } else
> -      _aligned_free(spr->swr.pBaseAddress);
> +      AlignedFree(spr->swr.pBaseAddress);
>  
> -   _aligned_free(spr->secondary.pBaseAddress);
> +   AlignedFree(spr->secondary.pBaseAddress);
>  
>     FREE(spr);
>  }
> 



More information about the mesa-dev mailing list