diff options
author | James Cook <james@lindenlab.com> | 2007-07-02 23:52:40 +0000 |
---|---|---|
committer | James Cook <james@lindenlab.com> | 2007-07-02 23:52:40 +0000 |
commit | 1a33bc19b4ce94ab210749911dff14409b4454dd (patch) | |
tree | b674d97d37240a29c0a6671adfe950a506ef0ea4 /indra/newview/llviewerjointmesh.h | |
parent | e5124431b54d4342d4677371fccca5bc7250c079 (diff) |
svn merge -r 62595:62596 and 62598:63308 sse-skinning-3 for faster software avatar rendering. Visual Studio 2005 project file fixed pending.
Diffstat (limited to 'indra/newview/llviewerjointmesh.h')
-rw-r--r-- | indra/newview/llviewerjointmesh.h | 16 |
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 ); |