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