When available, which is most of the time, use posix_memalign to implement
authorIan Romanick <idr@us.ibm.com>
Wed, 16 Aug 2006 17:06:08 +0000 (17:06 +0000)
committerIan Romanick <idr@us.ibm.com>
Wed, 16 Aug 2006 17:06:08 +0000 (17:06 +0000)
_mesa_align_malloc and friends.

configs/freebsd
configs/freebsd-dri
configs/linux
configs/linux-dri
configs/linux-dri-xcb
configs/linux-indirect
configs/linux-solo
configs/linux-sparc
src/mesa/main/imports.c

index f7f967169b4d2a00e49641e5c779e037f6628838..38806ab946d6b2be08292a0dec6cd176d27f7930 100644 (file)
@@ -15,7 +15,8 @@ COPY_LIBS = cp -f
 OPT_FLAGS  = -O2
 PIC_FLAGS  = -fPIC
 
-DEFINES = -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_BSD_SOURCE -DUSE_XSHM -DHZ=100
+DEFINES = -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_BSD_SOURCE -DUSE_XSHM \
+       -DHZ=100 -DHAVE_POSIX_MEMALIGN
 
 X11_INCLUDES = -I/usr/X11R6/include
 
index 525ebd08b7e99c84f9205e0a0282f16b4adf858b..104e242289c94c0db41b3e793173e161f4c72766 100644 (file)
@@ -14,7 +14,7 @@ OPT_FLAGS = -O
 EXPAT_INCLUDES = -I/usr/local/include
 X11_INCLUDES = -I/usr/X11R6/include
 DEFINES = -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER \
-       -DGLX_DIRECT_RENDERING -DHAVE_ALIAS
+       -DGLX_DIRECT_RENDERING -DHAVE_ALIAS -DHAVE_POSIX_MEMALIGN
 
 CFLAGS = -Wmissing-prototypes -g -std=c99 -Wundef -fPIC -ffast-math \
        $(ASM_FLAGS) $(X11_INCLUDES) $(DEFINES)
index 2526bb7ebc5fa6cf2f27b59c3de9e77770e84cb9..6736f14e0d41c5804160a45d815cd4b23c06811f 100644 (file)
@@ -17,7 +17,7 @@ PIC_FLAGS  = -fPIC
 ARCH_FLAGS ?=
 
 DEFINES = -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE \
-       -D_BSD_SOURCE -DPTHREADS -DUSE_XSHM
+       -D_BSD_SOURCE -DPTHREADS -DUSE_XSHM -DHAVE_POSIX_MEMALIGN
 
 X11_INCLUDES = -I/usr/X11R6/include
 
index 2a2b9e3f2ce0f6e39292aebbc893a867cd19d9ae..1c3b404cf3a2d00b0081a21d6dc655eecfa73e29 100644 (file)
@@ -22,7 +22,7 @@ ARCH_FLAGS ?=
 DEFINES = -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE \
        -D_BSD_SOURCE -D_GNU_SOURCE \
        -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER \
-       -DGLX_DIRECT_RENDERING -DHAVE_ALIAS
+       -DGLX_DIRECT_RENDERING -DHAVE_ALIAS -DHAVE_POSIX_MEMALIGN
 
 X11_INCLUDES = -I/usr/X11R6/include
 
index 17270601b25649c27d3fed7ffdaf63af044023dd..68acb2f2b16333e24cbe76076f08fd28277a0360 100644 (file)
@@ -22,7 +22,7 @@ ARCH_FLAGS ?=
 DEFINES = -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE \
        -D_BSD_SOURCE -D_GNU_SOURCE \
        -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER \
-       -DGLX_DIRECT_RENDERING -DHAVE_ALIAS -DUSE_XCB
+       -DGLX_DIRECT_RENDERING -DHAVE_ALIAS -DUSE_XCB -DHAVE_POSIX_MEMALIGN
 
 X11_INCLUDES = `pkg-config --cflags-only-I x11` `pkg-config --cflags-only-I xcb` `pkg-config --cflags-only-I xcb-glx`
 
index 21546b68dc82e6a4acbfbf63787459d688b737dd..b764515786dd2c8e17c33e95a4e31631c46341ce 100644 (file)
@@ -23,7 +23,7 @@ ARCH_FLAGS ?=
 
 DEFINES = -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE \
        -D_BSD_SOURCE -D_GNU_SOURCE \
-       -DPTHREADS -DHAVE_ALIAS
+       -DPTHREADS -DHAVE_ALIAS -DHAVE_POSIX_MEMALIGN
 
 X11_INCLUDES = -I/usr/X11R6/include
 
index 112cdd2864943764061efa5ee68c5f9f7ae31615..730c245d90eb447e0dfc5bb44abeac72cf2ba0cd 100644 (file)
@@ -16,7 +16,7 @@ PIC_FLAGS  = -fPIC
 ARCH_FLAGS ?=
 
 DEFINES = -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE \
-       -D_BSD_SOURCE -D_GNU_SOURCE \
+       -D_BSD_SOURCE -D_GNU_SOURCE -DHAVE_POSIX_MEMALIGN \
        -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1 -DDRM_USE_MALLOC -DIN_DRI_DRIVER
 
 CFLAGS   = $(WARN_FLAGS) $(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(DEFINES) \
index e3bc9eb3d694ccce260f10d3586b24dc4ae699ed..d9552e8d89b3b2eaa05ceba148c5b52032dc9d3b 100644 (file)
@@ -12,7 +12,7 @@ WARN_FLAGS = -Wall
 OPT_FLAGS  = -O2
 PIC_FLAGS  = -fPIC
 
-DEFINES = -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM
+DEFINES = -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -DHAVE_POSIX_MEMALIGN
 
 X11_INCLUDES = -I/usr/X11R6/include
 
index b506f856a699ee8af54eefbdbb0938a9a71e0a3d..08f44a8f88aafc878ffa47edd2c4c29f17f2c6a3 100644 (file)
@@ -131,6 +131,12 @@ _mesa_free(void *ptr)
 void *
 _mesa_align_malloc(size_t bytes, unsigned long alignment)
 {
+#if defined(HAVE_POSIX_MEMALIGN) && !(defined(XFree86LOADER) && defined(IN_MODULE))
+   void *mem;
+
+   (void) posix_memalign(& mem, alignment, bytes);
+   return mem;
+#else
    uintptr_t ptr, buf;
 
    ASSERT( alignment > 0 );
@@ -151,6 +157,7 @@ _mesa_align_malloc(size_t bytes, unsigned long alignment)
 #endif
 
    return (void *) buf;
+#endif /* defined(HAVE_POSIX_MEMALIGN) && !(defined(XFree86LOADER) && defined(IN_MODULE)) */
 }
 
 /**
@@ -160,6 +167,16 @@ _mesa_align_malloc(size_t bytes, unsigned long alignment)
 void *
 _mesa_align_calloc(size_t bytes, unsigned long alignment)
 {
+#if defined(HAVE_POSIX_MEMALIGN) && !(defined(XFree86LOADER) && defined(IN_MODULE))
+   void *mem;
+   
+   mem = _mesa_align_malloc(bytes, alignment);
+   if (mem != NULL) {
+      (void) memset(mem, 0, bytes);
+   }
+
+   return mem;
+#else
    uintptr_t ptr, buf;
 
    ASSERT( alignment > 0 );
@@ -180,6 +197,7 @@ _mesa_align_calloc(size_t bytes, unsigned long alignment)
 #endif
 
    return (void *)buf;
+#endif /* defined(HAVE_POSIX_MEMALIGN) && !(defined(XFree86LOADER) && defined(IN_MODULE)) */
 }
 
 /**
@@ -192,13 +210,13 @@ _mesa_align_calloc(size_t bytes, unsigned long alignment)
 void
 _mesa_align_free(void *ptr)
 {
-#if 0
-   _mesa_free( (void *)(*(unsigned long *)((unsigned long)ptr - sizeof(void *))) );
+#if defined(HAVE_POSIX_MEMALIGN) && !(defined(XFree86LOADER) && defined(IN_MODULE))
+   free(ptr);
 #else
    void **cubbyHole = (void **) ((char *) ptr - sizeof(void *));
    void *realAddr = *cubbyHole;
    _mesa_free(realAddr);
-#endif
+#endif /* defined(HAVE_POSIX_MEMALIGN) && !(defined(XFree86LOADER) && defined(IN_MODULE)) */
 }
 
 /**