summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorAndrey Kleshchev <andreykproductengine@lindenlab.com>2024-11-10 12:21:34 +0200
committerAndrey Kleshchev <117672381+akleshchev@users.noreply.github.com>2025-02-05 18:50:31 +0200
commitb84f3ff6b129cd71955bcb1fc885491b7002f87f (patch)
treece822c117256cf342e7905f6b9fc7bc0dddaf01d /indra
parent9bfdb7cf6ce05f4c2f97f82888a9aaae62298c42 (diff)
viewer#2780 Speed up terrain loading on teleport
Terrain was arriving and processing too late resulting in issues like "Lower terrain material incorrectly shown momentarily"
Diffstat (limited to 'indra')
-rw-r--r--indra/newview/llappviewer.cpp14
-rw-r--r--indra/newview/llviewermessage.cpp3
-rw-r--r--indra/newview/llviewertexturelist.cpp14
3 files changed, 28 insertions, 3 deletions
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 00624ebc6a..52bea875d9 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -4785,6 +4785,20 @@ void LLAppViewer::idle()
if (gTeleportDisplay)
{
+ if (gAgent.getTeleportState() == LLAgent::TELEPORT_ARRIVING)
+ {
+ // Teleported, but waiting for things to load, start processing surface data
+ {
+ LL_RECORD_BLOCK_TIME(FTM_NETWORK);
+ gVLManager.unpackData();
+ }
+ {
+ LL_RECORD_BLOCK_TIME(FTM_REGION_UPDATE);
+ const F32 max_region_update_time = .001f; // 1ms
+ LLWorld::getInstance()->updateRegions(max_region_update_time);
+ }
+ }
+
return;
}
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 1d4828fd33..0c702b24c1 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -3147,7 +3147,8 @@ void send_agent_update(bool force_send, bool send_reliable)
LL_PROFILE_ZONE_SCOPED;
llassert(!gCubeSnapshot);
- if (gAgent.getTeleportState() != LLAgent::TELEPORT_NONE)
+ if (gAgent.getTeleportState() != LLAgent::TELEPORT_NONE
+ && gAgent.getTeleportState() != LLAgent::TELEPORT_ARRIVING)
{
// We don't care if they want to send an agent update, they're not allowed
// until the target simulator is ready to receive them
diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
index 0b79c2d8e0..868dde05db 100644
--- a/indra/newview/llviewertexturelist.cpp
+++ b/indra/newview/llviewertexturelist.cpp
@@ -30,6 +30,7 @@
#include "llviewertexturelist.h"
+#include "llagent.h"
#include "llgl.h" // fot gathering stats from GL
#include "llimagegl.h"
#include "llimagebmp.h"
@@ -815,10 +816,19 @@ void LLViewerTextureList::updateImages(F32 max_time)
clearFetchingRequests();
gPipeline.clearRebuildGroups();
cleared = true;
+ return;
}
- return;
+ // ARRIVING is a delay to let things decode, cache and process,
+ // so process textures like normal despite gTeleportDisplay
+ if (gAgent.getTeleportState() != LLAgent::TELEPORT_ARRIVING)
+ {
+ return;
+ }
+ }
+ else
+ {
+ cleared = false;
}
- cleared = false;
LLAppViewer::getTextureFetch()->setTextureBandwidth((F32)LLTrace::get_frame_recording().getPeriodMeanPerSec(LLStatViewer::TEXTURE_NETWORK_DATA_RECEIVED).value());