summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Nikolenko <mnikolenko@productengine.com>2025-03-11 11:17:50 +0200
committerGitHub <noreply@github.com>2025-03-11 11:17:50 +0200
commit716e09cffeea638f3fa26737d33ba1c4c3532473 (patch)
tree954d99d460659a03ba104d95a95f14c9d1f03b79
parent8d00744998419edc4726ad57c874e6fa7415c80c (diff)
parent2648d5cdc8a725f4cb4924fa31ae20c82a860a34 (diff)
Merge pull request #3707 from secondlife/maxim/2025.03
Merge branch 'main' into release/2025.03
-rw-r--r--indra/newview/llagent.cpp14
-rw-r--r--indra/newview/llglsandbox.cpp66
2 files changed, 39 insertions, 41 deletions
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index a076594e0a..ed82f1db48 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -56,6 +56,7 @@
#include "llgroupmgr.h"
#include "llhudmanager.h"
#include "lljoystickbutton.h"
+#include "lllandmarkactions.h"
#include "llmorphview.h"
#include "llmoveview.h"
#include "llnavigationbar.h" // to show/hide navigation bar when changing mouse look state
@@ -4320,8 +4321,17 @@ void LLAgent::teleportViaLandmark(const LLUUID& landmark_asset_id)
void LLAgent::doTeleportViaLandmark(const LLUUID& landmark_asset_id)
{
- LLViewerRegion *regionp = getRegion();
- if(regionp && teleportCore())
+ bool is_local(false);
+ LLViewerRegion* regionp = getRegion();
+
+ if (LLLandmark* landmark = gLandmarkList.getAsset(landmark_asset_id, NULL))
+ {
+ LLVector3d pos_global;
+ landmark->getGlobalPos(pos_global);
+ is_local = (regionp->getHandle() == to_region_handle_global((F32)pos_global.mdV[VX], (F32)pos_global.mdV[VY]));
+ }
+
+ if(regionp && teleportCore(is_local))
{
LL_INFOS("Teleport") << "Sending TeleportLandmarkRequest. Current region handle " << regionp->getHandle()
<< " region id " << regionp->getRegionID()
diff --git a/indra/newview/llglsandbox.cpp b/indra/newview/llglsandbox.cpp
index 5484ce6276..112008172e 100644
--- a/indra/newview/llglsandbox.cpp
+++ b/indra/newview/llglsandbox.cpp
@@ -903,39 +903,6 @@ private:
};
-F32 shader_timer_benchmark(std::vector<LLRenderTarget> & dest, TextureHolder & texHolder, U32 textures_count, LLVertexBuffer * buff, F32 &seconds)
-{
- // run GPU timer benchmark
-
- //number of samples to take
- const S32 samples = 64;
-
- {
- ShaderProfileHelper initProfile;
- dest[0].bindTarget();
- gBenchmarkProgram.bind();
- for (S32 c = 0; c < samples; ++c)
- {
- for (U32 i = 0; i < textures_count; ++i)
- {
- texHolder.bind(i);
- buff->setBuffer();
- buff->drawArrays(LLRender::TRIANGLES, 0, 3);
- }
- }
- gBenchmarkProgram.unbind();
- dest[0].flush();
- }
-
- F32 ms = gBenchmarkProgram.mTimeElapsed / 1000000.f;
- seconds = ms / 1000.f;
-
- F64 samples_drawn = (F64)gBenchmarkProgram.mSamplesDrawn;
- F64 gpixels_drawn = samples_drawn / 1000000000.0;
- F32 samples_sec = (F32)(gpixels_drawn / seconds);
- return samples_sec * 4; // 4 bytes per sample
-}
-
//-----------------------------------------------------------------------------
// gpu_benchmark()
// returns measured memory bandwidth of GPU in gigabytes per second
@@ -977,6 +944,9 @@ F32 gpu_benchmark()
//number of textures
const U32 count = 32;
+ //number of samples to take
+ const S32 samples = 64;
+
//time limit, allocation operations shouldn't take longer then 30 seconds, same for actual benchmark.
const F32 time_limit = 30;
@@ -1066,15 +1036,33 @@ F32 gpu_benchmark()
LLGLSLShader::unbind();
- // run GPU timer benchmark twice
- F32 seconds = 0;
- F32 gbps = shader_timer_benchmark(dest, texHolder, count, buff.get(), seconds);
+ // run GPU timer benchmark
+ {
+ ShaderProfileHelper initProfile;
+ dest[0].bindTarget();
+ gBenchmarkProgram.bind();
+ for (S32 c = 0; c < samples; ++c)
+ {
+ for (U32 i = 0; i < count; ++i)
+ {
+ texHolder.bind(i);
+ buff->setBuffer();
+ buff->drawArrays(LLRender::TRIANGLES, 0, 3);
+ }
+ }
+ gBenchmarkProgram.unbind();
+ dest[0].flush();
+ }
- LL_INFOS("Benchmark") << "Memory bandwidth, 1st run is " << llformat("%.3f", gbps) << " GB/sec according to ARB_timer_query, total time " << seconds << " seconds" << LL_ENDL;
+ F32 ms = gBenchmarkProgram.mTimeElapsed/1000000.f;
+ F32 seconds = ms/1000.f;
- gbps = shader_timer_benchmark(dest, texHolder, count, buff.get(), seconds);
+ F64 samples_drawn = (F64)gBenchmarkProgram.mSamplesDrawn;
+ F64 gpixels_drawn = samples_drawn / 1000000000.0;
+ F32 samples_sec = (F32)(gpixels_drawn/seconds);
+ F32 gbps = samples_sec*4; // 4 bytes per sample
- LL_INFOS("Benchmark") << "Memory bandwidth, final run is " << llformat("%.3f", gbps) << " GB/sec according to ARB_timer_query, total time " << seconds << " seconds" << LL_ENDL;
+ LL_INFOS("Benchmark") << "Memory bandwidth is " << llformat("%.3f", gbps) << " GB/sec according to ARB_timer_query, total time " << seconds << " seconds" << LL_ENDL;
return gbps;
}