mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 20:38:06 +02:00
Move align_malloc(), align_free() to p_util.h
This commit is contained in:
parent
9f0e5642d8
commit
5b8b542cb2
2 changed files with 51 additions and 44 deletions
|
|
@ -30,6 +30,8 @@
|
|||
|
||||
#include "p_compiler.h"
|
||||
#include <math.h>
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
#ifdef WIN32
|
||||
|
||||
|
|
@ -93,7 +95,7 @@ REALLOC( void *old_ptr, unsigned old_size, unsigned new_size )
|
|||
|
||||
#define GETENV( X ) NULL
|
||||
|
||||
#else // WIN32
|
||||
#else /* WIN32 */
|
||||
|
||||
#define MALLOC( SIZE ) malloc( SIZE )
|
||||
|
||||
|
|
@ -105,10 +107,56 @@ REALLOC( void *old_ptr, unsigned old_size, unsigned new_size )
|
|||
|
||||
#define GETENV( X ) getenv( X )
|
||||
|
||||
#endif // WIN32
|
||||
#endif /* WIN32 */
|
||||
|
||||
#define CALLOC_STRUCT(T) (struct T *) CALLOC(1, sizeof(struct T))
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Return memory on given byte alignment
|
||||
*/
|
||||
static INLINE void *
|
||||
align_malloc(size_t bytes, unsigned long alignment)
|
||||
{
|
||||
#if defined(HAVE_POSIX_MEMALIGN)
|
||||
void *mem;
|
||||
|
||||
(void) posix_memalign(& mem, alignment, bytes);
|
||||
return mem;
|
||||
#else
|
||||
uintptr_t ptr, buf;
|
||||
|
||||
assert( alignment > 0 );
|
||||
|
||||
ptr = (uintptr_t) MALLOC(bytes + alignment + sizeof(void *));
|
||||
if (!ptr)
|
||||
return NULL;
|
||||
|
||||
buf = (ptr + alignment + sizeof(void *)) & ~(uintptr_t)(alignment - 1);
|
||||
*(uintptr_t *)(buf - sizeof(void *)) = ptr;
|
||||
|
||||
return (void *) buf;
|
||||
#endif /* defined(HAVE_POSIX_MEMALIGN) */
|
||||
}
|
||||
|
||||
/**
|
||||
* Free memory returned by align_malloc().
|
||||
*/
|
||||
static INLINE void
|
||||
align_free(void *ptr)
|
||||
{
|
||||
#if defined(HAVE_POSIX_MEMALIGN)
|
||||
FREE(ptr);
|
||||
#else
|
||||
void **cubbyHole = (void **) ((char *) ptr - sizeof(void *));
|
||||
void *realAddr = *cubbyHole;
|
||||
FREE(realAddr);
|
||||
#endif /* defined(HAVE_POSIX_MEMALIGN) */
|
||||
}
|
||||
|
||||
|
||||
|
||||
#define CLAMP( X, MIN, MAX ) ( (X)<(MIN) ? (MIN) : ((X)>(MAX) ? (MAX) : (X)) )
|
||||
#define MIN2( A, B ) ( (A)<(B) ? (A) : (B) )
|
||||
#define MAX2( A, B ) ( (A)>(B) ? (A) : (B) )
|
||||
|
|
|
|||
|
|
@ -35,11 +35,11 @@
|
|||
|
||||
#include "glxheader.h"
|
||||
#include "xmesaP.h"
|
||||
#include "main/macros.h"
|
||||
|
||||
#include "pipe/p_winsys.h"
|
||||
#include "pipe/p_format.h"
|
||||
#include "pipe/p_context.h"
|
||||
#include "pipe/p_util.h"
|
||||
#include "pipe/softpipe/sp_winsys.h"
|
||||
|
||||
#ifdef GALLIUM_CELL
|
||||
|
|
@ -49,47 +49,6 @@
|
|||
#include "xm_winsys_aub.h"
|
||||
|
||||
|
||||
/** XXX from Mesa core */
|
||||
static void *
|
||||
align_malloc(size_t bytes, unsigned long alignment)
|
||||
{
|
||||
#if defined(HAVE_POSIX_MEMALIGN)
|
||||
void *mem;
|
||||
|
||||
(void) posix_memalign(& mem, alignment, bytes);
|
||||
return mem;
|
||||
#else
|
||||
uintptr_t ptr, buf;
|
||||
|
||||
assert( alignment > 0 );
|
||||
|
||||
ptr = (uintptr_t) malloc(bytes + alignment + sizeof(void *));
|
||||
if (!ptr)
|
||||
return NULL;
|
||||
|
||||
buf = (ptr + alignment + sizeof(void *)) & ~(uintptr_t)(alignment - 1);
|
||||
*(uintptr_t *)(buf - sizeof(void *)) = ptr;
|
||||
|
||||
return (void *) buf;
|
||||
#endif /* defined(HAVE_POSIX_MEMALIGN) */
|
||||
}
|
||||
|
||||
|
||||
/** XXX from Mesa core */
|
||||
static void
|
||||
align_free(void *ptr)
|
||||
{
|
||||
#if defined(HAVE_POSIX_MEMALIGN)
|
||||
free(ptr);
|
||||
#else
|
||||
void **cubbyHole = (void **) ((char *) ptr - sizeof(void *));
|
||||
void *realAddr = *cubbyHole;
|
||||
free(realAddr);
|
||||
#endif /* defined(HAVE_POSIX_MEMALIGN) */
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Low-level OS/window system memory buffer
|
||||
*/
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue