[Mesa-dev] [PATCH 2/6] mesa: inline _mesa_align_{re, c}alloc into their only users
Emil Velikov
emil.l.velikov at gmail.com
Fri Mar 6 08:32:51 PST 2015
Signed-off-by: Emil Velikov <emil.l.velikov at gmail.com>
---
src/mesa/main/imports.c | 74 +--------------------------------------
src/mesa/main/imports.h | 7 ----
src/mesa/program/prog_parameter.c | 18 +++++++---
src/mesa/tnl/t_vertex.c | 5 ++-
4 files changed, 18 insertions(+), 86 deletions(-)
diff --git a/src/mesa/main/imports.c b/src/mesa/main/imports.c
index a7ffe22..5961587 100644
--- a/src/mesa/main/imports.c
+++ b/src/mesa/main/imports.c
@@ -115,57 +115,7 @@ _mesa_align_malloc(size_t bytes, unsigned long alignment)
}
/**
- * Same as _mesa_align_malloc(), but using calloc(1, ) instead of
- * malloc()
- */
-void *
-_mesa_align_calloc(size_t bytes, unsigned long alignment)
-{
-#if defined(HAVE_POSIX_MEMALIGN)
- void *mem;
-
- mem = _mesa_align_malloc(bytes, alignment);
- if (mem != NULL) {
- (void) memset(mem, 0, bytes);
- }
-
- return mem;
-#elif defined(_WIN32) && defined(_MSC_VER)
- void *mem;
-
- mem = _aligned_malloc(bytes, alignment);
- if (mem != NULL) {
- (void) memset(mem, 0, bytes);
- }
-
- return mem;
-#else
- uintptr_t ptr, buf;
-
- assert( alignment > 0 );
-
- ptr = (uintptr_t)calloc(1, bytes + alignment + sizeof(void *));
- if (!ptr)
- return NULL;
-
- buf = (ptr + alignment + sizeof(void *)) & ~(uintptr_t)(alignment - 1);
- *(uintptr_t *)(buf - sizeof(void *)) = ptr;
-
-#ifdef DEBUG
- /* mark the non-aligned area */
- while ( ptr < buf - sizeof(void *) ) {
- *(unsigned long *)ptr = 0xcdcdcdcd;
- ptr += sizeof(unsigned long);
- }
-#endif
-
- return (void *)buf;
-#endif /* defined(HAVE_POSIX_MEMALIGN) */
-}
-
-/**
- * Free memory which was allocated with either _mesa_align_malloc()
- * or _mesa_align_calloc().
+ * Free memory which was allocated with either _mesa_align_malloc().
* \param ptr pointer to the memory to be freed.
* The actual address to free is stored in the word immediately before the
* address the client sees.
@@ -188,28 +138,6 @@ _mesa_align_free(void *ptr)
#endif /* defined(HAVE_POSIX_MEMALIGN) */
}
-/**
- * Reallocate memory, with alignment.
- */
-void *
-_mesa_align_realloc(void *oldBuffer, size_t oldSize, size_t newSize,
- unsigned long alignment)
-{
-#if defined(_WIN32) && defined(_MSC_VER)
- (void) oldSize;
- return _aligned_realloc(oldBuffer, newSize, alignment);
-#else
- const size_t copySize = (oldSize < newSize) ? oldSize : newSize;
- void *newBuf = _mesa_align_malloc(newSize, alignment);
- if (newBuf && oldBuffer && copySize > 0) {
- memcpy(newBuf, oldBuffer, copySize);
- }
-
- _mesa_align_free(oldBuffer);
- return newBuf;
-#endif
-}
-
/*@}*/
diff --git a/src/mesa/main/imports.h b/src/mesa/main/imports.h
index 7921000..a3767fd 100644
--- a/src/mesa/main/imports.h
+++ b/src/mesa/main/imports.h
@@ -363,17 +363,10 @@ _mesa_little_endian(void)
extern void *
_mesa_align_malloc( size_t bytes, unsigned long alignment );
-extern void *
-_mesa_align_calloc( size_t bytes, unsigned long alignment );
-
extern void
_mesa_align_free( void *ptr );
extern void *
-_mesa_align_realloc(void *oldBuffer, size_t oldSize, size_t newSize,
- unsigned long alignment);
-
-extern void *
_mesa_exec_malloc( GLuint size );
extern void
diff --git a/src/mesa/program/prog_parameter.c b/src/mesa/program/prog_parameter.c
index 5939f6f..edb5389 100644
--- a/src/mesa/program/prog_parameter.c
+++ b/src/mesa/program/prog_parameter.c
@@ -116,19 +116,27 @@ _mesa_add_parameter(struct gl_program_parameter_list *paramList,
assert(size > 0);
if (oldNum + sz4 > paramList->Size) {
+ size_t newSize, copySize;
+ void *newBuf;
+
/* Need to grow the parameter list array (alloc some extra) */
paramList->Size = paramList->Size + 4 * sz4;
+ newSize = paramList->Size * 4 * sizeof(gl_constant_value);
+ copySize = MIN2(oldNum * 4 * sizeof(gl_constant_value), newSize);
+
/* realloc arrays */
paramList->Parameters =
realloc(paramList->Parameters,
paramList->Size * sizeof(struct gl_program_parameter));
- paramList->ParameterValues = (gl_constant_value (*)[4])
- _mesa_align_realloc(paramList->ParameterValues, /* old buf */
- oldNum * 4 * sizeof(gl_constant_value),/* old sz */
- paramList->Size*4*sizeof(gl_constant_value),/*new*/
- 16);
+ newBuf = _mesa_align_malloc(newSize, 16);
+ if (newBuf && paramList->ParameterValues && copySize > 0) {
+ memcpy(newBuf, paramList->ParameterValues, copySize);
+ }
+
+ _mesa_align_free(paramList->ParameterValues);
+ paramList->ParameterValues = (gl_constant_value (*)[4]) newBuf;
}
if (!paramList->Parameters ||
diff --git a/src/mesa/tnl/t_vertex.c b/src/mesa/tnl/t_vertex.c
index 369d6d9..607977c 100644
--- a/src/mesa/tnl/t_vertex.c
+++ b/src/mesa/tnl/t_vertex.c
@@ -26,6 +26,7 @@
*/
#include <stdio.h>
+#include <string.h>
#include "main/glheader.h"
#include "main/context.h"
#include "main/colormac.h"
@@ -509,9 +510,11 @@ void _tnl_init_vertices( struct gl_context *ctx,
vtx->need_extras = GL_TRUE;
if (max_vertex_size > vtx->max_vertex_size) {
+ const size_t total_vb_size = vb_size * max_vertex_size;
_tnl_free_vertices( ctx );
vtx->max_vertex_size = max_vertex_size;
- vtx->vertex_buf = _mesa_align_calloc(vb_size * max_vertex_size, 32 );
+ vtx->vertex_buf =
+ memset(_mesa_align_malloc(total_vb_size, 32), 0, total_vb_size);
invalidate_funcs(vtx);
}
--
2.1.3
More information about the mesa-dev
mailing list