From eff46262c8324ed4931cdd544a757f0c13f9ec0a Mon Sep 17 00:00:00 2001
From: Dave Parks <davep@lindenlab.com>
Date: Thu, 12 Dec 2024 13:46:01 -0800
Subject: #2590 Radeon mac optimization pass (#3277)

- Skip updating of reflection probes that are not the default probe when probe coverage is set to "None"
- enable RenderAppleUseMultGL and disable occlusion culling on Macs with AMD GPUs
- Reduce the number of texture decode threads on Macs with intel cpus.
- Move texture deletion to LLImageGL::updateClass and prevent textures from staying resident in vram longer than 3 frames
- Disable SSAO by default on Macs with intel CPUs
---
 indra/newview/llviewercontrol.cpp | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

(limited to 'indra/newview/llviewercontrol.cpp')

diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index 172ffcb0d4..18746e76fc 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -77,6 +77,10 @@
 #include "llstartup.h"
 #include "llperfstats.h"
 
+#if LL_DARWIN
+#include "llwindowmacosx.h"
+#endif
+
 // Third party library includes
 #include <boost/algorithm/string.hpp>
 
@@ -453,6 +457,17 @@ static bool handleReflectionProbeDetailChanged(const LLSD& newvalue)
     return true;
 }
 
+#if LL_DARWIN
+static bool handleAppleUseMultGLChanged(const LLSD& newvalue)
+{
+    if (gGLManager.mInited)
+    {
+        LLWindowMacOSX::setUseMultGL(newvalue.asBoolean());
+    }
+    return true;
+}
+#endif
+
 static bool handleHeroProbeResolutionChanged(const LLSD &newvalue)
 {
     if (gPipeline.isInit())
@@ -820,6 +835,9 @@ void settings_setup_listeners()
     setting_setup_signal_listener(gSavedSettings, "RenderReflectionProbeLevel", handleReflectionProbeDetailChanged);
     setting_setup_signal_listener(gSavedSettings, "RenderReflectionProbeDetail", handleReflectionProbeDetailChanged);
     setting_setup_signal_listener(gSavedSettings, "RenderReflectionsEnabled", handleReflectionProbeDetailChanged);
+#if LL_DARWIN
+    setting_setup_signal_listener(gSavedSettings, "RenderAppleUseMultGL", handleAppleUseMultGLChanged);
+#endif
     setting_setup_signal_listener(gSavedSettings, "RenderScreenSpaceReflections", handleReflectionProbeDetailChanged);
     setting_setup_signal_listener(gSavedSettings, "RenderMirrors", handleReflectionProbeDetailChanged);
     setting_setup_signal_listener(gSavedSettings, "RenderHeroProbeResolution", handleHeroProbeResolutionChanged);
-- 
cgit v1.2.3