From 963ca999195deefa3578cadf11b76a8f1cfdc7bb Mon Sep 17 00:00:00 2001 From: Beq Date: Thu, 8 May 2025 21:12:55 +0100 Subject: [PATCH 1/7] FIRE-34655 - Linux VRAM detection failing Partial solution that should bring Nvidia and AMD detection back in line with other platforms. --- indra/llrender/llgl.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp index 781d0fce43..8f74da47b2 100644 --- a/indra/llrender/llgl.cpp +++ b/indra/llrender/llgl.cpp @@ -1074,6 +1074,7 @@ void LLGLManager::initWGL() // return false if unable (or unwilling due to old drivers) to init GL bool LLGLManager::initGL() { + LL_INFOS("RenderInit") << "Initializing OpenGL" << LL_ENDL; // Extra logging to confirm usage on Linux if (mInited) { LL_ERRS("RenderInit") << "Calling init on LLGLManager after already initialized!" << LL_ENDL; @@ -1514,6 +1515,11 @@ void LLGLManager::initExtensions() mHasATIMemInfo = ExtensionExists("GL_ATI_meminfo", gGLHExts.mSysExts); //Basic AMD method, also see mHasAMDAssociations LL_DEBUGS("RenderInit") << "GL Probe: Getting symbols" << LL_ENDL; +// FIRE-34655 - VRAM detection failing on Linux. Load all the GL functions we need. +#if LL_LINUX && !LL_MESA_HEADLESS + mHasNVXGpuMemoryInfo = ExtensionExists("GL_NVX_gpu_memory_info", gGLHExts.mSysExts); + mHasAMDAssociations = ExtensionExists("WGL_AMD_gpu_association", gGLHExts.mSysExts); +#endif #if LL_WINDOWS // From 1b382230406de41202c35008c844a3d48f8ffe70 Mon Sep 17 00:00:00 2001 From: Beq Date: Thu, 8 May 2025 21:46:10 +0100 Subject: [PATCH 2/7] FIRE-35062/SL-19968 & possibly #4014 - vanishing meshes after TP/login There may be other bugs with similar symptoms, however. Having spent a lot of time tracking specific attachments through teleports and examining the absence or not, this fix directly addresses a common situation whereby post-TP calls to rebuildGeom can query the region for "MeshRez" support before the caps have been received resulting in the mesh being eliminated until the next rebuildGeom() --- indra/newview/llviewerregion.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index d2e8826e10..36c525b59a 100755 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -3985,6 +3985,13 @@ bool LLViewerRegion::bakesOnMeshEnabled() const bool LLViewerRegion::meshRezEnabled() const { + // FIRE-35602 and many similar reports - Mesh not appearing after TP/login + if(!mSimulatorFeaturesReceived) + { + LL_INFOS("MeshRez") << "MeshRezEnabled: SimulatorFeatures not received yet. Defaulting to true" << LL_ENDL; + return true; + } + // return (mSimulatorFeatures.has("MeshRezEnabled") && mSimulatorFeatures["MeshRezEnabled"].asBoolean()); } From 3b03dfce7b52b76079eae1f196d15b87fd44ccbd Mon Sep 17 00:00:00 2001 From: Beq Date: Thu, 8 May 2025 21:48:22 +0100 Subject: [PATCH 3/7] remove dbg with a high overheadeven when logging disabled --- indra/newview/llviewertexturelist.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index aee68093d0..f2de57f14c 100644 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp @@ -1237,7 +1237,7 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag vsize = vsize + (vsize * face->mCloseToCamera * texture_camera_boost); // Update the max on screen vsize based upon the on screen vsize close_to_camera += face->mCloseToCamera; - LL_DEBUGS() << face->getViewerObject()->getID() << " TID " << imagep->getID() << " #F " << imagep->getNumFaces(i) << " OS Vsize: " << vsize << " Vsize: " << (vsize * bias) << " CTC: " << face->mCloseToCamera << " Channel " << i << " Face Index " << fi << LL_ENDL; + // LL_DEBUGS() << face->getViewerObject()->getID() << " TID " << imagep->getID() << " #F " << imagep->getNumFaces(i) << " OS Vsize: " << vsize << " Vsize: " << (vsize * bias) << " CTC: " << face->mCloseToCamera << " Channel " << i << " Face Index " << fi << LL_ENDL; max_on_screen_vsize = llmax(max_on_screen_vsize, vsize); max_vsize = llmax(max_vsize, vsize * bias); // [FIRE-35081] From f6ed2a9984555ed00f4e25971a1903b38fb9ea5e Mon Sep 17 00:00:00 2001 From: Beq Date: Thu, 8 May 2025 21:49:32 +0100 Subject: [PATCH 4/7] Fix incorrect calculation in the discard adjustment --- indra/newview/lltexturecache.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp index b633dc4fed..bbcd832b14 100644 --- a/indra/newview/lltexturecache.cpp +++ b/indra/newview/lltexturecache.cpp @@ -2089,12 +2089,14 @@ LLPointer LLTextureCache::readFromFastCache(const LLUUID& id, S32& d // So a 1024x1024 texture with a dicard of 6 will become 32x32 and a 2048x2048 texture with a discard of 7 will become a 64x64 texture. if (discardlevel > MAX_DISCARD_LEVEL) { + LL_PROFILE_ZONE_NAMED_CATEGORY_TEXTURE("FixBadDiscardLevel"); + S32 w = head[0]; // Get the current width from the header (16) S32 h = head[1]; // Get the current height from the header (16) // Expand the width and height by teh difference between the discard and MAX_DISCARD_LEVEL bit shifted to the left. (Expand power of 2 textures) - w <<= MAX_DISCARD_LEVEL - discardlevel; - h <<= MAX_DISCARD_LEVEL - discardlevel; + w <<= discardlevel - MAX_DISCARD_LEVEL; + h <<= discardlevel - MAX_DISCARD_LEVEL; // Set the discard level to the MAX_DISCARD_LEVEL discardlevel = MAX_DISCARD_LEVEL; From 7cc872cde8bb2a346dddd513198beedfdc65a6dd Mon Sep 17 00:00:00 2001 From: Beq Date: Thu, 8 May 2025 23:17:39 +0100 Subject: [PATCH 5/7] remove another debug with high overhead. --- indra/newview/llvovolume.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index ba8fb0438a..1c829e6902 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -2664,10 +2664,11 @@ S32 LLVOVolume::setTEMaterialID(const U8 te, const LLMaterialID& pMaterialID) S32 LLVOVolume::setTEMaterialParams(const U8 te, const LLMaterialPtr pMaterialParams) { S32 res = LLViewerObject::setTEMaterialParams(te, pMaterialParams); - - LL_DEBUGS("MaterialTEs") << "te " << (S32)te << " material " << ((pMaterialParams) ? pMaterialParams->asLLSD() : LLSD("null")) << " res " << res - << ( LLSelectMgr::getInstance()->getSelection()->contains(const_cast(this), te) ? " selected" : " not selected" ) - << LL_ENDL; + // Remove debug logging that is more expensive than the call itself even when disabled + // LL_DEBUGS("MaterialTEs") << "te " << (S32)te << " material " << ((pMaterialParams) ? pMaterialParams->asLLSD() : LLSD("null")) << " res " << res + // << ( LLSelectMgr::getInstance()->getSelection()->contains(const_cast(this), te) ? " selected" : " not selected" ) + // << LL_ENDL; + // setChanged(ALL_CHANGED); if (!mDrawable.isNull()) { From 2a06b765ddd954763fe075f30fbbb6cf5deefb56 Mon Sep 17 00:00:00 2001 From: Beq Date: Thu, 8 May 2025 23:22:08 +0100 Subject: [PATCH 6/7] Revert PR #107 fix-mouselook-clicking - as per PR#113 This reverts commit 5ed95013e4e1499f212390c2a408e3d860a52756, reversing changes made to 3c9cd68cc5f73de108a74b1b13aea67c855b30b5. A new PR based on PR#113 has been pushed upstream to LL to ensure common behaviour going forward --- indra/newview/llviewerwindow.cpp | 8 -------- 1 file changed, 8 deletions(-) diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 77130beae3..e5fe30c167 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -5430,14 +5430,6 @@ LLPickInfo LLViewerWindow::pickImmediate(S32 x, S32 y_from_bot, bool pick_transp pick_transparent = true; } - // Pick from center of screen in mouselook - if (gAgentCamera.getCameraMode() == CAMERA_MODE_MOUSELOOK) - { - x = gViewerWindow->getWorldViewRectScaled().getWidth() / 2; - y_from_bot = gViewerWindow->getWorldViewRectScaled().getHeight() / 2; - } - // - // shortcut queueing in mPicks and just update mLastPick in place MASK key_mask = gKeyboard->currentMask(true); mLastPick = LLPickInfo(LLCoordGL(x, y_from_bot), key_mask, pick_transparent, pick_rigged, pick_particle, pick_reflection_probe, true, false, NULL); From fabe6b84c19a718339df09a5236147378f17c05a Mon Sep 17 00:00:00 2001 From: Beq Date: Thu, 8 May 2025 23:46:44 +0100 Subject: [PATCH 7/7] Adding Darlcat to the contributors --- indra/newview/skins/default/xui/en/floater_about.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml index ed2cec9658..36be04f12c 100644 --- a/indra/newview/skins/default/xui/en/floater_about.xml +++ b/indra/newview/skins/default/xui/en/floater_about.xml @@ -165,7 +165,7 @@ Additional code generously contributed to Firestorm by: top_pad="4" width="450" wrap="true"> -Aira Yumi, Albatroz Hird, Alexie Birman, Andromeda Rage, Angus Boyd, Animats, Armin Weatherwax, Ayane Lyla, Casper Warden, Chalice Yao, Chaser Zaks, Chorazin Allen, Cron Stardust, Damian Zhaoying, Dan Threebeards, Dawa Gurbux, Dax Dupont, Denver Maksim, Dragonborn Forzane, Drake Arconis, Felyza Wishbringer, f0rbidden, Fractured Crystal, Geenz Spad, Gibson Firehawk, Hecklezz, Hitomi Tiponi, humbletim, Inusaito Sayori, Jean Severine, Katharine Berry, Kittin Ninetails, Kool Koolhoven, Lance Corrimal, Lassie, Latif Khalifa, Laurent Bechir, Logue Takacs, Magne Metaverse LLC, Magus Freston, Makidoll, Manami Hokkigai, MartinRJ Fayray, McCabe Maxstead, Melancholy Lemon, Melysmile, Mimika Oh, minerjr, Mister Acacia, MorganMegan, Morgan Pennent, Mysty Saunders, Nagi Michinaga, Name Short, nhede Core, NiranV Dean, Nogardrevlis Lectar, Oren Hurvitz, paperwork, Penny Patton, Peyton Menges, programmtest, Qwerty Venom, rafak360, Rebecca Ashbourne, Revolution Smythe, Romka Swallowtail, Sahkolihaa Contepomi, sal Kaligawa, Samm Florian, Satomi Ahn, Sei Lisa, Sekkmer, Sempervirens Oddfellow, Shin Wasp, Shyotl Kuhr, Sione Lomu, Skills Hak, StarlightShining, Sunset Faulkes, Tapple Gao, Testicular Slingshot, Thickbrick Sleaford, Ubit Umarov, Vaalith Jinn, Vincent Sylvester, Whirly Fizzle, Xenhat Liamano, 小滢 Zi Ying, Zwagoth Klaar and others. +Aira Yumi, Albatroz Hird, Alexie Birman, Andromeda Rage, Angus Boyd, Animats, Armin Weatherwax, Ayane Lyla, Casper Warden, Chalice Yao, Chaser Zaks, Chorazin Allen, Cron Stardust, Damian Zhaoying, Dan Threebeards, Darlcat, Dawa Gurbux, Dax Dupont, Denver Maksim, Dragonborn Forzane, Drake Arconis, Felyza Wishbringer, f0rbidden, Fractured Crystal, Geenz Spad, Gibson Firehawk, Hecklezz, Hitomi Tiponi, humbletim, Inusaito Sayori, Jean Severine, Katharine Berry, Kittin Ninetails, Kool Koolhoven, Lance Corrimal, Lassie, Latif Khalifa, Laurent Bechir, Logue Takacs, Magne Metaverse LLC, Magus Freston, Makidoll, Manami Hokkigai, MartinRJ Fayray, McCabe Maxstead, Melancholy Lemon, Melysmile, Mimika Oh, minerjr, Mister Acacia, MorganMegan, Morgan Pennent, Mysty Saunders, Nagi Michinaga, Name Short, nhede Core, NiranV Dean, Nogardrevlis Lectar, Oren Hurvitz, paperwork, Penny Patton, Peyton Menges, programmtest, Qwerty Venom, rafak360, Rebecca Ashbourne, Revolution Smythe, Romka Swallowtail, Sahkolihaa Contepomi, sal Kaligawa, Samm Florian, Satomi Ahn, Sei Lisa, Sekkmer, Sempervirens Oddfellow, Shin Wasp, Shyotl Kuhr, Sione Lomu, Skills Hak, StarlightShining, Sunset Faulkes, Tapple Gao, Testicular Slingshot, Thickbrick Sleaford, Ubit Umarov, Vaalith Jinn, Vincent Sylvester, Whirly Fizzle, Xenhat Liamano, 小滢 Zi Ying, Zwagoth Klaar and others.