Merge branch 'release/2024.12-ForeverFPS' of https://github.com/secondlife/viewer
commit
49a6b228aa
|
|
@ -57,6 +57,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
|
||||
|
|
@ -5168,8 +5169,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()
|
||||
|
|
|
|||
|
|
@ -1006,39 +1006,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
|
||||
|
|
@ -1080,6 +1047,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.f;
|
||||
|
||||
|
|
@ -1169,15 +1139,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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue