Fix sse alignment issues in linux.

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4443 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Spoike 2013-07-31 00:17:51 +00:00
parent 3099521350
commit ab2351a18f
2 changed files with 14 additions and 3 deletions

View File

@ -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

View File

@ -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;