summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Parks <davep@lindenlab.com>2023-03-24 10:31:32 -0500
committerDave Parks <davep@lindenlab.com>2023-03-24 10:31:32 -0500
commitdf9d2b6e9613d15d39e3e870fc09686e41b6c37f (patch)
tree0d56d9c03da45e6e4e59d1f694afbb0c1009da15
parentcf3a0c77f1855aa1a33ff39f86e846e7fb9031d1 (diff)
SL-19321 Optimization pass -- reduce occlusion culling frame stalls, reduce shadow draw distance in probes.
-rw-r--r--indra/newview/app_settings/settings.xml11
-rw-r--r--indra/newview/llvieweroctree.cpp4
-rw-r--r--indra/newview/pipeline.cpp2
3 files changed, 15 insertions, 2 deletions
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 6d7e93b364..5ade88e32b 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -14261,6 +14261,17 @@
<key>Value</key>
<integer>1</integer>
</map>
+ <key>RenderOcclusionTimeout</key>
+ <map>
+ <key>Comment</key>
+ <string>Maximum number of frames to wait on an occlusion query before forcibly reading it back</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>S32</string>
+ <key>Value</key>
+ <integer>8</integer>
+ </map>
<key>UseObjectCacheOcclusion</key>
<map>
<key>Comment</key>
diff --git a/indra/newview/llvieweroctree.cpp b/indra/newview/llvieweroctree.cpp
index d1d23cfb8e..a2d8d30fb2 100644
--- a/indra/newview/llvieweroctree.cpp
+++ b/indra/newview/llvieweroctree.cpp
@@ -1131,7 +1131,9 @@ void LLOcclusionCullingGroup::checkOcclusion()
mOcclusionCheckCount[LLViewerCamera::sCurCameraID]++;
}
- if (available || mOcclusionCheckCount[LLViewerCamera::sCurCameraID] > 4)
+ static LLCachedControl<S32> occlusion_timeout(gSavedSettings, "RenderOcclusionTimeout", 4);
+
+ if (available || mOcclusionCheckCount[LLViewerCamera::sCurCameraID] > occlusion_timeout)
{
mOcclusionCheckCount[LLViewerCamera::sCurCameraID] = 0;
GLuint query_result; // Will be # samples drawn, or a boolean depending on mHasOcclusionQuery2 (both are type GLuint)
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 18b0192346..f059c87c91 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -9419,7 +9419,7 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
}
else
{
- for (S32 j = 0; j < 4; j++)
+ for (S32 j = 0; j < (gCubeSnapshot ? 3 : 4); j++)
{
if (!hasRenderDebugMask(RENDER_DEBUG_SHADOW_FRUSTA) && !gCubeSnapshot)
{