diff options
Diffstat (limited to 'indra/newview/pipeline.h')
-rw-r--r-- | indra/newview/pipeline.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h index 67004a5f2d..f41f6173a9 100644 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -278,6 +278,10 @@ public: LLCullResult::sg_list_t::iterator beginAlphaGroups(); LLCullResult::sg_list_t::iterator endAlphaGroups(); + + //mesh management functions + void loadMesh(LLVOVolume* volume, LLUUID mesh_id, S32 detail = 0); + void addTrianglesDrawn(S32 count); BOOL hasRenderType(const U32 type) const { return (type && (mRenderTypeMask & (1<<type))) ? TRUE : FALSE; } BOOL hasRenderDebugFeatureMask(const U32 mask) const { return (mRenderDebugFeatureMask & mask) ? TRUE : FALSE; } @@ -675,6 +679,37 @@ public: protected: std::vector<LLFace*> mSelectedFaces; + + typedef std::map<LLUUID, std::set<LLUUID> > mesh_load_map; + mesh_load_map mLoadingMeshes[4]; + + LLMutex* mMeshMutex; + + class LLMeshThread : public LLThread + { + public: + LLPointer<LLVolume> mVolume; + LLVolume* mTargetVolume; + LLUUID mMeshID; + F32 mDetail; + S32 mDetailIndex; + LLMeshThread(LLUUID mesh_id, LLVolume* target, S32 detail = -1); + ~LLMeshThread(); + void run(); + }; + + static void getMeshAssetCallback(LLVFS *vfs, + const LLUUID& asset_uuid, + LLAssetType::EType type, + void* user_data, S32 status, LLExtStat ext_status); + + std::list<LLMeshThread*> mLoadedMeshes; + std::list<LLMeshThread*> mPendingMeshes; + U32 mMeshThreadCount; + + void meshLoaded(LLMeshThread* mesh_thread); + void notifyLoadedMeshes(); + LLPointer<LLViewerFetchedTexture> mFaceSelectImagep; LLPointer<LLViewerTexture> mBloomImagep; LLPointer<LLViewerTexture> mBloomImage2p; |