From a901caab76ef78a3295d1894e38977539c5810cd Mon Sep 17 00:00:00 2001 From: Rye Mutt <rye@alchemyviewer.org> Date: Sat, 14 Sep 2019 07:29:59 -0400 Subject: [PATCH] Finalize more classes and functions for better devirtualization --- indra/llmath/lloctree.h | 6 +-- indra/llmath/llvolume.cpp | 2 +- indra/llmath/llvolume.h | 10 ++-- indra/llmath/llvolumemgr.h | 12 ++--- indra/llmath/llvolumeoctree.h | 8 +-- indra/llprimitive/llmodel.h | 6 +-- indra/newview/lldrawable.cpp | 2 +- indra/newview/lldrawable.h | 6 +-- indra/newview/lldrawpoolalpha.h | 2 +- indra/newview/lldrawpoolavatar.h | 2 +- indra/newview/lldrawpoolbump.h | 2 +- indra/newview/lldrawpoolground.h | 2 +- indra/newview/lldrawpoolmaterials.h | 2 +- indra/newview/lldrawpoolsimple.h | 12 ++--- indra/newview/lldrawpoolsky.h | 2 +- indra/newview/lldrawpoolterrain.h | 2 +- indra/newview/lldrawpooltree.h | 2 +- indra/newview/lldrawpoolwater.h | 2 +- indra/newview/lldrawpoolwlsky.h | 2 +- indra/newview/llflexibleobject.h | 2 +- indra/newview/llspatialpartition.cpp | 36 ++++++------- indra/newview/llspatialpartition.h | 78 ++++++++++++++-------------- indra/newview/llvieweroctree.cpp | 12 ++--- indra/newview/llvieweroctree.h | 12 ++--- indra/newview/llvocache.cpp | 4 +- indra/newview/llvocache.h | 8 +-- indra/newview/llvovolume.h | 2 +- indra/newview/pipeline.cpp | 2 +- 28 files changed, 119 insertions(+), 121 deletions(-) diff --git a/indra/llmath/lloctree.h b/indra/llmath/lloctree.h index 3426a57068..a02a9225bf 100644 --- a/indra/llmath/lloctree.h +++ b/indra/llmath/lloctree.h @@ -77,7 +77,7 @@ template <class T> class LLOctreeTravelerDepthFirst : public LLOctreeTraveler<T> { public: - void traverse(const LLOctreeNode<T>* node) override; + void traverse(const LLOctreeNode<T>* node) final override; virtual ~LLOctreeTravelerDepthFirst() = default; }; @@ -477,7 +477,7 @@ public: checkAlive(); } - bool remove(T* data) override + bool remove(T* data) final override { S32 i = data->getBinIndex(); @@ -706,7 +706,7 @@ protected: //just like a regular node, except it might expand on insert and compress on balance template <class T> -class LLOctreeRoot : public LLOctreeNode<T> +class LLOctreeRoot final : public LLOctreeNode<T> { public: typedef LLOctreeNode<T> BaseType; diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp index b7c23873c5..3e852b9e26 100644 --- a/indra/llmath/llvolume.cpp +++ b/indra/llmath/llvolume.cpp @@ -370,7 +370,7 @@ BOOL LLTriangleRayIntersect(const LLVector3& vert0, const LLVector3& vert1, cons } } -class LLVolumeOctreeRebound : public LLOctreeTravelerDepthFirst<LLVolumeTriangle> +class LLVolumeOctreeRebound final : public LLOctreeTravelerDepthFirst<LLVolumeTriangle> { public: const LLVolumeFace* mFace; diff --git a/indra/llmath/llvolume.h b/indra/llmath/llvolume.h index c9bac6ac8c..82343d21e5 100644 --- a/indra/llmath/llvolume.h +++ b/indra/llmath/llvolume.h @@ -814,10 +814,10 @@ protected: F32 mStep; }; -class LLDynamicPath : public LLPath +class LLDynamicPath final : public LLPath { public: - LLDynamicPath() : LLPath() { } + LLDynamicPath() = default; /*virtual*/ BOOL generate(const LLPathParams& params, F32 detail=1.0f, S32 split = 0, BOOL is_sculpted = FALSE, S32 sculpt_size = 0) override; }; @@ -1084,10 +1084,10 @@ protected: BOOL generate(); void createVolumeFaces(); public: - virtual bool unpackVolumeFaces(std::istream& is, S32 size); + bool unpackVolumeFaces(std::istream& is, S32 size); - virtual void setMeshAssetLoaded(BOOL loaded); - virtual BOOL isMeshAssetLoaded(); + void setMeshAssetLoaded(BOOL loaded); + BOOL isMeshAssetLoaded(); protected: BOOL mUnique; diff --git a/indra/llmath/llvolumemgr.h b/indra/llmath/llvolumemgr.h index 5478322b40..ebb67aaa0e 100644 --- a/indra/llmath/llvolumemgr.h +++ b/indra/llmath/llvolumemgr.h @@ -73,20 +73,20 @@ protected: S32 mAccessCount[NUM_LODS]; }; -class LLVolumeMgr +class LLVolumeMgr final { public: LLVolumeMgr(); - virtual ~LLVolumeMgr(); + ~LLVolumeMgr(); BOOL cleanup(); // Cleanup all volumes being managed, returns TRUE if no dangling references - virtual LLVolumeLODGroup* getGroup( const LLVolumeParams& volume_params ) const; + LLVolumeLODGroup* getGroup( const LLVolumeParams& volume_params ) const; // whatever calls getVolume() never owns the LLVolume* and // cannot keep references for long since it may be deleted // later. For best results hold it in an LLPointer<LLVolume>. - virtual LLVolume *refVolume(const LLVolumeParams &volume_params, const S32 detail); - virtual void unrefVolume(LLVolume *volumep); + LLVolume *refVolume(const LLVolumeParams &volume_params, const S32 detail); + void unrefVolume(LLVolume *volumep); void dump(); @@ -98,7 +98,7 @@ public: protected: void insertGroup(LLVolumeLODGroup* volgroup); // Overridden in llphysics/abstract/utils/llphysicsvolumemanager.h - virtual LLVolumeLODGroup* createNewGroup(const LLVolumeParams& volume_params); + LLVolumeLODGroup* createNewGroup(const LLVolumeParams& volume_params); protected: typedef std::map<const LLVolumeParams*, LLVolumeLODGroup*, LLVolumeParams::compare> volume_lod_group_map_t; diff --git a/indra/llmath/llvolumeoctree.h b/indra/llmath/llvolumeoctree.h index a9922b5726..46d111812d 100644 --- a/indra/llmath/llvolumeoctree.h +++ b/indra/llmath/llvolumeoctree.h @@ -34,7 +34,7 @@ #include "llvolume.h" #include "llvector4a.h" -class LLVolumeTriangle : public LLRefCount +class LLVolumeTriangle final : public LLRefCount { public: void* operator new(size_t size) @@ -74,7 +74,7 @@ public: }; -class LLVolumeOctreeListener : public LLOctreeListener<LLVolumeTriangle> +class LLVolumeOctreeListener final : public LLOctreeListener<LLVolumeTriangle> { public: @@ -130,13 +130,13 @@ public: const LLVolumeFace* face, F32* closest_t, LLVector4a* intersection,LLVector2* tex_coord, LLVector4a* normal, LLVector4a* tangent); - void traverse(const LLOctreeNode<LLVolumeTriangle>* node) override; + void traverse(const LLOctreeNode<LLVolumeTriangle>* node) final override; void visit(const LLOctreeNode<LLVolumeTriangle>* node) override; virtual ~LLOctreeTriangleRayIntersect() = default; }; -class LLVolumeOctreeValidate : public LLOctreeTraveler<LLVolumeTriangle> +class LLVolumeOctreeValidate final : public LLOctreeTraveler<LLVolumeTriangle> { void visit(const LLOctreeNode<LLVolumeTriangle>* branch) override; diff --git a/indra/llprimitive/llmodel.h b/indra/llprimitive/llmodel.h index d8f9fc0a52..787d0a7faf 100644 --- a/indra/llprimitive/llmodel.h +++ b/indra/llprimitive/llmodel.h @@ -60,7 +60,7 @@ public: bool mJointNumsInitialized; }; -class LLModel : public LLVolume +class LLModel final : public LLVolume { public: @@ -304,7 +304,7 @@ public: } }; -class LLImportMaterial : public LLModelMaterialBase +class LLImportMaterial final : public LLModelMaterialBase { public: friend class LLMeshUploadThread; @@ -359,7 +359,7 @@ public: typedef std::vector<LLModelInstanceBase> model_instance_list; -class LLModelInstance : public LLModelInstanceBase +class LLModelInstance final : public LLModelInstanceBase { public: std::string mLabel; diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp index da608901ab..95eb7b39a3 100644 --- a/indra/newview/lldrawable.cpp +++ b/indra/newview/lldrawable.cpp @@ -1406,7 +1406,7 @@ void LLDrawable::setVisible(LLCamera& camera, std::vector<LLDrawable*>* results, #endif } -class LLOctreeMarkNotCulled: public OctreeTraveler +class LLOctreeMarkNotCulled final : public OctreeTraveler { public: LLCamera* mCamera; diff --git a/indra/newview/lldrawable.h b/indra/newview/lldrawable.h index 865d12adb2..779ebb4bb8 100644 --- a/indra/newview/lldrawable.h +++ b/indra/newview/lldrawable.h @@ -160,12 +160,12 @@ public: BOOL getLit() const { return isState(UNLIT) ? FALSE : TRUE; } void setLit(BOOL lit) { lit ? clearState(UNLIT) : setState(UNLIT); } - bool isVisible() const override; - bool isRecentlyVisible() const override; + bool isVisible() const final override; + bool isRecentlyVisible() const final override; virtual void cleanupReferences(); - void setGroup(LLViewerOctreeGroup* group) override; + void setGroup(LLViewerOctreeGroup* group) final override; void setRadius(const F32 radius); F32 getRadius() const { return mRadius; } F32 getVisibilityRadius() const; diff --git a/indra/newview/lldrawpoolalpha.h b/indra/newview/lldrawpoolalpha.h index 407d571bf3..f2173125f0 100644 --- a/indra/newview/lldrawpoolalpha.h +++ b/indra/newview/lldrawpoolalpha.h @@ -35,7 +35,7 @@ class LLFace; class LLColor4; class LLGLSLShader; -class LLDrawPoolAlpha : public LLRenderPass +class LLDrawPoolAlpha final : public LLRenderPass { public: enum diff --git a/indra/newview/lldrawpoolavatar.h b/indra/newview/lldrawpoolavatar.h index 6e1f22dfe5..415df94538 100644 --- a/indra/newview/lldrawpoolavatar.h +++ b/indra/newview/lldrawpoolavatar.h @@ -36,7 +36,7 @@ class LLMeshSkinInfo; class LLVolume; class LLVolumeFace; -class LLDrawPoolAvatar : public LLFacePool +class LLDrawPoolAvatar final : public LLFacePool { public: enum diff --git a/indra/newview/lldrawpoolbump.h b/indra/newview/lldrawpoolbump.h index bf313d1482..2fc508cd31 100644 --- a/indra/newview/lldrawpoolbump.h +++ b/indra/newview/lldrawpoolbump.h @@ -38,7 +38,7 @@ class LLDrawInfo; class LLGLSLShader; class LLViewerFetchedTexture; -class LLDrawPoolBump : public LLRenderPass +class LLDrawPoolBump final : public LLRenderPass { protected : LLDrawPoolBump(const U32 type):LLRenderPass(type) { mShiny = FALSE; } diff --git a/indra/newview/lldrawpoolground.h b/indra/newview/lldrawpoolground.h index 9330cca5d0..dd7396aa0b 100644 --- a/indra/newview/lldrawpoolground.h +++ b/indra/newview/lldrawpoolground.h @@ -30,7 +30,7 @@ #include "lldrawpool.h" -class LLDrawPoolGround : public LLFacePool +class LLDrawPoolGround final : public LLFacePool { public: enum diff --git a/indra/newview/lldrawpoolmaterials.h b/indra/newview/lldrawpoolmaterials.h index 2b46d65ada..70da765452 100644 --- a/indra/newview/lldrawpoolmaterials.h +++ b/indra/newview/lldrawpoolmaterials.h @@ -38,7 +38,7 @@ class LLViewerTexture; class LLDrawInfo; class LLGLSLShader; -class LLDrawPoolMaterials : public LLRenderPass +class LLDrawPoolMaterials final : public LLRenderPass { LLGLSLShader *mShader; public: diff --git a/indra/newview/lldrawpoolsimple.h b/indra/newview/lldrawpoolsimple.h index 4392954673..d0986b298d 100644 --- a/indra/newview/lldrawpoolsimple.h +++ b/indra/newview/lldrawpoolsimple.h @@ -29,7 +29,7 @@ #include "lldrawpool.h" -class LLDrawPoolSimple : public LLRenderPass +class LLDrawPoolSimple final : public LLRenderPass { public: enum @@ -58,7 +58,7 @@ public: }; -class LLDrawPoolGrass : public LLRenderPass +class LLDrawPoolGrass final : public LLRenderPass { public: enum @@ -86,7 +86,7 @@ public: /*virtual*/ void prerender() final override; }; -class LLDrawPoolAlphaMask : public LLRenderPass +class LLDrawPoolAlphaMask final : public LLRenderPass { public: enum @@ -114,7 +114,7 @@ public: }; -class LLDrawPoolFullbrightAlphaMask : public LLRenderPass +class LLDrawPoolFullbrightAlphaMask final : public LLRenderPass { public: enum @@ -141,7 +141,7 @@ public: }; -class LLDrawPoolFullbright : public LLRenderPass +class LLDrawPoolFullbright final : public LLRenderPass { public: enum @@ -168,7 +168,7 @@ public: }; -class LLDrawPoolGlow : public LLRenderPass +class LLDrawPoolGlow final : public LLRenderPass { public: LLDrawPoolGlow(): LLRenderPass(LLDrawPool::POOL_GLOW) { } diff --git a/indra/newview/lldrawpoolsky.h b/indra/newview/lldrawpoolsky.h index ed1f7ff87a..6f0eb95d47 100644 --- a/indra/newview/lldrawpoolsky.h +++ b/indra/newview/lldrawpoolsky.h @@ -32,7 +32,7 @@ class LLSkyTex; class LLGLSLShader; -class LLDrawPoolSky : public LLFacePool +class LLDrawPoolSky final : public LLFacePool { private: LLSkyTex *mSkyTex; diff --git a/indra/newview/lldrawpoolterrain.h b/indra/newview/lldrawpoolterrain.h index ccd32cd883..c6549bd7ae 100644 --- a/indra/newview/lldrawpoolterrain.h +++ b/indra/newview/lldrawpoolterrain.h @@ -29,7 +29,7 @@ #include "lldrawpool.h" -class LLDrawPoolTerrain : public LLFacePool +class LLDrawPoolTerrain final : public LLFacePool { LLPointer<LLViewerTexture> mTexturep; public: diff --git a/indra/newview/lldrawpooltree.h b/indra/newview/lldrawpooltree.h index 62742a3c57..363435278b 100644 --- a/indra/newview/lldrawpooltree.h +++ b/indra/newview/lldrawpooltree.h @@ -29,7 +29,7 @@ #include "lldrawpool.h" -class LLDrawPoolTree : public LLFacePool +class LLDrawPoolTree final : public LLFacePool { LLPointer<LLViewerTexture> mTexturep; public: diff --git a/indra/newview/lldrawpoolwater.h b/indra/newview/lldrawpoolwater.h index da03c0d960..960183852e 100644 --- a/indra/newview/lldrawpoolwater.h +++ b/indra/newview/lldrawpoolwater.h @@ -34,7 +34,7 @@ class LLFace; class LLHeavenBody; class LLWaterSurface; -class LLDrawPoolWater: public LLFacePool +class LLDrawPoolWater final : public LLFacePool { protected: LLPointer<LLViewerTexture> mHBTex[2]; diff --git a/indra/newview/lldrawpoolwlsky.h b/indra/newview/lldrawpoolwlsky.h index 19d252f5a7..c4eef9cbff 100644 --- a/indra/newview/lldrawpoolwlsky.h +++ b/indra/newview/lldrawpoolwlsky.h @@ -31,7 +31,7 @@ class LLGLSLShader; -class LLDrawPoolWLSky : public LLDrawPool { +class LLDrawPoolWLSky final : public LLDrawPool { public: static const U32 SKY_VERTEX_DATA_MASK = LLVertexBuffer::MAP_VERTEX | diff --git a/indra/newview/llflexibleobject.h b/indra/newview/llflexibleobject.h index 52f8bea2ad..ea93114fcd 100644 --- a/indra/newview/llflexibleobject.h +++ b/indra/newview/llflexibleobject.h @@ -68,7 +68,7 @@ struct LLFlexibleObjectSection //--------------------------------------------------------- // The LLVolumeImplFlexible class //--------------------------------------------------------- -class LLVolumeImplFlexible : public LLVolumeInterface +class LLVolumeImplFlexible final : public LLVolumeInterface { private: static std::vector<LLVolumeImplFlexible*> sInstanceList; diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index e576d433ea..51c3ade526 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -447,10 +447,10 @@ class LLSpatialSetState : public OctreeTraveler public: U32 mState; LLSpatialSetState(U32 state) : mState(state) { } - void visit(const OctreeNode* branch) override { ((LLSpatialGroup*) branch->getListener(0))->setState(mState); } + void visit(const OctreeNode* branch) final override { ((LLSpatialGroup*) branch->getListener(0))->setState(mState); } }; -class LLSpatialSetStateDiff : public LLSpatialSetState +class LLSpatialSetStateDiff final : public LLSpatialSetState { public: LLSpatialSetStateDiff(U32 state) : LLSpatialSetState(state) { } @@ -494,10 +494,10 @@ class LLSpatialClearState : public OctreeTraveler public: U32 mState; LLSpatialClearState(U32 state) : mState(state) { } - void visit(const OctreeNode* branch) override { ((LLSpatialGroup*) branch->getListener(0))->clearState(mState); } + void visit(const OctreeNode* branch) final override { ((LLSpatialGroup*) branch->getListener(0))->clearState(mState); } }; -class LLSpatialClearStateDiff : public LLSpatialClearState +class LLSpatialClearStateDiff final : public LLSpatialClearState { public: LLSpatialClearStateDiff(U32 state) : LLSpatialClearState(state) { } @@ -939,7 +939,7 @@ void LLSpatialPartition::move(LLDrawable *drawablep, LLSpatialGroup *curp, BOOL put(drawablep, was_visible); } -class LLSpatialShift : public OctreeTraveler +class LLSpatialShift final : public OctreeTraveler { public: const LLVector4a& mOffset; @@ -1011,7 +1011,7 @@ public: } }; -class LLOctreeCullNoFarClip : public LLOctreeCull +class LLOctreeCullNoFarClip final : public LLOctreeCull { public: LLOctreeCullNoFarClip(LLCamera* camera) @@ -1035,18 +1035,18 @@ public: LLOctreeCullShadow(LLCamera* camera) : LLOctreeCull(camera) { } - S32 frustumCheck(const LLViewerOctreeGroup* group) override + S32 frustumCheck(const LLViewerOctreeGroup* group) final override { return AABBInFrustumGroupBounds(group); } - S32 frustumCheckObjects(const LLViewerOctreeGroup* group) override + S32 frustumCheckObjects(const LLViewerOctreeGroup* group) final override { return AABBInFrustumObjectBounds(group); } }; -class LLOctreeCullVisExtents: public LLOctreeCullShadow +class LLOctreeCullVisExtents final: public LLOctreeCullShadow { public: LLOctreeCullVisExtents(LLCamera* camera, LLVector4a& min, LLVector4a& max) @@ -1123,7 +1123,7 @@ public: LLVector4a& mMax; }; -class LLOctreeCullDetectVisible: public LLOctreeCullShadow +class LLOctreeCullDetectVisible final: public LLOctreeCullShadow { public: LLOctreeCullDetectVisible(LLCamera* camera) @@ -1155,7 +1155,7 @@ public: BOOL mResult; }; -class LLOctreeSelect : public LLOctreeCull +class LLOctreeSelect final : public LLOctreeCull { public: LLOctreeSelect(LLCamera* camera, std::vector<LLDrawable*>* results) @@ -1300,7 +1300,7 @@ void drawBoxOutline(const LLVector4a& pos, const LLVector4a& size) drawBoxOutline(reinterpret_cast<const LLVector3&>(pos), reinterpret_cast<const LLVector3&>(size)); } -class LLOctreeDirty : public OctreeTraveler +class LLOctreeDirty final : public OctreeTraveler { public: LLOctreeDirty(bool no_rebuild) : mNoRebuild(no_rebuild){} @@ -2909,7 +2909,7 @@ void renderLights(LLDrawable* drawablep) } } -class LLRenderOctreeRaycast : public LLOctreeTriangleRayIntersect +class LLRenderOctreeRaycast final : public LLOctreeTriangleRayIntersect { public: @@ -3146,7 +3146,7 @@ void renderAgentTarget(LLVOAvatar* avatar) } } -class LLOctreeRenderNonOccluded : public OctreeTraveler +class LLOctreeRenderNonOccluded final : public OctreeTraveler { public: LLCamera* mCamera; @@ -3354,7 +3354,7 @@ public: } }; -class LLOctreeRenderXRay : public OctreeTraveler +class LLOctreeRenderXRay final : public OctreeTraveler { public: LLCamera* mCamera; @@ -3398,7 +3398,7 @@ public: }; -class LLOctreeRenderPhysicsShapes : public OctreeTraveler +class LLOctreeRenderPhysicsShapes final : public OctreeTraveler { public: LLCamera* mCamera; @@ -3433,7 +3433,7 @@ public: } }; -class LLOctreePushBBoxVerts : public OctreeTraveler +class LLOctreePushBBoxVerts final : public OctreeTraveler { public: LLCamera* mCamera; @@ -3483,7 +3483,7 @@ void LLSpatialPartition::renderIntersectingBBoxes(LLCamera* camera) pusher.traverse(mOctree); } -class LLOctreeStateCheck : public OctreeTraveler +class LLOctreeStateCheck final : public OctreeTraveler { public: U32 mInheritedMask[LLViewerCamera::NUM_CAMERAS]; diff --git a/indra/newview/llspatialpartition.h b/indra/newview/llspatialpartition.h index fe675a64c4..1e52977e26 100644 --- a/indra/newview/llspatialpartition.h +++ b/indra/newview/llspatialpartition.h @@ -55,7 +55,7 @@ class LLViewerRegion; void pushVerts(LLFace* face, U32 mask); -class LLDrawInfo : public LLRefCount, public LLTrace::MemTrackableNonVirtual<LLDrawInfo, 16> +class LLDrawInfo final : public LLRefCount, public LLTrace::MemTrackableNonVirtual<LLDrawInfo, 16> { protected: ~LLDrawInfo(); @@ -182,7 +182,7 @@ public: }; LL_ALIGN_PREFIX(64) -class LLSpatialGroup : public LLOcclusionCullingGroup +class LLSpatialGroup final : public LLOcclusionCullingGroup { friend class LLSpatialPartition; friend class LLOctreeStateCheck; @@ -296,10 +296,10 @@ public: LLSpatialPartition* getSpatialPartition() {return (LLSpatialPartition*)mSpatialPartition;} //LISTENER FUNCTIONS - void handleInsertion(const TreeNode* node, LLViewerOctreeEntry* face) override; - void handleRemoval(const TreeNode* node, LLViewerOctreeEntry* face) override; - void handleDestruction(const TreeNode* node) override; - void handleChildAddition(const OctreeNode* parent, OctreeNode* child) override; + void handleInsertion(const TreeNode* node, LLViewerOctreeEntry* face) final override; + void handleRemoval(const TreeNode* node, LLViewerOctreeEntry* face) final override; + void handleDestruction(const TreeNode* node) final override; + void handleChildAddition(const OctreeNode* parent, OctreeNode* child) final override; public: LL_ALIGN_16(LLVector4a mViewAngle); @@ -339,7 +339,7 @@ class LLGeometryManager { public: std::vector<LLFace*> mFaceList; - virtual ~LLGeometryManager() { } + virtual ~LLGeometryManager() = default; virtual void rebuildGeom(LLSpatialGroup* group) = 0; virtual void rebuildMesh(LLSpatialGroup* group) = 0; virtual void getGeometry(LLSpatialGroup* group) = 0; @@ -379,7 +379,7 @@ public: void rebuildMesh(LLSpatialGroup* group) override; BOOL visibleObjectsInFrustum(LLCamera& camera); - /*virtual*/ S32 cull(LLCamera &camera, bool do_occlusion=false) override; // Cull on arbitrary frustum + /*virtual*/ S32 cull(LLCamera &camera, bool do_occlusion=false) final override; // Cull on arbitrary frustum S32 cull(LLCamera &camera, std::vector<LLDrawable *>* results, BOOL for_select); // Cull on arbitrary frustum BOOL isVisible(const LLVector3& v); @@ -424,17 +424,17 @@ public: void destroyTree(); - BOOL isSpatialBridge() const override { return TRUE; } - void updateSpatialExtents() override; - void updateBinRadius() override; - void setVisible(LLCamera& camera_in, std::vector<LLDrawable*>* results = nullptr, BOOL for_select = FALSE) override; - void updateDistance(LLCamera& camera_in, bool force_update) override; - void makeActive() override; - void move(LLDrawable *drawablep, LLSpatialGroup *curp, BOOL immediate = FALSE) override; - BOOL updateMove() override; + BOOL isSpatialBridge() const final override { return TRUE; } + void updateSpatialExtents() final override; + void updateBinRadius() final override; + void setVisible(LLCamera& camera_in, std::vector<LLDrawable*>* results = nullptr, BOOL for_select = FALSE) final override; + void updateDistance(LLCamera& camera_in, bool force_update) final override; + void makeActive() final override; + void move(LLDrawable *drawablep, LLSpatialGroup *curp, BOOL immediate = FALSE) final override; + BOOL updateMove() final override; void shiftPos(const LLVector4a& vec) override; - void cleanupReferences() override; - LLSpatialPartition* asPartition() override { return this; } + void cleanupReferences() final override; + LLSpatialPartition* asPartition() final override { return this; } virtual LLCamera transformCamera(LLCamera& camera); @@ -541,19 +541,19 @@ class LLWaterPartition : public LLSpatialPartition { public: LLWaterPartition(LLViewerRegion* regionp); - void getGeometry(LLSpatialGroup* group) override { } - void addGeometryCount(LLSpatialGroup* group, U32 &vertex_count, U32& index_count) override { } + void getGeometry(LLSpatialGroup* group) final override { } + void addGeometryCount(LLSpatialGroup* group, U32 &vertex_count, U32& index_count) final override { } }; //spatial partition for hole and edge water (implemented in LLVOWater.cpp) -class LLVoidWaterPartition : public LLWaterPartition +class LLVoidWaterPartition final : public LLWaterPartition { public: LLVoidWaterPartition(LLViewerRegion* regionp); }; //spatial partition for terrain (impelmented in LLVOSurfacePatch.cpp) -class LLTerrainPartition : public LLSpatialPartition +class LLTerrainPartition final : public LLSpatialPartition { public: LLTerrainPartition(LLViewerRegion* regionp); @@ -562,7 +562,7 @@ public: }; //spatial partition for trees -class LLTreePartition : public LLSpatialPartition +class LLTreePartition final : public LLSpatialPartition { public: LLTreePartition(LLViewerRegion* regionp); @@ -576,22 +576,22 @@ class LLParticlePartition : public LLSpatialPartition { public: LLParticlePartition(LLViewerRegion* regionp); - void rebuildGeom(LLSpatialGroup* group) override; - void getGeometry(LLSpatialGroup* group) override; - void addGeometryCount(LLSpatialGroup* group, U32 &vertex_count, U32& index_count) override; - F32 calcPixelArea(LLSpatialGroup* group, LLCamera& camera) override; + void rebuildGeom(LLSpatialGroup* group) final override; + void getGeometry(LLSpatialGroup* group) final override; + void addGeometryCount(LLSpatialGroup* group, U32 &vertex_count, U32& index_count) final override; + F32 calcPixelArea(LLSpatialGroup* group, LLCamera& camera) final override; protected: U32 mRenderPass; }; -class LLHUDParticlePartition : public LLParticlePartition +class LLHUDParticlePartition final : public LLParticlePartition { public: LLHUDParticlePartition(LLViewerRegion* regionp); }; //spatial partition for grass (implemented in LLVOGrass.cpp) -class LLGrassPartition : public LLSpatialPartition +class LLGrassPartition final : public LLSpatialPartition { public: LLGrassPartition(LLViewerRegion* regionp); @@ -635,7 +635,7 @@ private: }; //spatial partition that uses volume geometry manager (implemented in LLVOVolume.cpp) -class LLVolumePartition : public LLSpatialPartition, public LLVolumeGeometryManager +class LLVolumePartition final : public LLSpatialPartition, public LLVolumeGeometryManager { public: LLVolumePartition(LLViewerRegion* regionp); @@ -650,18 +650,18 @@ class LLVolumeBridge : public LLSpatialBridge, public LLVolumeGeometryManager { public: LLVolumeBridge(LLDrawable* drawable, LLViewerRegion* regionp); - void rebuildGeom(LLSpatialGroup* group) override { LLVolumeGeometryManager::rebuildGeom(group); } - void getGeometry(LLSpatialGroup* group) override { LLVolumeGeometryManager::getGeometry(group); } - void rebuildMesh(LLSpatialGroup* group) override { LLVolumeGeometryManager::rebuildMesh(group); } - void addGeometryCount(LLSpatialGroup* group, U32 &vertex_count, U32& index_count) override { LLVolumeGeometryManager::addGeometryCount(group, vertex_count, index_count); } + void rebuildGeom(LLSpatialGroup* group) final override { LLVolumeGeometryManager::rebuildGeom(group); } + void getGeometry(LLSpatialGroup* group) final override { LLVolumeGeometryManager::getGeometry(group); } + void rebuildMesh(LLSpatialGroup* group) final override { LLVolumeGeometryManager::rebuildMesh(group); } + void addGeometryCount(LLSpatialGroup* group, U32 &vertex_count, U32& index_count) final override { LLVolumeGeometryManager::addGeometryCount(group, vertex_count, index_count); } }; class LLHUDBridge : public LLVolumeBridge { public: LLHUDBridge(LLDrawable* drawablep, LLViewerRegion* regionp); - void shiftPos(const LLVector4a& vec) override; - F32 calcPixelArea(LLSpatialGroup* group, LLCamera& camera) override; + void shiftPos(const LLVector4a& vec) final override; + F32 calcPixelArea(LLSpatialGroup* group, LLCamera& camera) final override; }; //spatial partition that holds nothing but spatial bridges @@ -669,11 +669,11 @@ class LLBridgePartition : public LLSpatialPartition { public: LLBridgePartition(LLViewerRegion* regionp); - void getGeometry(LLSpatialGroup* group) override { } - void addGeometryCount(LLSpatialGroup* group, U32 &vertex_count, U32& index_count) override { } + void getGeometry(LLSpatialGroup* group) final override { } + void addGeometryCount(LLSpatialGroup* group, U32 &vertex_count, U32& index_count) final override { } }; -class LLHUDPartition : public LLBridgePartition +class LLHUDPartition final : public LLBridgePartition { public: LLHUDPartition(LLViewerRegion* regionp); diff --git a/indra/newview/llvieweroctree.cpp b/indra/newview/llvieweroctree.cpp index 82b2ef44c1..0fa4a197b0 100644 --- a/indra/newview/llvieweroctree.cpp +++ b/indra/newview/llvieweroctree.cpp @@ -33,8 +33,6 @@ #include "llglslshader.h" #include "llviewershadermgr.h" -#include <glm/gtc/type_ptr.hpp> - //----------------------------------------------------------------------------------- //static variables definitions //----------------------------------------------------------------------------------- @@ -819,7 +817,7 @@ U32 LLOcclusionCullingGroup::getNewOcclusionQueryObjectName() return sQueryPool.genQuery(); } -void LLOcclusionCullingGroup::releaseOcclusionQueryObjectName(GLuint name) +void LLOcclusionCullingGroup::releaseOcclusionQueryObjectName(S32 name) { sQueryPool.deleteQuery(name); } @@ -833,7 +831,7 @@ public: U32 mState; LLSpatialSetOcclusionState(U32 state) : mState(state) { } - void visit(const OctreeNode* branch) override + void visit(const OctreeNode* branch) final override { LLOcclusionCullingGroup* group = (LLOcclusionCullingGroup*)branch->getListener(0); if(group) @@ -843,7 +841,7 @@ public: } }; -class LLSpatialSetOcclusionStateDiff : public LLSpatialSetOcclusionState +class LLSpatialSetOcclusionStateDiff final : public LLSpatialSetOcclusionState { public: LLSpatialSetOcclusionStateDiff(U32 state) : LLSpatialSetOcclusionState(state) { } @@ -983,7 +981,7 @@ public: LLSpatialClearOcclusionState(U32 state) : mState(state) { } - void visit(const OctreeNode* branch) override + void visit(const OctreeNode* branch) final override { LLOcclusionCullingGroup* group = (LLOcclusionCullingGroup*)branch->getListener(0); if(group) @@ -993,7 +991,7 @@ public: } }; -class LLSpatialClearOcclusionStateDiff : public LLSpatialClearOcclusionState +class LLSpatialClearOcclusionStateDiff final : public LLSpatialClearOcclusionState { public: LLSpatialClearOcclusionStateDiff(U32 state) : LLSpatialClearOcclusionState(state) { } diff --git a/indra/newview/llvieweroctree.h b/indra/newview/llvieweroctree.h index a9cc117458..10855ea20c 100644 --- a/indra/newview/llvieweroctree.h +++ b/indra/newview/llvieweroctree.h @@ -228,9 +228,9 @@ public: void handleInsertion(const TreeNode* node, LLViewerOctreeEntry* obj) override; void handleRemoval(const TreeNode* node, LLViewerOctreeEntry* obj) override; void handleDestruction(const TreeNode* node) override; - void handleStateChange(const TreeNode* node) override; + void handleStateChange(const TreeNode* node) final override; void handleChildAddition(const OctreeNode* parent, OctreeNode* child) override; - void handleChildRemoval(const OctreeNode* parent, const OctreeNode* child) override; + void handleChildRemoval(const OctreeNode* parent, const OctreeNode* child) final override; OctreeNode* getOctreeNode() {return mOctreeNode;} LLViewerOctreeGroup* getParent(); @@ -312,12 +312,12 @@ public: void handleChildAddition(const OctreeNode* parent, OctreeNode* child) override; //virtual - BOOL isRecentlyVisible() const override; + BOOL isRecentlyVisible() const final override; LLViewerOctreePartition* getSpatialPartition()const {return mSpatialPartition;} BOOL isAnyRecentlyVisible() const; static U32 getNewOcclusionQueryObjectName(); - static void releaseOcclusionQueryObjectName(U32 name); + static void releaseOcclusionQueryObjectName(S32 name); protected: void releaseOcclusionQueryObjectNames(); @@ -396,7 +396,7 @@ protected: virtual bool checkObjects(const OctreeNode* branch, const LLViewerOctreeGroup* group); virtual void preprocess(LLViewerOctreeGroup* group); virtual void processGroup(LLViewerOctreeGroup* group); - void visit(const OctreeNode* branch) override; + void visit(const OctreeNode* branch) final override; protected: LLCamera *mCamera; @@ -404,7 +404,7 @@ protected: }; //scan the octree, output the info of each node for debug use. -class LLViewerOctreeDebug : public OctreeTraveler +class LLViewerOctreeDebug final : public OctreeTraveler { public: virtual void processGroup(LLViewerOctreeGroup* group); diff --git a/indra/newview/llvocache.cpp b/indra/newview/llvocache.cpp index 599db41a7a..ae0e9a0eba 100644 --- a/indra/newview/llvocache.cpp +++ b/indra/newview/llvocache.cpp @@ -708,7 +708,7 @@ void LLVOCachePartition::removeEntry(LLViewerOctreeEntry* entry) llassert(!entry->getGroup()); } -class LLVOCacheOctreeCull : public LLViewerOctreeCull +class LLVOCacheOctreeCull final : public LLViewerOctreeCull { public: LLVOCacheOctreeCull(LLCamera* camera, LLViewerRegion* regionp, @@ -829,7 +829,7 @@ private: }; //select objects behind camera -class LLVOCacheOctreeBackCull : public LLViewerOctreeCull +class LLVOCacheOctreeBackCull final : public LLViewerOctreeCull { public: LLVOCacheOctreeBackCull(LLCamera* camera, const LLVector3& shift, LLViewerRegion* regionp, F32 pixel_threshold, bool use_occlusion) diff --git a/indra/newview/llvocache.h b/indra/newview/llvocache.h index feeb563b09..fc92005818 100644 --- a/indra/newview/llvocache.h +++ b/indra/newview/llvocache.h @@ -37,7 +37,7 @@ // Cache entries class LLCamera; -class LLVOCacheEntry +class LLVOCacheEntry final : public LLViewerOctreeEntryData, public LLTrace::MemTrackable<LLVOCacheEntry, 16> { @@ -173,7 +173,7 @@ public: static F32 sRearPixelThreshold; }; -class LLVOCacheGroup : public LLOcclusionCullingGroup +class LLVOCacheGroup final : public LLOcclusionCullingGroup { public: LLVOCacheGroup(OctreeNode* node, LLViewerOctreePartition* part) : LLOcclusionCullingGroup(node, part){} @@ -185,7 +185,7 @@ protected: virtual ~LLVOCacheGroup(); }; -class LLVOCachePartition : public LLViewerOctreePartition, public LLTrace::MemTrackable<LLVOCachePartition> +class LLVOCachePartition final : public LLViewerOctreePartition, public LLTrace::MemTrackable<LLVOCachePartition> { public: LLVOCachePartition(LLViewerRegion* regionp); @@ -221,7 +221,7 @@ private: // //Note: LLVOCache is not thread-safe // -class LLVOCache : public LLSingleton<LLVOCache> +class LLVOCache final : public LLSingleton<LLVOCache> { LLSINGLETON(LLVOCache); ~LLVOCache() ; diff --git a/indra/newview/llvovolume.h b/indra/newview/llvovolume.h index 55ec6f4324..9b40e09bc8 100644 --- a/indra/newview/llvovolume.h +++ b/indra/newview/llvovolume.h @@ -74,7 +74,7 @@ public: class LLVolumeInterface { public: - virtual ~LLVolumeInterface() { } + virtual ~LLVolumeInterface() = default; virtual LLVolumeInterfaceType getInterfaceType() const = 0; virtual void doIdleUpdate() = 0; virtual BOOL doUpdateGeometry(LLDrawable *drawable) = 0; diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index bfd17308e7..544f7ad597 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -1459,7 +1459,7 @@ S32 LLPipeline::setLightingDetail(S32 level) return mLightingDetail; } -class LLOctreeDirtyTexture : public OctreeTraveler +class LLOctreeDirtyTexture final : public OctreeTraveler { public: const std::set<LLViewerFetchedTexture*>& mTextures; -- GitLab