diff options
author | icculus <icculus@edf5b092-35ff-0310-97b2-ce42778d08ea> | 2005-12-04 14:23:46 +0000 |
---|---|---|
committer | icculus <icculus@edf5b092-35ff-0310-97b2-ce42778d08ea> | 2005-12-04 14:23:46 +0000 |
commit | 743a8fd50fc698f7a45cf54c89943231cd11b5f3 (patch) | |
tree | a2ba302ee38f572a91bdc3c8c24e225afa2711a9 /code | |
parent | 88dea72cd721b219c24efabec399eafde6ef37ca (diff) | |
download | ioquake3-aero-743a8fd50fc698f7a45cf54c89943231cd11b5f3.tar.gz ioquake3-aero-743a8fd50fc698f7a45cf54c89943231cd11b5f3.zip |
Fixed Altivec-based mesh rendering.
git-svn-id: svn://svn.icculus.org/quake3/trunk@409 edf5b092-35ff-0310-97b2-ce42778d08ea
Diffstat (limited to 'code')
-rw-r--r-- | code/renderer/tr_local.h | 23 | ||||
-rw-r--r-- | code/renderer/tr_surface.c | 15 |
2 files changed, 19 insertions, 19 deletions
diff --git a/code/renderer/tr_local.h b/code/renderer/tr_local.h index 0ff0157..646cc6f 100644 --- a/code/renderer/tr_local.h +++ b/code/renderer/tr_local.h @@ -1273,18 +1273,25 @@ typedef struct stageVars vec2_t texcoords[NUM_TEXTURE_BUNDLES][SHADER_MAX_VERTEXES]; } stageVars_t; + +#ifdef __GNUC__ +#define ALIGN16 __attribute__((aligned(16))) +#else +#define ALIGN16 +#endif + typedef struct shaderCommands_s { - glIndex_t indexes[SHADER_MAX_INDEXES]; - vec4_t xyz[SHADER_MAX_VERTEXES]; - vec4_t normal[SHADER_MAX_VERTEXES]; - vec2_t texCoords[SHADER_MAX_VERTEXES][2]; - color4ub_t vertexColors[SHADER_MAX_VERTEXES]; - int vertexDlightBits[SHADER_MAX_VERTEXES]; + glIndex_t indexes[SHADER_MAX_INDEXES] ALIGN16; + vec4_t xyz[SHADER_MAX_VERTEXES] ALIGN16; + vec4_t normal[SHADER_MAX_VERTEXES] ALIGN16; + vec2_t texCoords[SHADER_MAX_VERTEXES][2] ALIGN16; + color4ub_t vertexColors[SHADER_MAX_VERTEXES] ALIGN16; + int vertexDlightBits[SHADER_MAX_VERTEXES] ALIGN16; - stageVars_t svars; + stageVars_t svars ALIGN16; - color4ub_t constantColor255[SHADER_MAX_VERTEXES]; + color4ub_t constantColor255[SHADER_MAX_VERTEXES] ALIGN16; shader_t *shader; float shaderTime; diff --git a/code/renderer/tr_surface.c b/code/renderer/tr_surface.c index 04e26d1..cb535fd 100644 --- a/code/renderer/tr_surface.c +++ b/code/renderer/tr_surface.c @@ -615,8 +615,10 @@ static void LerpMeshVertexes_altivec(md3Surface_t *surf, float backlerp) { short *oldXyz, *newXyz, *oldNormals, *newNormals; float *outXyz, *outNormal; - float oldXyzScale, newXyzScale; - float oldNormalScale, newNormalScale; + float oldXyzScale ALIGN16; + float newXyzScale ALIGN16; + float oldNormalScale ALIGN16; + float newNormalScale ALIGN16; int vertNum; unsigned lat, lng; int numVerts; @@ -839,20 +841,11 @@ static void LerpMeshVertexes_scalar(md3Surface_t *surf, float backlerp) static void LerpMeshVertexes(md3Surface_t *surf, float backlerp) { #if idppc_altivec - // !!! FIXME: figure out what's broken and remove this. -#ifndef NDEBUG - static int already_complained = 0; - if (!already_complained) { - already_complained = 1; - Com_Printf("WARNING! FIXME! Altivec mesh lerping broken in debug builds!\n"); - } -#else if (com_altivec->integer) { // must be in a seperate function or G3 systems will crash. LerpMeshVertexes_altivec( surf, backlerp ); return; } -#endif #endif // idppc_altivec LerpMeshVertexes_scalar( surf, backlerp ); } |