summaryrefslogtreecommitdiff
path: root/indra/newview/llviewerjointmesh.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llviewerjointmesh.h')
-rw-r--r--indra/newview/llviewerjointmesh.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/indra/newview/llviewerjointmesh.h b/indra/newview/llviewerjointmesh.h
index b6fd8afcdb..992c3656a1 100644
--- a/indra/newview/llviewerjointmesh.h
+++ b/indra/newview/llviewerjointmesh.h
@@ -126,6 +126,22 @@ public:
/*virtual*/ BOOL isAnimatable() { return FALSE; }
void writeCAL3D(apr_file_t* fp, S32 material_num, LLCharacter* characterp);
+
+ // Avatar vertex skinning is a significant performance issue on computers
+ // with avatar vertex programs turned off (for example, most Macs). We
+ // therefore have custom versions that use SIMD instructions.
+ //
+ // These functions require compiler options for SSE2, SSE, or neither, and
+ // hence are contained in separate individual .cpp files. JC
+ static void updateGeometryOriginal(LLFace* face, LLPolyMesh* mesh);
+ // generic vector code, used for Altivec
+ static void updateGeometryVectorized(LLFace* face, LLPolyMesh* mesh);
+ static void updateGeometrySSE(LLFace* face, LLPolyMesh* mesh);
+ static void updateGeometrySSE2(LLFace* face, LLPolyMesh* mesh);
+
+ // Use a fuction pointer to indicate which version we are running.
+ static void (*sUpdateGeometryFunc)(LLFace* face, LLPolyMesh* mesh);
+
private:
// Allocate skin data
BOOL allocateSkinData( U32 numSkinJoints );