diff --git a/engine/common/zone.c b/engine/common/zone.c index 95200ce3c..0c0d93f2d 100644 --- a/engine/common/zone.c +++ b/engine/common/zone.c @@ -189,7 +189,14 @@ void *Z_MallocNamed(int size, char *file, int line) #else void *ZF_Malloc(int size) { +#ifdef __linux__ + void *ret = NULL; + if (!posix_memalign(&ret, max(sizeof(float)*4, sizeof(void*)), size)) + memset(ret, 0, size); + return ret; +#else return calloc(size, 1); +#endif } void *Z_Malloc(int size) { @@ -437,7 +444,11 @@ void BZ_Free(void *data) typedef struct zonegroupblock_s { - struct zonegroupblock_s *next; + union + { + struct zonegroupblock_s *next; + vec4_t align16; + }; } zonegroupblock_t; #ifdef USE_MSVCRT_DEBUG diff --git a/engine/gl/gl_model.c b/engine/gl/gl_model.c index 0ffde7256..c8351ebe7 100644 --- a/engine/gl/gl_model.c +++ b/engine/gl/gl_model.c @@ -2495,7 +2495,8 @@ static void Mod_Batches_BuildModelMeshes(model_t *mod, int maxverts, int maxindi vbo.indicies.dummy = ZG_Malloc(&loadmodel->memgroup, sizeof(index_t) * maxindicies); vbo.coord.dummy = ZG_Malloc(&loadmodel->memgroup, (sizeof(vecV_t)+sizeof(vec2_t)*(1+styles)+sizeof(vec3_t)*3+sizeof(vec4_t))* maxverts); - vbo.texcoord.dummy = (vecV_t*)vbo.coord.dummy + maxverts; + vbo.colours.dummy = (vecV_t*)vbo.coord.dummy + maxverts; + vbo.texcoord.dummy = (vec4_t*)vbo.colours.dummy + maxverts; sty = 0; if (styles) { @@ -2509,7 +2510,6 @@ static void Mod_Batches_BuildModelMeshes(model_t *mod, int maxverts, int maxindi vbo.normals.dummy = styles?((vec2_t*)vbo.lmcoord[styles-1].dummy + maxverts):((vec2_t*)vbo.texcoord.dummy + maxverts); vbo.svector.dummy = (vec3_t*)vbo.normals.dummy + maxverts; vbo.tvector.dummy = (vec3_t*)vbo.svector.dummy + maxverts; - vbo.colours.dummy = (vec3_t*)vbo.tvector.dummy + maxverts; numindicies = 0; numverts = 0;