summaryrefslogtreecommitdiff
path: root/indra/newview/llfeaturemanager.cpp
diff options
context:
space:
mode:
authorAndrey Lihatskiy <alihatskiy@productengine.com>2025-11-13 19:03:24 +0200
committerAndrey Lihatskiy <alihatskiy@productengine.com>2025-11-13 19:03:24 +0200
commitceba070dcb42609ca267bdc5dac003db7aa2ad09 (patch)
treecf444a5b3ad3041e36b3e11307b2c6907badabda /indra/newview/llfeaturemanager.cpp
parent2a620a9447b7d0544d5c500d88b4128565486018 (diff)
parent0ceefe6d270a4688720287f88b3bd5e2509909c1 (diff)
Merge branch 'release/2025.08' into marchcat/slua-2508
# Conflicts: # autobuild.xml
Diffstat (limited to 'indra/newview/llfeaturemanager.cpp')
-rw-r--r--indra/newview/llfeaturemanager.cpp47
1 files changed, 46 insertions, 1 deletions
diff --git a/indra/newview/llfeaturemanager.cpp b/indra/newview/llfeaturemanager.cpp
index ba54d93c75..9f3df54b05 100644
--- a/indra/newview/llfeaturemanager.cpp
+++ b/indra/newview/llfeaturemanager.cpp
@@ -404,8 +404,53 @@ F32 logExceptionBenchmark()
}
#endif
+bool checkRDNA35()
+{
+ // This checks if we're running on an RDNA3.5 GPU. You're only going to see these on AMD's APUs.
+ // As of driver version 25, we're seeing stalls in some of our queries.
+ // This appears to be a driver bug, and appears to be specific RDNA3.5 APUs.
+ // There's multiples of these guys, so we just use this function to check if that GPU is on the list of known RDNA3.5 APUs.
+ // - Geenz 11/12/2025
+ std::array<std::string, 7> rdna35GPUs = {
+ "8060S",
+ "8050S",
+ "8040S",
+ "860M",
+ "840M",
+ "890M",
+ "880M"
+ };
+
+ for (const auto& gpu_name : rdna35GPUs)
+ {
+ if (gGLManager.getRawGLString().find(gpu_name) != std::string::npos)
+ {
+ LL_WARNS("RenderInit") << "Detected AMD RDNA3.5 GPU (" << gpu_name << ")." << LL_ENDL;
+ return true;
+ }
+ }
+
+ return false;
+}
+
bool LLFeatureManager::loadGPUClass()
{
+ // This is a hack for certain AMD GPUs in newer driver versions on certain APUs.
+ // These GPUs will show inconsistent freezes when attempting to run shader profiles against them.
+ // This is extremely problematic as it can lead to:
+ // - Login freezes
+ // - Inability to start the client
+ // - Completely random avatars triggering a freeze
+ // As a result, we filter out these GPUs for shader profiling.
+ // - Geenz 11/11/2025
+
+ if (gGLManager.getRawGLString().find("Radeon") != std::string::npos && checkRDNA35() && gGLManager.mDriverVersionVendorString.find("25.") != std::string::npos)
+ {
+ LL_WARNS("RenderInit") << "Detected AMD RDNA3.5 GPU on a known bad driver; disabling shader profiling to prevent freezes." << LL_ENDL;
+ mSkipProfiling = true;
+ LLGLSLShader::sCanProfile = false;
+ }
+
if (!gSavedSettings.getBOOL("SkipBenchmark"))
{
F32 class1_gbps = gSavedSettings.getF32("RenderClass1MemoryBandwidth");
@@ -465,7 +510,7 @@ bool LLFeatureManager::loadGPUClass()
}
#if LL_WINDOWS
- const F32Gigabytes MIN_PHYSICAL_MEMORY(2);
+ const F32Gigabytes MIN_PHYSICAL_MEMORY(8);
LLMemory::updateMemoryInfo();
F32Gigabytes physical_mem = LLMemory::getMaxMemKB();