From 278853824d5da452f66f7dc4cc8858884f53505d Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Mon, 20 Apr 2020 21:44:34 +0300 Subject: [PATCH 1/3] Fixed merge conflict and restored SL-1130 --- indra/llrender/llrender.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp index c3345c5c16..4e7c71a374 100644 --- a/indra/llrender/llrender.cpp +++ b/indra/llrender/llrender.cpp @@ -1539,8 +1539,15 @@ void LLRender::matrixMode(eMatrixMode mode) { U32 tex_index = gGL.getCurrentTexUnitIndex(); // the shaders don't actually reference anything beyond texture_matrix0/1 outside of terrain rendering - llassert_always(tex_index <= 3); + llassert(tex_index <= 3); mode = eMatrixMode(MM_TEXTURE0 + gGL.getCurrentTexUnitIndex()); + if (mode > MM_TEXTURE3) + { + // getCurrentTexUnitIndex() can go as high as 32 (LL_NUM_TEXTURE_LAYERS) + // Large value will result in a crash at mMatrix + LL_WARNS_ONCE() << "Attempted to assign matrix mode out of bounds: " << mode << LL_ENDL; + mode = MM_TEXTURE0; + } } mMatrixMode = mode; From 9d26ce372b44412e2e82eb9d73d3608d1327fc06 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Mon, 20 Apr 2020 22:48:03 +0300 Subject: [PATCH 2/3] Fixed merge conflicts --- indra/newview/llappviewer.cpp | 3 ++- indra/newview/llfloatersettingsdebug.cpp | 2 +- indra/newview/pipeline.cpp | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 05a65207a9..8d425c78c5 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -71,6 +71,7 @@ #include "llviewermedia.h" #include "llviewerparcelaskplay.h" #include "llviewerparcelmedia.h" +#include "llviewershadermgr.h" #include "llviewermediafocus.h" #include "llviewermessage.h" #include "llviewerobjectlist.h" @@ -569,7 +570,7 @@ static void settings_to_globals() LLRender::sGLCoreProfile = gSavedSettings.getBOOL("RenderGLCoreProfile"); LLRender::sNsightDebugSupport = gSavedSettings.getBOOL("RenderNsightDebugSupport"); - LLVertexBuffer::sUseVAO = gSavedSettings.getBOOL("RenderUseVAO") && LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_OBJECT) > 0; + LLVertexBuffer::sUseVAO = gSavedSettings.getBOOL("RenderUseVAO") && LLViewerShaderMgr::instance()->getShaderLevel(LLViewerShaderMgr::SHADER_OBJECT) > 0; LLImageGL::sGlobalUseAnisotropic = gSavedSettings.getBOOL("RenderAnisotropic"); LLImageGL::sCompressTextures = gSavedSettings.getBOOL("RenderCompressTextures"); LLVOVolume::sLODFactor = llclamp(gSavedSettings.getF32("RenderVolumeLODFactor"), 0.01f, MAX_LOD_FACTOR); diff --git a/indra/newview/llfloatersettingsdebug.cpp b/indra/newview/llfloatersettingsdebug.cpp index 73269d0531..8bac13a5f5 100644 --- a/indra/newview/llfloatersettingsdebug.cpp +++ b/indra/newview/llfloatersettingsdebug.cpp @@ -298,7 +298,7 @@ void LLFloaterSettingsDebug::updateControl(LLControlVariable* controlp) bool bUseVAO = controlp->getName() == "RenderUseVAO"; if (bUseVAO) { - bool use_shaders = LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_OBJECT) > 0; + bool use_shaders = LLViewerShaderMgr::instance()->getShaderLevel(LLViewerShaderMgr::SHADER_OBJECT) > 0; getChild("boolean_combo")->setEnabled(use_shaders); getChild("TRUE")->setEnabled(use_shaders); getChild("FALSE")->setEnabled(use_shaders); diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 94542606b6..a730c5a75b 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -440,7 +440,7 @@ void LLPipeline::init() sRenderBump = gSavedSettings.getBOOL("RenderObjectBump"); sUseTriStrips = gSavedSettings.getBOOL("RenderUseTriStrips"); LLVertexBuffer::sUseStreamDraw = gSavedSettings.getBOOL("RenderUseStreamVBO"); - LLVertexBuffer::sUseVAO = gSavedSettings.getBOOL("RenderUseVAO") && LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_OBJECT) > 0; + LLVertexBuffer::sUseVAO = gSavedSettings.getBOOL("RenderUseVAO") && LLViewerShaderMgr::instance()->getShaderLevel(LLViewerShaderMgr::SHADER_OBJECT) > 0; LLVertexBuffer::sPreferStreamDraw = gSavedSettings.getBOOL("RenderPreferStreamDraw"); sRenderAttachedLights = gSavedSettings.getBOOL("RenderAttachedLights"); sRenderAttachedParticles = gSavedSettings.getBOOL("RenderAttachedParticles"); @@ -7439,7 +7439,7 @@ void LLPipeline::doResetVertexBuffers(bool forced) sUseTriStrips = gSavedSettings.getBOOL("RenderUseTriStrips"); LLVertexBuffer::sUseStreamDraw = gSavedSettings.getBOOL("RenderUseStreamVBO"); - LLVertexBuffer::sUseVAO = gSavedSettings.getBOOL("RenderUseVAO") && LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_OBJECT) > 0; + LLVertexBuffer::sUseVAO = gSavedSettings.getBOOL("RenderUseVAO") && LLViewerShaderMgr::instance()->getShaderLevel(LLViewerShaderMgr::SHADER_OBJECT) > 0; LLVertexBuffer::sPreferStreamDraw = gSavedSettings.getBOOL("RenderPreferStreamDraw"); LLVertexBuffer::sEnableVBOs = gSavedSettings.getBOOL("RenderVBOEnable"); LLVertexBuffer::sDisableVBOMapping = LLVertexBuffer::sEnableVBOs && gSavedSettings.getBOOL("RenderVBOMappingDisable") ; From abe5cc57873267724673c767ff3ec87016534a6c Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Tue, 21 Apr 2020 10:32:45 +0300 Subject: [PATCH 3/3] Fix for 'release' configuration llassert is not used in 'release' configuration and build fails due to unused tex_index --- indra/llrender/llrender.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp index 4e7c71a374..9b5231ad06 100644 --- a/indra/llrender/llrender.cpp +++ b/indra/llrender/llrender.cpp @@ -1540,7 +1540,7 @@ void LLRender::matrixMode(eMatrixMode mode) U32 tex_index = gGL.getCurrentTexUnitIndex(); // the shaders don't actually reference anything beyond texture_matrix0/1 outside of terrain rendering llassert(tex_index <= 3); - mode = eMatrixMode(MM_TEXTURE0 + gGL.getCurrentTexUnitIndex()); + mode = eMatrixMode(MM_TEXTURE0 + tex_index); if (mode > MM_TEXTURE3) { // getCurrentTexUnitIndex() can go as high as 32 (LL_NUM_TEXTURE_LAYERS)