r409 - trunk/code/renderer
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Sun Dec 4 09:23:46 EST 2005
Author: icculus
Date: 2005-12-04 09:23:46 -0500 (Sun, 04 Dec 2005)
New Revision: 409
Modified:
trunk/code/renderer/tr_local.h
trunk/code/renderer/tr_surface.c
Log:
Fixed Altivec-based mesh rendering.
Modified: trunk/code/renderer/tr_local.h
===================================================================
--- trunk/code/renderer/tr_local.h 2005-12-03 16:36:45 UTC (rev 408)
+++ trunk/code/renderer/tr_local.h 2005-12-04 14:23:46 UTC (rev 409)
@@ -1273,18 +1273,25 @@
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;
Modified: trunk/code/renderer/tr_surface.c
===================================================================
--- trunk/code/renderer/tr_surface.c 2005-12-03 16:36:45 UTC (rev 408)
+++ trunk/code/renderer/tr_surface.c 2005-12-04 14:23:46 UTC (rev 409)
@@ -615,8 +615,10 @@
{
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(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 );
}
More information about the quake3-commits
mailing list