diff options
author | cosmic-linden <111533034+cosmic-linden@users.noreply.github.com> | 2023-05-08 11:05:24 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-08 11:05:24 -0700 |
commit | 06be53fef74de0096c16bd9284565e5ee7ec623f (patch) | |
tree | 7bc69d4b94aefc52bad1fb2782f15fcf5d93a8e2 /indra | |
parent | 6d0d9b8e549c2bc600e6bf416d4614edc55e35c0 (diff) | |
parent | 307d31116dc4b04893652e859b86bfdd00d19c78 (diff) |
Merge pull request #206 from secondlife/SL-19644
SL-19644: De-virtualize pushBatch
Diffstat (limited to 'indra')
-rw-r--r-- | indra/newview/lldrawpool.h | 13 | ||||
-rw-r--r-- | indra/newview/lldrawpoolbump.cpp | 25 | ||||
-rw-r--r-- | indra/newview/lldrawpoolbump.h | 1 |
3 files changed, 21 insertions, 18 deletions
diff --git a/indra/newview/lldrawpool.h b/indra/newview/lldrawpool.h index 09c95a1705..eef19199b9 100644 --- a/indra/newview/lldrawpool.h +++ b/indra/newview/lldrawpool.h @@ -349,15 +349,18 @@ public: void resetDrawOrders() { } static void applyModelMatrix(const LLDrawInfo& params); - virtual void pushBatches(U32 type, bool texture = true, bool batch_textures = false); - virtual void pushRiggedBatches(U32 type, bool texture = true, bool batch_textures = false); + // Use before a non-GLTF batch if it is interleaved with GLTF batches that share the same shader + static void resetGLTFTextureTransform(); + void pushBatches(U32 type, bool texture = true, bool batch_textures = false); + void pushRiggedBatches(U32 type, bool texture = true, bool batch_textures = false); void pushGLTFBatches(U32 type); void pushGLTFBatch(LLDrawInfo& params); void pushRiggedGLTFBatches(U32 type); void pushRiggedGLTFBatch(LLDrawInfo& params, LLVOAvatar*& lastAvatar, U64& lastMeshId); - virtual void pushMaskBatches(U32 type, bool texture = true, bool batch_textures = false); - virtual void pushRiggedMaskBatches(U32 type, bool texture = true, bool batch_textures = false); - virtual void pushBatch(LLDrawInfo& params, bool texture, bool batch_textures = false); + void pushMaskBatches(U32 type, bool texture = true, bool batch_textures = false); + void pushRiggedMaskBatches(U32 type, bool texture = true, bool batch_textures = false); + void pushBatch(LLDrawInfo& params, bool texture, bool batch_textures = false); + void pushBumpBatch(LLDrawInfo& params, bool texture, bool batch_textures = false); static bool uploadMatrixPalette(LLDrawInfo& params); static bool uploadMatrixPalette(LLVOAvatar* avatar, LLMeshSkinInfo* skinInfo); virtual void renderGroup(LLSpatialGroup* group, U32 type, bool texture = true); diff --git a/indra/newview/lldrawpoolbump.cpp b/indra/newview/lldrawpoolbump.cpp index 9ed776f49e..38768a19c8 100644 --- a/indra/newview/lldrawpoolbump.cpp +++ b/indra/newview/lldrawpoolbump.cpp @@ -77,6 +77,7 @@ static LLGLSLShader* shader = NULL; static S32 cube_channel = -1; static S32 diffuse_channel = -1; static S32 bump_channel = -1; +static BOOL shiny = FALSE; // Enabled after changing LLViewerTexture::mNeedsCreateTexture to an // LLAtomicBool; this should work just fine, now. HB @@ -197,7 +198,7 @@ void LLStandardBumpmap::destroyGL() LLDrawPoolBump::LLDrawPoolBump() : LLRenderPass(LLDrawPool::POOL_BUMP) { - mShiny = FALSE; + shiny = FALSE; } @@ -346,7 +347,7 @@ void LLDrawPoolBump::beginFullbrightShiny() diffuse_channel = 0; } - mShiny = TRUE; + shiny = TRUE; } void LLDrawPoolBump::renderFullbrightShiny() @@ -398,7 +399,7 @@ void LLDrawPoolBump::endFullbrightShiny() diffuse_channel = -1; cube_channel = 0; - mShiny = FALSE; + shiny = FALSE; } void LLDrawPoolBump::renderGroup(LLSpatialGroup* group, U32 type, bool texture = true) @@ -541,7 +542,7 @@ void LLDrawPoolBump::renderDeferred(S32 pass) { LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWPOOL; //LL_RECORD_BLOCK_TIME(FTM_RENDER_BUMP); - mShiny = TRUE; + shiny = TRUE; for (int i = 0; i < 2; ++i) { bool rigged = i == 1; @@ -575,11 +576,11 @@ void LLDrawPoolBump::renderDeferred(S32 pass) avatar = params.mAvatar; skin = params.mSkinInfo->mHash; } - pushBatch(params, true, false); + pushBumpBatch(params, true, false); } else { - pushBatch(params, true, false); + pushBumpBatch(params, true, false); } } @@ -589,7 +590,7 @@ void LLDrawPoolBump::renderDeferred(S32 pass) gGL.getTexUnit(0)->activate(); } - mShiny = FALSE; + shiny = FALSE; } @@ -1213,12 +1214,12 @@ void LLDrawPoolBump::pushBumpBatches(U32 type) } } } - pushBatch(params, false); + pushBumpBatch(params, false); } } } -void LLDrawPoolBump::pushBatch(LLDrawInfo& params, bool texture, bool batch_textures) +void LLRenderPass::pushBumpBatch(LLDrawInfo& params, bool texture, bool batch_textures) { LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWPOOL; applyModelMatrix(params); @@ -1239,7 +1240,7 @@ void LLDrawPoolBump::pushBatch(LLDrawInfo& params, bool texture, bool batch_text { //not batching textures or batch has only 1 texture -- might need a texture matrix if (params.mTextureMatrix) { - if (mShiny) + if (shiny) { gGL.getTexUnit(0)->activate(); gGL.matrixMode(LLRender::MM_TEXTURE); @@ -1258,7 +1259,7 @@ void LLDrawPoolBump::pushBatch(LLDrawInfo& params, bool texture, bool batch_text tex_setup = true; } - if (mShiny && mShaderLevel > 1 && texture) + if (shiny && mShaderLevel > 1 && texture) { if (params.mTexture.notNull()) { @@ -1276,7 +1277,7 @@ void LLDrawPoolBump::pushBatch(LLDrawInfo& params, bool texture, bool batch_text if (tex_setup) { - if (mShiny) + if (shiny) { gGL.getTexUnit(0)->activate(); } diff --git a/indra/newview/lldrawpoolbump.h b/indra/newview/lldrawpoolbump.h index 840af0c99d..b1fe454c72 100644 --- a/indra/newview/lldrawpoolbump.h +++ b/indra/newview/lldrawpoolbump.h @@ -53,7 +53,6 @@ public: LLDrawPoolBump(); /*virtual*/ void prerender() override; - void pushBatch(LLDrawInfo& params, bool texture, bool batch_textures = false) override; void pushBumpBatches(U32 type); void renderGroup(LLSpatialGroup* group, U32 type, bool texture) override; |