Merge branch 'develop' of https://github.com/secondlife/viewer
# Conflicts: # autobuild.xml # indra/llcommon/llprofiler.h # indra/llcommon/llthread.cpp # indra/newview/llappviewer.cpp # indra/newview/llfloaterpreferencesgraphicsadvanced.cppmaster
commit
cb43c1c792
|
|
@ -1927,11 +1927,11 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>3bf88febd23656327a4ee2a3ebe99cae4b15573e</string>
|
||||
<string>3d173e176e9777f1b10f54fe0bd1c735a65b56e5</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>sha1</string>
|
||||
<key>url</key>
|
||||
<string>https://github.com/secondlife/3p-meshoptimizer/releases/download/v160-032f20a/meshoptimizer-160-darwin64-032f20a.tar.zst</string>
|
||||
<string>https://github.com/secondlife/3p-meshoptimizer/releases/download/v210-r1/meshoptimizer-210-darwin64-9846246058.tar.zst</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin64</string>
|
||||
|
|
@ -1955,15 +1955,29 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>13c0a33d9c49cc07b354527c7ef992d33f854c59</string>
|
||||
<string>6777467d1d06064351c27f70d556fdcba8420c52</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>sha1</string>
|
||||
<key>url</key>
|
||||
<string>https://github.com/secondlife/3p-meshoptimizer/releases/download/v160-032f20a/meshoptimizer-160-windows64-032f20a.tar.zst</string>
|
||||
<string>https://github.com/secondlife/3p-meshoptimizer/releases/download/v210-r1/meshoptimizer-210-windows64-9846246058.tar.zst</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows64</string>
|
||||
</map>
|
||||
<key>linux64</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>17eb4a03f94d363e9ad8b096ac590e0649cf91fa</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>sha1</string>
|
||||
<key>url</key>
|
||||
<string>https://github.com/secondlife/3p-meshoptimizer/releases/download/v210-r1/meshoptimizer-210-linux64-9846246058.tar.zst</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>license</key>
|
||||
<string>meshoptimizer</string>
|
||||
|
|
@ -1972,7 +1986,7 @@
|
|||
<key>copyright</key>
|
||||
<string>Copyright (c) 2016-2021 Arseny Kapoulkine</string>
|
||||
<key>version</key>
|
||||
<string>160</string>
|
||||
<string>210</string>
|
||||
<key>name</key>
|
||||
<string>meshoptimizer</string>
|
||||
<key>canonical_repo</key>
|
||||
|
|
@ -2747,65 +2761,65 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
|
|||
<map>
|
||||
<key>platforms</key>
|
||||
<map>
|
||||
<key>windows</key>
|
||||
<key>darwin64</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>ae3ac835e50d75e1c1691534bfddbf71</string>
|
||||
<string>a901a14066daf8c8796c8d2914917129427fd80b</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<string>sha1</string>
|
||||
<key>url</key>
|
||||
<string>https://3p.firestormviewer.org/tracy-v0.10.241831928-windows-241831928.tar.bz2</string>
|
||||
<string>https://github.com/secondlife/3p-tracy/releases/download/v0.10.0%2Br1/tracy-v0.10.0.9845715133-darwin64-9845715133.tar.zst</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
<string>darwin64</string>
|
||||
</map>
|
||||
<key>linux</key>
|
||||
<key>windows64</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>9ab29796dc144431a9db46fddfbd88b0</string>
|
||||
<string>ca5fc66e3431278f20286261ffe85192bbd9a2ca</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<string>sha1</string>
|
||||
<key>url</key>
|
||||
<string>https://3p.firestormviewer.org/tracy-v0.10.241831929-linux-241831929.tar.bz2</string>
|
||||
<string>https://github.com/secondlife/3p-tracy/releases/download/v0.10.0%2Br1/tracy-v0.10.0.9845715133-windows64-9845715133.tar.zst</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
<string>windows64</string>
|
||||
</map>
|
||||
<key>darwin</key>
|
||||
<key>linux64</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>f87f9db3a3c69464b46cd59490bca842</string>
|
||||
<string>e6f53d513c238ad599b75a8b5f94b8b0d1315438</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<string>sha1</string>
|
||||
<key>url</key>
|
||||
<string>https://3p.firestormviewer.org/tracy-v0.10.241831925-darwin-241831925.tar.bz2</string>
|
||||
<string>https://github.com/secondlife/3p-tracy/releases/download/v0.10.0%2Br1/tracy-v0.10.0.9845715133-linux64-9845715133.tar.zst</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin</string>
|
||||
<string>linux64</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>license</key>
|
||||
<string>bsd</string>
|
||||
<key>license_file</key>
|
||||
<string>LICENSES/Tracy.txt</string>
|
||||
<string>LICENSES/tracy_license.txt</string>
|
||||
<key>copyright</key>
|
||||
<string>Copyright (c) 2017-2022, Bartosz Taudul (wolf@nereid.pl)</string>
|
||||
<key>version</key>
|
||||
<string>v0.10.241491433</string>
|
||||
<string>v0.10.0.9845715133</string>
|
||||
<key>name</key>
|
||||
<string>tracy</string>
|
||||
<key>canonical_repo</key>
|
||||
<string>https://github.com/beqjanus/3p-tracy</string>
|
||||
<string>https://bitbucket.org/lindenlab/3p-tracy</string>
|
||||
<key>description</key>
|
||||
<string>Tracy Profiler Library</string>
|
||||
<key>source</key>
|
||||
<string>https://github.com/beqjanus/3p-tracy</string>
|
||||
<string>https://bitbucket.org/lindenlab/3p-tracy</string>
|
||||
<key>source_type</key>
|
||||
<string>git</string>
|
||||
</map>
|
||||
|
|
|
|||
|
|
@ -170,7 +170,7 @@ namespace {
|
|||
virtual void recordMessage(LLError::ELevel level,
|
||||
const std::string& message) override
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_LOGGING
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_LOGGING;
|
||||
if (LLError::getAlwaysFlush())
|
||||
{
|
||||
mFile << message << std::endl;
|
||||
|
|
@ -237,7 +237,7 @@ namespace {
|
|||
virtual void recordMessage(LLError::ELevel level,
|
||||
const std::string& message) override
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_LOGGING
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_LOGGING;
|
||||
// The default colors for error, warn and debug are now a bit more pastel
|
||||
// and easier to read on the default (black) terminal background but you
|
||||
// now have the option to set the color of each via an environment variables:
|
||||
|
|
@ -280,7 +280,7 @@ namespace {
|
|||
|
||||
LL_FORCE_INLINE void writeANSI(const std::string& ansi_code, const std::string& message)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_LOGGING
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_LOGGING;
|
||||
static std::string s_ansi_bold = createBoldANSI(); // bold text
|
||||
static std::string s_ansi_reset = createResetANSI(); // reset
|
||||
// ANSI color code escape sequence, message, and reset in one fprintf call
|
||||
|
|
@ -317,7 +317,7 @@ namespace {
|
|||
virtual void recordMessage(LLError::ELevel level,
|
||||
const std::string& message) override
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_LOGGING
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_LOGGING;
|
||||
mBuffer->addLine(message);
|
||||
}
|
||||
|
||||
|
|
@ -344,7 +344,7 @@ namespace {
|
|||
virtual void recordMessage(LLError::ELevel level,
|
||||
const std::string& message) override
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_LOGGING
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_LOGGING;
|
||||
debugger_print(message);
|
||||
}
|
||||
};
|
||||
|
|
@ -1227,7 +1227,7 @@ namespace
|
|||
|
||||
void writeToRecorders(const LLError::CallSite& site, const std::string& message)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_LOGGING
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_LOGGING;
|
||||
LLError::ELevel level = site.mLevel;
|
||||
SettingsConfigPtr s = Globals::getInstance()->getSettingsConfig();
|
||||
|
||||
|
|
@ -1365,7 +1365,7 @@ namespace LLError
|
|||
|
||||
bool Log::shouldLog(CallSite& site)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_LOGGING
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_LOGGING;
|
||||
LLMutexTrylock lock(getMutex<LOG_MUTEX>(), 5);
|
||||
if (!lock.isLocked())
|
||||
{
|
||||
|
|
@ -1410,7 +1410,7 @@ namespace LLError
|
|||
|
||||
void Log::flush(const std::ostringstream& out, const CallSite& site)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_LOGGING
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_LOGGING;
|
||||
LLMutexTrylock lock(getMutex<LOG_MUTEX>(),5);
|
||||
if (!lock.isLocked())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -190,7 +190,7 @@ namespace LLError
|
|||
{}
|
||||
void recordMessage(LLError::ELevel level, const std::string& message) override
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
mCallable(level, message);
|
||||
}
|
||||
private:
|
||||
|
|
|
|||
|
|
@ -429,7 +429,7 @@ public:
|
|||
// path, then stores it to mTarget.
|
||||
virtual bool post(const LLSD& event)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
|
||||
// Extract the element specified by 'mPath' from 'event'. To perform a
|
||||
// generic type-appropriate store through mTarget, construct an
|
||||
|
|
|
|||
|
|
@ -51,13 +51,28 @@
|
|||
//----------------------------------------------------------------------------
|
||||
|
||||
//static
|
||||
|
||||
// most important memory metric for texture streaming
|
||||
// On Windows, this should agree with resource monitor -> performance -> memory -> available
|
||||
// On OS X, this should be activity monitor -> memory -> (physical memory - memory used)
|
||||
// NOTE: this number MAY be less than the actual available memory on systems with more than MaxHeapSize64 GB of physical memory (default 16GB)
|
||||
// In that case, should report min(available, sMaxHeapSizeInKB-sAllocateMemInKB)
|
||||
U32Kilobytes LLMemory::sAvailPhysicalMemInKB(U32_MAX);
|
||||
|
||||
// Installed physical memory
|
||||
U32Kilobytes LLMemory::sMaxPhysicalMemInKB(0);
|
||||
|
||||
// Maximimum heap size according to the user's settings (default 16GB)
|
||||
U32Kilobytes LLMemory::sMaxHeapSizeInKB(U32_MAX);
|
||||
|
||||
// Current memory usage
|
||||
U32Kilobytes LLMemory::sAllocatedMemInKB(0);
|
||||
|
||||
U32Kilobytes LLMemory::sAllocatedPageSizeInKB(0);
|
||||
|
||||
|
||||
static LLTrace::SampleStatHandle<F64Megabytes> sAllocatedMem("allocated_mem", "active memory in use by application");
|
||||
static LLTrace::SampleStatHandle<F64Megabytes> sVirtualMem("virtual_mem", "virtual memory assigned to application");
|
||||
U32Kilobytes LLMemory::sAllocatedMemInKB(0);
|
||||
U32Kilobytes LLMemory::sAllocatedPageSizeInKB(0);
|
||||
U32Kilobytes LLMemory::sMaxHeapSizeInKB(U32_MAX);
|
||||
|
||||
void ll_assert_aligned_func(uintptr_t ptr,U32 alignment)
|
||||
{
|
||||
|
|
@ -85,8 +100,14 @@ void LLMemory::initMaxHeapSizeGB(F32Gigabytes max_heap_size)
|
|||
//static
|
||||
void LLMemory::updateMemoryInfo()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED
|
||||
U32Kilobytes avail_phys;
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
|
||||
sMaxPhysicalMemInKB = gSysMemory.getPhysicalMemoryKB();
|
||||
|
||||
U32Kilobytes avail_mem;
|
||||
LLMemoryInfo::getAvailableMemoryKB(avail_mem);
|
||||
sAvailPhysicalMemInKB = avail_mem;
|
||||
|
||||
#if LL_WINDOWS
|
||||
PROCESS_MEMORY_COUNTERS counters;
|
||||
|
||||
|
|
@ -99,8 +120,6 @@ void LLMemory::updateMemoryInfo()
|
|||
sAllocatedMemInKB = U32Kilobytes::convert(U64Bytes(counters.WorkingSetSize));
|
||||
sAllocatedPageSizeInKB = U32Kilobytes::convert(U64Bytes(counters.PagefileUsage));
|
||||
sample(sVirtualMem, sAllocatedPageSizeInKB);
|
||||
U32Kilobytes avail_virtual;
|
||||
LLMemoryInfo::getAvailableMemoryKB(avail_phys, avail_virtual) ;
|
||||
|
||||
#elif defined(LL_DARWIN)
|
||||
task_vm_info info;
|
||||
|
|
@ -126,50 +145,20 @@ void LLMemory::updateMemoryInfo()
|
|||
{
|
||||
LL_WARNS() << "task_info failed" << LL_ENDL;
|
||||
}
|
||||
|
||||
// Total installed and available physical memory are properties of the host, not just our process.
|
||||
vm_statistics64_data_t vmstat;
|
||||
mach_msg_type_number_t count = HOST_VM_INFO64_COUNT;
|
||||
mach_port_t host = mach_host_self();
|
||||
vm_size_t page_size;
|
||||
host_page_size(host, &page_size);
|
||||
kern_return_t result = host_statistics64(host, HOST_VM_INFO64, reinterpret_cast<host_info_t>(&vmstat), &count);
|
||||
if (result == KERN_SUCCESS) {
|
||||
// This is what Chrome reports as 'the "Physical Memory Free" value reported by the Memory Monitor in Instruments.'
|
||||
// Note though that inactive pages are not included here and not yet free, but could become so under memory pressure.
|
||||
avail_phys = U32Bytes(vmstat.free_count * page_size);
|
||||
sMaxHeapSizeInKB = LLMemoryInfo::getHardwareMemSize();
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS() << "task_info failed" << LL_ENDL;
|
||||
}
|
||||
#elif defined(LL_LINUX)
|
||||
// Use sysinfo() to get the total physical memory.
|
||||
struct sysinfo info;
|
||||
sysinfo(&info);
|
||||
sMaxHeapSizeInKB = U32Kilobytes::convert((U64Bytes)info.totalram); // Total RAM in system
|
||||
avail_phys = U32Kilobytes::convert((U64Bytes)info.freeram); // Total Free RAM in system
|
||||
sAllocatedMemInKB = U32Kilobytes::convert(U64Bytes(LLMemory::getCurrentRSS())); // represents the RAM allocated by this process only (in line with the windows implementation)
|
||||
#else
|
||||
//not valid for other systems for now.
|
||||
LL_WARNS() << "LLMemory::updateMemoryInfo() not implemented for this platform." << LL_ENDL;
|
||||
sAllocatedMemInKB = U64Bytes(LLMemory::getCurrentRSS());
|
||||
sMaxPhysicalMemInKB = U64Bytes(U32_MAX);
|
||||
sAvailPhysicalMemInKB = U64Bytes(U32_MAX);
|
||||
#endif
|
||||
sample(sAllocatedMem, sAllocatedMemInKB);
|
||||
// sMaxPhysicalMem - max this process can use = the lesser of (what we already have + what's available) or MaxHeap
|
||||
sMaxPhysicalMemInKB = llmin(avail_phys + sAllocatedMemInKB, sMaxHeapSizeInKB);
|
||||
|
||||
if(sMaxPhysicalMemInKB > sAllocatedMemInKB)
|
||||
{
|
||||
sAvailPhysicalMemInKB = sMaxPhysicalMemInKB - sAllocatedMemInKB ;
|
||||
}
|
||||
else
|
||||
{
|
||||
sAvailPhysicalMemInKB = U32Kilobytes(0);
|
||||
}
|
||||
sAvailPhysicalMemInKB = llmin(sAvailPhysicalMemInKB, sMaxHeapSizeInKB - sAllocatedMemInKB);
|
||||
|
||||
return ;
|
||||
}
|
||||
|
||||
|
|
@ -200,16 +189,16 @@ void* LLMemory::tryToAlloc(void* address, U32 size)
|
|||
//static
|
||||
void LLMemory::logMemoryInfo(bool update)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
if(update)
|
||||
{
|
||||
updateMemoryInfo() ;
|
||||
}
|
||||
|
||||
LL_INFOS() << "Current allocated physical memory(KB): " << sAllocatedMemInKB << LL_ENDL ;
|
||||
LL_INFOS() << "Current allocated page size (KB): " << sAllocatedPageSizeInKB << LL_ENDL ;
|
||||
LL_INFOS() << "Current available physical memory(KB): " << sAvailPhysicalMemInKB << LL_ENDL ;
|
||||
LL_INFOS() << "Current max usable memory(KB): " << sMaxPhysicalMemInKB << LL_ENDL ;
|
||||
LL_INFOS() << llformat("Current allocated physical memory: %.2f MB", sAllocatedMemInKB / 1024.0) << LL_ENDL;
|
||||
LL_INFOS() << llformat("Current allocated page size: %.2f MB", sAllocatedPageSizeInKB / 1024.0) << LL_ENDL;
|
||||
LL_INFOS() << llformat("Current available physical memory: %.2f MB", sAvailPhysicalMemInKB / 1024.0) << LL_ENDL;
|
||||
LL_INFOS() << llformat("Current max usable memory: %.2f MB", sMaxPhysicalMemInKB / 1024.0) << LL_ENDL;
|
||||
}
|
||||
|
||||
//static
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ void LLMutex::unlock()
|
|||
|
||||
bool LLMutex::isLocked()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD;
|
||||
if (!mMutex.try_lock())
|
||||
{
|
||||
return true;
|
||||
|
|
@ -124,7 +124,7 @@ LLThread::id_t LLMutex::lockingThread() const
|
|||
|
||||
bool LLMutex::trylock()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD;
|
||||
if (isSelfLocked())
|
||||
{ //redundant lock
|
||||
mCount++;
|
||||
|
|
@ -161,7 +161,7 @@ LLSharedMutex::LLSharedMutex()
|
|||
|
||||
bool LLSharedMutex::isLocked() const
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD;
|
||||
std::lock_guard<std::mutex> lock(mLockMutex);
|
||||
|
||||
return !mLockingThreads.empty();
|
||||
|
|
@ -169,7 +169,7 @@ bool LLSharedMutex::isLocked() const
|
|||
|
||||
bool LLSharedMutex::isThreadLocked() const
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD;
|
||||
LLThread::id_t current_thread = LLThread::currentID();
|
||||
std::lock_guard<std::mutex> lock(mLockMutex);
|
||||
|
||||
|
|
@ -179,7 +179,7 @@ bool LLSharedMutex::isThreadLocked() const
|
|||
|
||||
void LLSharedMutex::lockShared()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD;
|
||||
LLThread::id_t current_thread = LLThread::currentID();
|
||||
|
||||
mLockMutex.lock();
|
||||
|
|
@ -204,7 +204,7 @@ void LLSharedMutex::lockShared()
|
|||
|
||||
void LLSharedMutex::lockExclusive()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD;
|
||||
LLThread::id_t current_thread = LLThread::currentID();
|
||||
|
||||
mLockMutex.lock();
|
||||
|
|
@ -237,7 +237,7 @@ void LLSharedMutex::lockExclusive()
|
|||
|
||||
bool LLSharedMutex::trylockShared()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD;
|
||||
LLThread::id_t current_thread = LLThread::currentID();
|
||||
std::lock_guard<std::mutex> lock(mLockMutex);
|
||||
|
||||
|
|
@ -260,7 +260,7 @@ bool LLSharedMutex::trylockShared()
|
|||
|
||||
bool LLSharedMutex::trylockExclusive()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD;
|
||||
LLThread::id_t current_thread = LLThread::currentID();
|
||||
std::lock_guard<std::mutex> lock(mLockMutex);
|
||||
|
||||
|
|
@ -282,7 +282,7 @@ bool LLSharedMutex::trylockExclusive()
|
|||
|
||||
void LLSharedMutex::unlockShared()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD;
|
||||
LLThread::id_t current_thread = LLThread::currentID();
|
||||
std::lock_guard<std::mutex> lock(mLockMutex);
|
||||
|
||||
|
|
@ -303,7 +303,7 @@ void LLSharedMutex::unlockShared()
|
|||
|
||||
void LLSharedMutex::unlockExclusive()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD;
|
||||
LLThread::id_t current_thread = LLThread::currentID();
|
||||
std::lock_guard<std::mutex> lock(mLockMutex);
|
||||
|
||||
|
|
@ -338,20 +338,20 @@ LLCondition::~LLCondition()
|
|||
|
||||
void LLCondition::wait()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD;
|
||||
std::unique_lock< std::mutex > lock(mMutex);
|
||||
mCond.wait(lock);
|
||||
}
|
||||
|
||||
void LLCondition::signal()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD;
|
||||
mCond.notify_one();
|
||||
}
|
||||
|
||||
void LLCondition::broadcast()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD;
|
||||
mCond.notify_all();
|
||||
}
|
||||
|
||||
|
|
@ -364,7 +364,7 @@ LLMutexTrylock::LLMutexTrylock(LLMutex* mutex)
|
|||
: mMutex(mutex),
|
||||
mLocked(false)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD;
|
||||
if (mMutex)
|
||||
mLocked = mMutex->trylock();
|
||||
}
|
||||
|
|
@ -373,7 +373,7 @@ LLMutexTrylock::LLMutexTrylock(LLMutex* mutex, U32 aTries, U32 delay_ms)
|
|||
: mMutex(mutex),
|
||||
mLocked(false)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD;
|
||||
if (!mMutex)
|
||||
return;
|
||||
|
||||
|
|
@ -388,7 +388,7 @@ LLMutexTrylock::LLMutexTrylock(LLMutex* mutex, U32 aTries, U32 delay_ms)
|
|||
|
||||
LLMutexTrylock::~LLMutexTrylock()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD;
|
||||
if (mMutex && mLocked)
|
||||
mMutex->unlock();
|
||||
}
|
||||
|
|
@ -400,7 +400,7 @@ LLMutexTrylock::~LLMutexTrylock()
|
|||
//
|
||||
LLScopedLock::LLScopedLock(std::mutex* mutex) : mMutex(mutex)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD;
|
||||
if(mutex)
|
||||
{
|
||||
mutex->lock();
|
||||
|
|
@ -419,7 +419,7 @@ LLScopedLock::~LLScopedLock()
|
|||
|
||||
void LLScopedLock::unlock()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD;
|
||||
if(mLocked)
|
||||
{
|
||||
mMutex->unlock();
|
||||
|
|
|
|||
|
|
@ -476,7 +476,7 @@ LLSDNotationParser::~LLSDNotationParser()
|
|||
// virtual
|
||||
S32 LLSDNotationParser::doParse(std::istream& istr, LLSD& data, S32 max_depth) const
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_LLSD
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_LLSD;
|
||||
// map: { string:object, string:object }
|
||||
// array: [ object, object, object ]
|
||||
// undef: !
|
||||
|
|
@ -736,7 +736,7 @@ S32 LLSDNotationParser::doParse(std::istream& istr, LLSD& data, S32 max_depth) c
|
|||
|
||||
S32 LLSDNotationParser::parseMap(std::istream& istr, LLSD& map, S32 max_depth) const
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_LLSD
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_LLSD;
|
||||
// map: { string:object, string:object }
|
||||
map = LLSD::emptyMap();
|
||||
S32 parse_count = 0;
|
||||
|
|
@ -797,7 +797,7 @@ S32 LLSDNotationParser::parseMap(std::istream& istr, LLSD& map, S32 max_depth) c
|
|||
|
||||
S32 LLSDNotationParser::parseArray(std::istream& istr, LLSD& array, S32 max_depth) const
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_LLSD
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_LLSD;
|
||||
// array: [ object, object, object ]
|
||||
array = LLSD::emptyArray();
|
||||
S32 parse_count = 0;
|
||||
|
|
@ -837,7 +837,7 @@ S32 LLSDNotationParser::parseArray(std::istream& istr, LLSD& array, S32 max_dept
|
|||
|
||||
bool LLSDNotationParser::parseString(std::istream& istr, LLSD& data) const
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_LLSD
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_LLSD;
|
||||
std::string value;
|
||||
auto count = deserialize_string(istr, value, mMaxBytesLeft);
|
||||
if(PARSE_FAILURE == count) return false;
|
||||
|
|
@ -848,7 +848,7 @@ bool LLSDNotationParser::parseString(std::istream& istr, LLSD& data) const
|
|||
|
||||
bool LLSDNotationParser::parseBinary(std::istream& istr, LLSD& data) const
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_LLSD
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_LLSD;
|
||||
// binary: b##"ff3120ab1"
|
||||
// or: b(len)"..."
|
||||
|
||||
|
|
|
|||
|
|
@ -965,7 +965,7 @@ void LLSDXMLParser::parsePart(const char *buf, llssize len)
|
|||
// virtual
|
||||
S32 LLSDXMLParser::doParse(std::istream& input, LLSD& data, S32 max_depth) const
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_LLSD
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_LLSD;
|
||||
|
||||
#ifdef XML_PARSER_PERFORMANCE_TESTS
|
||||
XML_Timer timer( &parseTime );
|
||||
|
|
|
|||
|
|
@ -220,7 +220,7 @@ bool compare_llsd_with_template(
|
|||
const LLSD& template_llsd,
|
||||
LLSD& resultant_llsd)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
|
||||
if (
|
||||
llsd_to_test.isUndefined() &&
|
||||
|
|
@ -343,7 +343,7 @@ bool filter_llsd_with_template(
|
|||
const LLSD & template_llsd,
|
||||
LLSD & resultant_llsd)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
|
||||
if (llsd_to_test.isUndefined() && template_llsd.isDefined())
|
||||
{
|
||||
|
|
@ -539,7 +539,7 @@ class TypeLookup
|
|||
public:
|
||||
TypeLookup()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
|
||||
for (const Data *di(boost::begin(typedata)), *dend(boost::end(typedata)); di != dend; ++di)
|
||||
{
|
||||
|
|
@ -549,7 +549,7 @@ public:
|
|||
|
||||
std::string lookup(LLSD::Type type) const
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
|
||||
MapType::const_iterator found = mMap.find(type);
|
||||
if (found != mMap.end())
|
||||
|
|
@ -601,7 +601,7 @@ static std::string match_types(LLSD::Type expect, // prototype.type()
|
|||
LLSD::Type actual, // type we're checking
|
||||
const std::string& pfx) // as for llsd_matches
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
|
||||
// Trivial case: if the actual type is exactly what we expect, we're good.
|
||||
if (actual == expect)
|
||||
|
|
@ -640,7 +640,7 @@ static std::string match_types(LLSD::Type expect, // prototype.type()
|
|||
// see docstring in .h file
|
||||
std::string llsd_matches(const LLSD& prototype, const LLSD& data, const std::string& pfx)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
|
||||
// An undefined prototype means that any data is valid.
|
||||
// An undefined slot in an array or map prototype means that any data
|
||||
|
|
@ -774,7 +774,7 @@ std::string llsd_matches(const LLSD& prototype, const LLSD& data, const std::str
|
|||
|
||||
bool llsd_equals(const LLSD& lhs, const LLSD& rhs, int bits)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
|
||||
// We're comparing strict equality of LLSD representation rather than
|
||||
// performing any conversions. So if the types aren't equal, the LLSD
|
||||
|
|
@ -884,7 +884,7 @@ namespace llsd
|
|||
|
||||
LLSD& drill_ref(LLSD& blob, const LLSD& rawPath)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
|
||||
// Treat rawPath uniformly as an array. If it's not already an array,
|
||||
// store it as the only entry in one. (But let's say Undefined means an
|
||||
|
|
@ -911,7 +911,7 @@ LLSD& drill_ref(LLSD& blob, const LLSD& rawPath)
|
|||
// path entry that's bad.
|
||||
for (LLSD::Integer i = 0; i < path.size(); ++i)
|
||||
{
|
||||
LL_PROFILE_ZONE_NUM( i )
|
||||
LL_PROFILE_ZONE_NUM(i);
|
||||
|
||||
const LLSD& key{path[i]};
|
||||
if (key.isString())
|
||||
|
|
@ -941,7 +941,7 @@ LLSD& drill_ref(LLSD& blob, const LLSD& rawPath)
|
|||
|
||||
LLSD drill(const LLSD& blob, const LLSD& path)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
|
||||
// drill_ref() does exactly what we want. Temporarily cast away
|
||||
// const-ness and use that.
|
||||
|
|
@ -955,7 +955,7 @@ LLSD drill(const LLSD& blob, const LLSD& path)
|
|||
// filter may be include to exclude/include keys in a map.
|
||||
LLSD llsd_clone(LLSD value, LLSD filter)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
|
||||
LLSD clone;
|
||||
bool has_filter(filter.isMap());
|
||||
|
|
|
|||
|
|
@ -74,6 +74,8 @@ using namespace llsd;
|
|||
# include <mach/mach_host.h>
|
||||
# include <mach/task.h>
|
||||
# include <mach/task_info.h>
|
||||
# include <sys/types.h>
|
||||
# include <mach/mach_init.h>
|
||||
#elif LL_LINUX
|
||||
# include <errno.h>
|
||||
# include <sys/utsname.h>
|
||||
|
|
@ -85,6 +87,7 @@ const char MEMINFO_FILE[] = "/proc/meminfo";
|
|||
#endif
|
||||
|
||||
LLCPUInfo gSysCPU;
|
||||
LLMemoryInfo gSysMemory;
|
||||
|
||||
// Don't log memory info any more often than this. It also serves as our
|
||||
// framerate sample size.
|
||||
|
|
@ -804,34 +807,33 @@ U32Kilobytes LLMemoryInfo::getPhysicalMemoryKB() const
|
|||
}
|
||||
|
||||
//static
|
||||
void LLMemoryInfo::getAvailableMemoryKB(U32Kilobytes& avail_physical_mem_kb, U32Kilobytes& avail_virtual_mem_kb)
|
||||
void LLMemoryInfo::getAvailableMemoryKB(U32Kilobytes& avail_mem_kb)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_MEMORY;
|
||||
#if LL_WINDOWS
|
||||
// Sigh, this shouldn't be a static method, then we wouldn't have to
|
||||
// reload this data separately from refresh()
|
||||
|
||||
LLSD statsMap(loadStatsMap());
|
||||
|
||||
avail_physical_mem_kb = (U32Kilobytes)statsMap["Avail Physical KB"].asInteger();
|
||||
avail_virtual_mem_kb = (U32Kilobytes)statsMap["Avail Virtual KB"].asInteger();
|
||||
avail_mem_kb = (U32Kilobytes)statsMap["Avail Physical KB"].asInteger();
|
||||
|
||||
#elif LL_DARWIN
|
||||
// mStatsMap is derived from vm_stat, look for (e.g.) "kb free":
|
||||
// $ vm_stat
|
||||
// Mach Virtual Memory Statistics: (page size of 4096 bytes)
|
||||
// Pages free: 462078.
|
||||
// Pages active: 142010.
|
||||
// Pages inactive: 220007.
|
||||
// Pages wired down: 159552.
|
||||
// "Translation faults": 220825184.
|
||||
// Pages copy-on-write: 2104153.
|
||||
// Pages zero filled: 167034876.
|
||||
// Pages reactivated: 65153.
|
||||
// Pageins: 2097212.
|
||||
// Pageouts: 41759.
|
||||
// Object cache: 841598 hits of 7629869 lookups (11% hit rate)
|
||||
avail_physical_mem_kb = (U32Kilobytes)-1 ;
|
||||
avail_virtual_mem_kb = (U32Kilobytes)-1 ;
|
||||
// use host_statistics64 to get memory info
|
||||
vm_statistics64_data_t vmstat;
|
||||
mach_msg_type_number_t count = HOST_VM_INFO64_COUNT;
|
||||
mach_port_t host = mach_host_self();
|
||||
vm_size_t page_size;
|
||||
host_page_size(host, &page_size);
|
||||
kern_return_t result = host_statistics64(host, HOST_VM_INFO64, reinterpret_cast<host_info_t>(&vmstat), &count);
|
||||
if (result == KERN_SUCCESS)
|
||||
{
|
||||
avail_mem_kb = U64Bytes((vmstat.free_count + vmstat.inactive_count) * page_size);
|
||||
}
|
||||
else
|
||||
{
|
||||
avail_mem_kb = (U32Kilobytes)-1;
|
||||
}
|
||||
|
||||
#elif LL_LINUX
|
||||
// mStatsMap is derived from MEMINFO_FILE:
|
||||
|
|
@ -882,15 +884,14 @@ void LLMemoryInfo::getAvailableMemoryKB(U32Kilobytes& avail_physical_mem_kb, U32
|
|||
// DirectMap4k: 434168 kB
|
||||
// DirectMap2M: 477184 kB
|
||||
// (could also run 'free', but easier to read a file than run a program)
|
||||
avail_physical_mem_kb = (U32Kilobytes)-1 ;
|
||||
avail_virtual_mem_kb = (U32Kilobytes)-1 ;
|
||||
LLSD statsMap(loadStatsMap());
|
||||
|
||||
avail_mem_kb = (U32Kilobytes)statsMap["MemFree"].asInteger();
|
||||
#else
|
||||
//do not know how to collect available memory info for other systems.
|
||||
//leave it blank here for now.
|
||||
|
||||
avail_physical_mem_kb = (U32Kilobytes)-1 ;
|
||||
avail_virtual_mem_kb = (U32Kilobytes)-1 ;
|
||||
avail_mem_kb = (U32Kilobytes)-1 ;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
@ -936,7 +937,7 @@ LLSD LLMemoryInfo::getStatsMap() const
|
|||
|
||||
LLMemoryInfo& LLMemoryInfo::refresh()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
mStatsMap = loadStatsMap();
|
||||
|
||||
LL_DEBUGS("LLMemoryInfo") << "Populated mStatsMap:\n";
|
||||
|
|
@ -993,7 +994,7 @@ LLSD LLMemoryInfo::loadStatsMap()
|
|||
// specifically accepts PROCESS_MEMORY_COUNTERS*, and since this is a
|
||||
// classic-C API, PROCESS_MEMORY_COUNTERS_EX isn't a subclass. Cast the
|
||||
// pointer.
|
||||
GetProcessMemoryInfo(GetCurrentProcess(), PPROCESS_MEMORY_COUNTERS(&pmem), sizeof(pmem));
|
||||
GetProcessMemoryInfo(GetCurrentProcess(), (PROCESS_MEMORY_COUNTERS*) &pmem, sizeof(pmem));
|
||||
|
||||
stats.add("Page Fault Count", pmem.PageFaultCount);
|
||||
stats.add("PeakWorkingSetSize KB", pmem.PeakWorkingSetSize/div);
|
||||
|
|
|
|||
|
|
@ -134,8 +134,8 @@ public:
|
|||
static U32Kilobytes getHardwareMemSize(); // Because some Mac linkers won't let us reference extern gSysMemory from a different lib.
|
||||
#endif
|
||||
|
||||
//get the available memory infomation in KiloBytes.
|
||||
static void getAvailableMemoryKB(U32Kilobytes& avail_physical_mem_kb, U32Kilobytes& avail_virtual_mem_kb);
|
||||
//get the available memory in KiloBytes.
|
||||
static void getAvailableMemoryKB(U32Kilobytes& avail_mem_kb);
|
||||
|
||||
// Retrieve a map of memory statistics. The keys of the map are platform-
|
||||
// dependent. The values are in kilobytes to try to avoid integer overflow.
|
||||
|
|
@ -169,6 +169,7 @@ bool LL_COMMON_API gunzip_file(const std::string& srcfile, const std::string& ds
|
|||
// gzip srcfile into dstfile. Returns false on error.
|
||||
bool LL_COMMON_API gzip_file(const std::string& srcfile, const std::string& dstfile);
|
||||
|
||||
extern LL_COMMON_API LLMemoryInfo gSysMemory;
|
||||
extern LL_COMMON_API LLCPUInfo gSysCPU;
|
||||
|
||||
#endif // LL_LLSYS_H
|
||||
|
|
|
|||
|
|
@ -349,7 +349,7 @@ bool LLThread::runCondition(void)
|
|||
// Stop thread execution if requested until unpaused.
|
||||
void LLThread::checkPause()
|
||||
{
|
||||
LL_PROFILER_THREAD_BEGIN(mName.c_str())
|
||||
LL_PROFILER_THREAD_BEGIN(mName.c_str());
|
||||
|
||||
mDataLock->lock();
|
||||
|
||||
|
|
@ -364,7 +364,7 @@ void LLThread::checkPause()
|
|||
|
||||
mDataLock->unlock();
|
||||
|
||||
LL_PROFILER_THREAD_END(mName.c_str())
|
||||
LL_PROFILER_THREAD_END(mName.c_str());
|
||||
}
|
||||
|
||||
//============================================================================
|
||||
|
|
@ -385,20 +385,20 @@ void LLThread::setQuitting()
|
|||
// <FS:Beq> give this a better chance to inline
|
||||
// LLThread::id_t LLThread::currentID()
|
||||
// {
|
||||
// LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD
|
||||
// LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD;
|
||||
// return std::this_thread::get_id();
|
||||
// }
|
||||
|
||||
// static
|
||||
void LLThread::yield()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD;
|
||||
std::this_thread::yield();
|
||||
}
|
||||
|
||||
void LLThread::wake()
|
||||
{
|
||||
LL_PROFILER_THREAD_BEGIN(mName.c_str())
|
||||
LL_PROFILER_THREAD_BEGIN(mName.c_str());
|
||||
|
||||
mDataLock->lock();
|
||||
if(!shouldSleep())
|
||||
|
|
@ -407,12 +407,12 @@ void LLThread::wake()
|
|||
}
|
||||
mDataLock->unlock();
|
||||
|
||||
LL_PROFILER_THREAD_END(mName.c_str())
|
||||
LL_PROFILER_THREAD_END(mName.c_str());
|
||||
}
|
||||
|
||||
void LLThread::wakeLocked()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD;
|
||||
if(!shouldSleep())
|
||||
{
|
||||
mRunCondition->signal();
|
||||
|
|
@ -421,13 +421,13 @@ void LLThread::wakeLocked()
|
|||
|
||||
void LLThread::lockData()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD;
|
||||
mDataLock->lock();
|
||||
}
|
||||
|
||||
void LLThread::unlockData()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_THREAD;
|
||||
mDataLock->unlock();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ U32 micro_sleep(U64 us, U32 max_yields)
|
|||
|
||||
U32 micro_sleep(U64 us, U32 max_yields)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
#if 0
|
||||
LARGE_INTEGER ft;
|
||||
ft.QuadPart = -static_cast<S64>(us * 10); // '-' using relative time
|
||||
|
|
@ -109,7 +109,7 @@ U32 micro_sleep(U64 us, U32 max_yields)
|
|||
|
||||
void ms_sleep(U32 ms)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
micro_sleep(ms * 1000, 0);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -751,7 +751,7 @@ S32 LLProfile::getNumPoints(const LLProfileParams& params, bool path_open,F32 de
|
|||
bool LLProfile::generate(const LLProfileParams& params, bool path_open,F32 detail, S32 split,
|
||||
bool is_sculpted, S32 sculpt_size)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOLUME
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOLUME;
|
||||
|
||||
if ((!mDirty) && (!is_sculpted))
|
||||
{
|
||||
|
|
@ -1233,7 +1233,7 @@ S32 LLPath::getNumNGonPoints(const LLPathParams& params, S32 sides, F32 startOff
|
|||
|
||||
void LLPath::genNGon(const LLPathParams& params, S32 sides, F32 startOff, F32 end_scale, F32 twist_scale)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOLUME
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOLUME;
|
||||
|
||||
// Generates a circular path, starting at (1, 0, 0), counterclockwise along the xz plane.
|
||||
constexpr F32 tableScale[] = { 1, 1, 1, 0.5f, 0.707107f, 0.53f, 0.525f, 0.5f };
|
||||
|
|
@ -1469,7 +1469,7 @@ S32 LLPath::getNumPoints(const LLPathParams& params, F32 detail)
|
|||
bool LLPath::generate(const LLPathParams& params, F32 detail, S32 split,
|
||||
bool is_sculpted, S32 sculpt_size)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOLUME
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOLUME;
|
||||
|
||||
if ((!mDirty) && (!is_sculpted))
|
||||
{
|
||||
|
|
@ -2049,7 +2049,7 @@ LLVolume::~LLVolume()
|
|||
|
||||
bool LLVolume::generate()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOLUME
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOLUME;
|
||||
|
||||
LL_CHECK_MEMORY
|
||||
llassert_always(mProfilep);
|
||||
|
|
@ -2309,7 +2309,7 @@ bool LLVolumeFace::VertexData::compareNormal(const LLVolumeFace::VertexData& rhs
|
|||
|
||||
bool LLVolume::unpackVolumeFaces(std::istream& is, S32 size)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOLUME
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOLUME;
|
||||
|
||||
//input stream is now pointing at a zlib compressed block of LLSD
|
||||
//decompress block
|
||||
|
|
@ -2796,7 +2796,7 @@ S32 LLVolume::getNumFaces() const
|
|||
|
||||
void LLVolume::createVolumeFaces()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOLUME
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOLUME;
|
||||
|
||||
if (mGenerateSingleFace)
|
||||
{
|
||||
|
|
@ -3790,7 +3790,7 @@ void LLVolume::generateSilhouetteVertices(std::vector<LLVector3> &vertices,
|
|||
const LLMatrix3& norm_mat_in,
|
||||
S32 face_mask)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOLUME
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOLUME;
|
||||
|
||||
LLMatrix4a mat;
|
||||
mat.loadu(mat_in);
|
||||
|
|
@ -4919,7 +4919,7 @@ void LLVolumeFace::freeData()
|
|||
|
||||
bool LLVolumeFace::create(LLVolume* volume, bool partial_build)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOLUME
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOLUME;
|
||||
|
||||
//tree for this face is no longer valid
|
||||
destroyOctree();
|
||||
|
|
@ -5594,7 +5594,7 @@ bool LLVolumeFace::cacheOptimize(bool gen_tangents)
|
|||
|
||||
void LLVolumeFace::createOctree(F32 scaler, const LLVector4a& center, const LLVector4a& size)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOLUME
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOLUME;
|
||||
|
||||
if (getOctree())
|
||||
{
|
||||
|
|
@ -6614,7 +6614,7 @@ void LLVolumeFace::fillFromLegacyData(std::vector<LLVolumeFace::VertexData>& v,
|
|||
|
||||
bool LLVolumeFace::createSide(LLVolume* volume, bool partial_build)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOLUME
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOLUME;
|
||||
|
||||
LL_CHECK_MEMORY
|
||||
bool flat = mTypeMask & FLAT_MASK;
|
||||
|
|
@ -7148,7 +7148,7 @@ bool LLVolumeFace::createSide(LLVolume* volume, bool partial_build)
|
|||
void LLCalculateTangentArray(U32 vertexCount, const LLVector4a *vertex, const LLVector4a *normal,
|
||||
const LLVector2 *texcoord, U32 triangleCount, const U16* index_array, LLVector4a *tangent)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOLUME
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOLUME;
|
||||
|
||||
//LLVector4a *tan1 = new LLVector4a[vertexCount * 2];
|
||||
LLVector4a* tan1 = (LLVector4a*) ll_aligned_malloc_16(vertexCount*2*sizeof(LLVector4a));
|
||||
|
|
|
|||
|
|
@ -143,7 +143,7 @@ public:
|
|||
virtual void visit(const LLOctreeNode<LLVolumeTriangle, LLVolumeTriangle*>* branch)
|
||||
{ //this is a depth first traversal, so it's safe to assum all children have complete
|
||||
//bounding data
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOLUME
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOLUME;
|
||||
|
||||
LLVolumeOctreeListener* node = (LLVolumeOctreeListener*)branch->getListener(0);
|
||||
|
||||
|
|
|
|||
|
|
@ -291,6 +291,7 @@ U64 LLMeshOptimizer::simplifyU32(U32 *destination,
|
|||
vertex_positions_stride,
|
||||
target_index_count,
|
||||
target_error,
|
||||
0,
|
||||
result_error
|
||||
);
|
||||
}
|
||||
|
|
@ -332,6 +333,7 @@ U64 LLMeshOptimizer::simplify(U16 *destination,
|
|||
vertex_positions_stride,
|
||||
target_index_count,
|
||||
target_error,
|
||||
0,
|
||||
result_error
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -586,7 +586,7 @@ F32 LLFontGL::getWidthF32(const llwchar* wchars, S32 begin_offset, S32 max_chars
|
|||
|
||||
void LLFontGL::generateASCIIglyphs()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_UI
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_UI;
|
||||
for (U32 i = 32; (i < 127); i++)
|
||||
{
|
||||
mFontFreetype->getGlyphInfo(i, EFontGlyphType::Grayscale);
|
||||
|
|
@ -596,7 +596,7 @@ void LLFontGL::generateASCIIglyphs()
|
|||
// Returns the max number of complete characters from text (up to max_chars) that can be drawn in max_pixels
|
||||
S32 LLFontGL::maxDrawableChars(const llwchar* wchars, F32 max_pixels, S32 max_chars, EWordWrapStyle end_on_word_boundary) const
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_UI
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_UI;
|
||||
if (!wchars || !wchars[0] || max_chars == 0)
|
||||
{
|
||||
return 0;
|
||||
|
|
@ -937,7 +937,7 @@ void LLFontGL::dumpFontTextures()
|
|||
// static
|
||||
bool LLFontGL::loadDefaultFonts()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_UI
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_UI;
|
||||
bool succ = true;
|
||||
succ &= (NULL != getFontSansSerifSmall());
|
||||
succ &= (NULL != getFontSansSerif());
|
||||
|
|
@ -954,7 +954,7 @@ bool LLFontGL::loadDefaultFonts()
|
|||
|
||||
void LLFontGL::loadCommonFonts()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_UI
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_UI;
|
||||
getFont(LLFontDescriptor("SansSerif", "Small", BOLD));
|
||||
getFont(LLFontDescriptor("SansSerif", "Large", BOLD));
|
||||
getFont(LLFontDescriptor("SansSerif", "Huge", BOLD));
|
||||
|
|
|
|||
|
|
@ -1536,7 +1536,7 @@ LLLightState* LLRender::getLight(U32 index)
|
|||
|
||||
void LLRender::setAmbientLightColor(const LLColor4& color)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_PIPELINE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_PIPELINE;
|
||||
if (color != mAmbientLightColor)
|
||||
{
|
||||
++mLightHash;
|
||||
|
|
|
|||
|
|
@ -44,7 +44,6 @@ using std::make_pair;
|
|||
using std::string;
|
||||
|
||||
LLShaderMgr * LLShaderMgr::sInstance = NULL;
|
||||
bool LLShaderMgr::sMirrorsEnabled = false;
|
||||
|
||||
LLShaderMgr::LLShaderMgr()
|
||||
{
|
||||
|
|
@ -606,11 +605,6 @@ GLuint LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shader_lev
|
|||
extra_code_text[extra_code_count++] = strdup("#define FXAA_GLSL_130 1\n");
|
||||
}
|
||||
|
||||
if (sMirrorsEnabled)
|
||||
{
|
||||
extra_code_text[extra_code_count++] = strdup("#define HERO_PROBES 1\n");
|
||||
}
|
||||
|
||||
// Use alpha float to store bit flags
|
||||
// See: C++: addDeferredAttachment(), shader: frag_data[2]
|
||||
extra_code_text[extra_code_count++] = strdup("#define GBUFFER_FLAG_SKIP_ATMOS 0.0 \n"); // atmo kill
|
||||
|
|
|
|||
|
|
@ -391,7 +391,6 @@ public:
|
|||
bool mShaderCacheInitialized = false;
|
||||
bool mShaderCacheEnabled = false;
|
||||
std::string mShaderCacheDir;
|
||||
static bool sMirrorsEnabled;
|
||||
|
||||
protected:
|
||||
|
||||
|
|
|
|||
|
|
@ -2150,7 +2150,7 @@ void LLWindowWin32::initCursors(bool useLegacyCursors) // <FS:LO> Legacy cursor
|
|||
void LLWindowWin32::updateCursor()
|
||||
{
|
||||
ASSERT_MAIN_THREAD();
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_WIN32
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_WIN32;
|
||||
if (mNextCursor == UI_CURSOR_ARROW
|
||||
&& mBusyCount > 0)
|
||||
{
|
||||
|
|
@ -2194,7 +2194,7 @@ void LLWindowWin32::delayInputProcessing()
|
|||
void LLWindowWin32::gatherInput()
|
||||
{
|
||||
ASSERT_MAIN_THREAD();
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_WIN32
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_WIN32;
|
||||
MSG msg;
|
||||
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
version 61
|
||||
version 62
|
||||
// The version number above should be incremented IF AND ONLY IF some
|
||||
// change has been made that is sufficiently important to justify
|
||||
// resetting the graphics preferences of all users to the recommended
|
||||
|
|
@ -28,7 +28,6 @@ version 61
|
|||
//
|
||||
list all
|
||||
RenderAnisotropic 1 1
|
||||
RenderAvatarCloth 0 0
|
||||
RenderAvatarLODFactor 1 1.0
|
||||
RenderAvatarPhysicsLODFactor 1 1.0
|
||||
RenderAvatarMaxNonImpostors 1 16
|
||||
|
|
@ -65,7 +64,6 @@ RenderShaderLightingMaxLevel 1 3
|
|||
RenderReflectionProbeLevel 1 3
|
||||
RenderDeferred 1 1
|
||||
RenderDeferredSSAO 1 1
|
||||
RenderUseAdvancedAtmospherics 1 0
|
||||
RenderShadowDetail 1 2
|
||||
RenderUseStreamVBO 1 1
|
||||
RenderFSAASamples 1 16
|
||||
|
|
@ -76,6 +74,10 @@ RenderGLMultiThreadedMedia 1 1
|
|||
RenderReflectionProbeResolution 1 128
|
||||
RenderScreenSpaceReflections 1 1
|
||||
RenderMirrors 1 1
|
||||
RenderHeroProbeResolution 1 2048
|
||||
RenderHeroProbeDistance 1 16
|
||||
RenderHeroProbeUpdateRate 1 4
|
||||
RenderHeroProbeConservativeUpdateMultiplier 1 16
|
||||
RenderDownScaleMethod 1 1
|
||||
|
||||
|
||||
|
|
@ -103,7 +105,6 @@ RenderTerrainPBRPlanarSampleCount 1 1
|
|||
RenderTreeLODFactor 1 0
|
||||
RenderVolumeLODFactor 1 1.5
|
||||
RenderDeferredSSAO 1 0
|
||||
RenderUseAdvancedAtmospherics 1 0
|
||||
RenderShadowDetail 1 0
|
||||
WLSkyDetail 1 96
|
||||
RenderFSAASamples 1 0
|
||||
|
|
@ -139,7 +140,6 @@ RenderTerrainPBRPlanarSampleCount 1 1
|
|||
RenderTreeLODFactor 1 0.5
|
||||
RenderVolumeLODFactor 1 2.0
|
||||
RenderDeferredSSAO 1 0
|
||||
RenderUseAdvancedAtmospherics 1 0
|
||||
RenderShadowDetail 1 0
|
||||
WLSkyDetail 1 96
|
||||
RenderFSAASamples 1 0
|
||||
|
|
@ -173,7 +173,6 @@ RenderTerrainPBRPlanarSampleCount 1 1
|
|||
RenderTreeLODFactor 1 0.5
|
||||
RenderVolumeLODFactor 1 2.0
|
||||
RenderDeferredSSAO 1 0
|
||||
RenderUseAdvancedAtmospherics 1 0
|
||||
RenderShadowDetail 1 0
|
||||
WLSkyDetail 1 96
|
||||
RenderFSAASamples 1 2
|
||||
|
|
@ -209,7 +208,6 @@ RenderTerrainPBRPlanarSampleCount 1 1
|
|||
RenderTreeLODFactor 1 0.5
|
||||
RenderVolumeLODFactor 1 2.0
|
||||
RenderDeferredSSAO 1 0
|
||||
RenderUseAdvancedAtmospherics 1 0
|
||||
RenderShadowDetail 1 0
|
||||
WLSkyDetail 1 96
|
||||
RenderFSAASamples 1 2
|
||||
|
|
@ -245,7 +243,6 @@ RenderTerrainPBRPlanarSampleCount 1 3
|
|||
RenderTreeLODFactor 1 0.5
|
||||
RenderVolumeLODFactor 1 2.0
|
||||
RenderDeferredSSAO 1 1
|
||||
RenderUseAdvancedAtmospherics 1 0
|
||||
RenderShadowDetail 1 1
|
||||
WLSkyDetail 1 96
|
||||
RenderFSAASamples 1 2
|
||||
|
|
@ -281,7 +278,6 @@ RenderTransparentWater 1 1
|
|||
RenderTreeLODFactor 1 0.5
|
||||
RenderVolumeLODFactor 1 2.0
|
||||
RenderDeferredSSAO 1 1
|
||||
RenderUseAdvancedAtmospherics 1 0
|
||||
RenderShadowDetail 1 2
|
||||
WLSkyDetail 1 96
|
||||
RenderFSAASamples 1 2
|
||||
|
|
@ -318,7 +314,6 @@ RenderVolumeLODFactor 1 3.0
|
|||
WindLightUseAtmosShaders 1 1
|
||||
WLSkyDetail 1 128
|
||||
RenderDeferredSSAO 1 1
|
||||
RenderUseAdvancedAtmospherics 1 0
|
||||
RenderShadowDetail 1 2
|
||||
RenderFSAASamples 1 2
|
||||
RenderReflectionsEnabled 1 1
|
||||
|
|
@ -337,7 +332,6 @@ RenderHeroProbeConservativeUpdateMultiplier 1 4
|
|||
list Unknown
|
||||
RenderShadowDetail 1 0
|
||||
RenderDeferredSSAO 1 0
|
||||
RenderUseAdvancedAtmospherics 1 0
|
||||
RenderMirrors 1 0
|
||||
|
||||
//
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
version 57
|
||||
version 58
|
||||
// The version number above should be incremented IF AND ONLY IF some
|
||||
// change has been made that is sufficiently important to justify
|
||||
// resetting the graphics preferences of all users to the recommended
|
||||
|
|
@ -28,7 +28,6 @@ version 57
|
|||
//
|
||||
list all
|
||||
RenderAnisotropic 1 0
|
||||
RenderAvatarCloth 0 0
|
||||
RenderAvatarLODFactor 1 1.0
|
||||
RenderAvatarPhysicsLODFactor 1 1.0
|
||||
RenderAvatarMaxNonImpostors 1 16
|
||||
|
|
@ -62,7 +61,6 @@ RenderCompressTextures 1 1
|
|||
RenderShaderLightingMaxLevel 1 3
|
||||
RenderDeferred 1 1
|
||||
RenderDeferredSSAO 1 1
|
||||
RenderUseAdvancedAtmospherics 1 0
|
||||
RenderShadowDetail 1 2
|
||||
RenderUseStreamVBO 1 1
|
||||
RenderFSAASamples 1 16
|
||||
|
|
@ -75,6 +73,10 @@ RenderReflectionProbeDetail 1 2
|
|||
RenderScreenSpaceReflections 1 1
|
||||
RenderReflectionProbeLevel 1 3
|
||||
RenderMirrors 1 1
|
||||
RenderHeroProbeResolution 1 2048
|
||||
RenderHeroProbeDistance 1 16
|
||||
RenderHeroProbeUpdateRate 1 4
|
||||
RenderHeroProbeConservativeUpdateMultiplier 1 16
|
||||
|
||||
//
|
||||
// Low Graphics Settings
|
||||
|
|
@ -98,7 +100,6 @@ RenderTransparentWater 1 0
|
|||
RenderTreeLODFactor 1 0
|
||||
RenderVolumeLODFactor 1 1.5
|
||||
RenderDeferredSSAO 1 0
|
||||
RenderUseAdvancedAtmospherics 1 0
|
||||
RenderShadowDetail 1 0
|
||||
WLSkyDetail 1 96
|
||||
RenderFSAASamples 1 0
|
||||
|
|
@ -134,7 +135,6 @@ RenderTransparentWater 1 1
|
|||
RenderTreeLODFactor 1 0.5
|
||||
RenderVolumeLODFactor 1 1.5
|
||||
RenderDeferredSSAO 1 0
|
||||
RenderUseAdvancedAtmospherics 1 0
|
||||
RenderShadowDetail 1 0
|
||||
WLSkyDetail 1 96
|
||||
RenderFSAASamples 1 0
|
||||
|
|
@ -170,7 +170,6 @@ RenderTransparentWater 1 1
|
|||
RenderTreeLODFactor 1 0.5
|
||||
RenderVolumeLODFactor 1 1.5
|
||||
RenderDeferredSSAO 1 0
|
||||
RenderUseAdvancedAtmospherics 1 0
|
||||
RenderShadowDetail 1 0
|
||||
WLSkyDetail 1 96
|
||||
RenderFSAASamples 1 2
|
||||
|
|
@ -206,7 +205,6 @@ RenderTransparentWater 1 1
|
|||
RenderTreeLODFactor 1 0.5
|
||||
RenderVolumeLODFactor 1 2.0
|
||||
RenderDeferredSSAO 1 0
|
||||
RenderUseAdvancedAtmospherics 1 0
|
||||
RenderShadowDetail 1 0
|
||||
WLSkyDetail 1 96
|
||||
RenderFSAASamples 1 2
|
||||
|
|
@ -242,7 +240,6 @@ RenderTransparentWater 1 1
|
|||
RenderTreeLODFactor 1 0.5
|
||||
RenderVolumeLODFactor 1 2.0
|
||||
RenderDeferredSSAO 1 1
|
||||
RenderUseAdvancedAtmospherics 1 0
|
||||
RenderShadowDetail 1 1
|
||||
WLSkyDetail 1 96
|
||||
RenderFSAASamples 1 2
|
||||
|
|
@ -279,7 +276,6 @@ RenderTreeLODFactor 1 0.5
|
|||
RenderVolumeLODFactor 1 2.0
|
||||
RenderDeferredSSAO 1 1
|
||||
RenderShadowDetail 1 2
|
||||
RenderUseAdvancedAtmospherics 1 0
|
||||
WLSkyDetail 1 96
|
||||
RenderFSAASamples 1 2
|
||||
RenderReflectionsEnabled 1 1
|
||||
|
|
@ -315,7 +311,6 @@ RenderVolumeLODFactor 1 3.0
|
|||
WindLightUseAtmosShaders 1 1
|
||||
WLSkyDetail 1 128
|
||||
RenderDeferredSSAO 1 1
|
||||
RenderUseAdvancedAtmospherics 1 0
|
||||
RenderShadowDetail 1 2
|
||||
RenderFSAASamples 1 2
|
||||
RenderReflectionsEnabled 1 1
|
||||
|
|
@ -334,7 +329,6 @@ RenderHeroProbeConservativeUpdateMultiplier 1 4
|
|||
list Unknown
|
||||
RenderShadowDetail 1 0
|
||||
RenderDeferredSSAO 1 0
|
||||
RenderUseAdvancedAtmospherics 1 0
|
||||
RenderMirrors 1 0
|
||||
|
||||
|
||||
|
|
@ -355,7 +349,6 @@ RenderLocalLightCount 1 0
|
|||
RenderMaxPartCount 1 1024
|
||||
RenderTerrainDetail 1 0
|
||||
RenderDeferredSSAO 0 0
|
||||
RenderUseAdvancedAtmospherics 0 0
|
||||
RenderShadowDetail 0 0
|
||||
RenderMirrors 0 0
|
||||
|
||||
|
|
|
|||
|
|
@ -377,7 +377,6 @@ LLFrameTimer gRestoreGLTimer;
|
|||
bool gRestoreGL = false;
|
||||
bool gUseWireframe = false;
|
||||
|
||||
LLMemoryInfo gSysMemory;
|
||||
U64Bytes gMemoryAllocated(0); // updated in display_stats() in llviewerdisplay.cpp
|
||||
|
||||
std::string gLastVersionChannel;
|
||||
|
|
@ -1688,12 +1687,12 @@ bool LLAppViewer::doFrame()
|
|||
}
|
||||
|
||||
{
|
||||
LL_PROFILE_ZONE_NAMED_CATEGORY_APP("df mainloop")
|
||||
LL_PROFILE_ZONE_NAMED_CATEGORY_APP("df mainloop");
|
||||
// canonical per-frame event
|
||||
mainloop.post(newFrame);
|
||||
}
|
||||
{
|
||||
LL_PROFILE_ZONE_NAMED_CATEGORY_APP("df suspend")
|
||||
LL_PROFILE_ZONE_NAMED_CATEGORY_APP("df suspend");
|
||||
// give listeners a chance to run
|
||||
llcoro::suspend();
|
||||
// if one of our coroutines threw an uncaught exception, rethrow it now
|
||||
|
|
@ -1703,6 +1702,7 @@ bool LLAppViewer::doFrame()
|
|||
|
||||
if (!LLApp::isExiting())
|
||||
{
|
||||
LL_PROFILE_ZONE_NAMED_CATEGORY_APP("df JoystickKeyboard");
|
||||
pingMainloopTimeout("Main:JoystickKeyboard");
|
||||
|
||||
// Scan keyboard for movement keys. Command keys and typing
|
||||
|
|
@ -1733,7 +1733,7 @@ bool LLAppViewer::doFrame()
|
|||
// Update state based on messages, user input, object idle.
|
||||
{
|
||||
{
|
||||
LL_PROFILE_ZONE_NAMED_CATEGORY_APP( "df pauseMainloopTimeout" )
|
||||
LL_PROFILE_ZONE_NAMED_CATEGORY_APP("df pauseMainloopTimeout");
|
||||
pauseMainloopTimeout(); // *TODO: Remove. Messages shouldn't be stalling for 20+ seconds!
|
||||
}
|
||||
|
||||
|
|
@ -1744,7 +1744,7 @@ bool LLAppViewer::doFrame()
|
|||
}
|
||||
|
||||
{
|
||||
LL_PROFILE_ZONE_NAMED_CATEGORY_APP( "df resumeMainloopTimeout" )
|
||||
LL_PROFILE_ZONE_NAMED_CATEGORY_APP("df resumeMainloopTimeout");
|
||||
resumeMainloopTimeout();
|
||||
}
|
||||
}
|
||||
|
|
@ -1792,7 +1792,7 @@ bool LLAppViewer::doFrame()
|
|||
}
|
||||
|
||||
{
|
||||
LL_PROFILE_ZONE_NAMED_CATEGORY_APP( "df pauseMainloopTimeout2" )
|
||||
LL_PROFILE_ZONE_NAMED_CATEGORY_APP( "df pauseMainloopTimeout2" );
|
||||
pingMainloopTimeout("Main:Sleep");
|
||||
|
||||
pauseMainloopTimeout();
|
||||
|
|
@ -1801,14 +1801,14 @@ bool LLAppViewer::doFrame()
|
|||
// Sleep and run background threads
|
||||
{
|
||||
//LL_RECORD_BLOCK_TIME(SLEEP2);
|
||||
LL_PROFILE_ZONE_WARN( "Sleep2" )
|
||||
LL_PROFILE_ZONE_WARN("Sleep2");
|
||||
|
||||
// yield some time to the os based on command line option
|
||||
static LLCachedControl<S32> yield_time(gSavedSettings, "YieldTime", -1);
|
||||
if(yield_time >= 0)
|
||||
{
|
||||
LL_PROFILE_ZONE_NAMED_CATEGORY_APP("Yield");
|
||||
LL_PROFILE_ZONE_NUM( yield_time )
|
||||
LL_PROFILE_ZONE_NUM(yield_time);
|
||||
ms_sleep(yield_time);
|
||||
}
|
||||
|
||||
|
|
@ -1882,19 +1882,19 @@ bool LLAppViewer::doFrame()
|
|||
}
|
||||
|
||||
{
|
||||
LL_PROFILE_ZONE_NAMED_CATEGORY_APP( "df gMeshRepo" )
|
||||
LL_PROFILE_ZONE_NAMED_CATEGORY_APP("df gMeshRepo");
|
||||
gMeshRepo.update() ;
|
||||
}
|
||||
|
||||
if(!total_work_pending) //pause texture fetching threads if nothing to process.
|
||||
{
|
||||
LL_PROFILE_ZONE_NAMED_CATEGORY_APP( "df getTextureCache" )
|
||||
LL_PROFILE_ZONE_NAMED_CATEGORY_APP("df getTextureCache");
|
||||
LLAppViewer::getTextureCache()->pause();
|
||||
LLAppViewer::getTextureFetch()->pause();
|
||||
}
|
||||
if(!total_io_pending) //pause file threads if nothing to process.
|
||||
{
|
||||
LL_PROFILE_ZONE_NAMED_CATEGORY_APP( "df LLVFSThread" )
|
||||
LL_PROFILE_ZONE_NAMED_CATEGORY_APP("df LLVFSThread");
|
||||
LLLFSThread::sLocal->pause();
|
||||
}
|
||||
|
||||
|
|
@ -1916,7 +1916,7 @@ bool LLAppViewer::doFrame()
|
|||
frameTimer.reset();
|
||||
// </FS:Ansariel>
|
||||
{
|
||||
LL_PROFILE_ZONE_NAMED_CATEGORY_APP( "df resumeMainloopTimeout" )
|
||||
LL_PROFILE_ZONE_NAMED_CATEGORY_APP("df resumeMainloopTimeout");
|
||||
resumeMainloopTimeout();
|
||||
}
|
||||
pingMainloopTimeout("Main:End");
|
||||
|
|
@ -1944,7 +1944,7 @@ bool LLAppViewer::doFrame()
|
|||
LL_INFOS() << "Exiting main_loop" << LL_ENDL;
|
||||
}
|
||||
}LLPerfStats::StatsRecorder::endFrame();
|
||||
LL_PROFILER_FRAME_END
|
||||
LL_PROFILER_FRAME_END;
|
||||
|
||||
return ! LLApp::isRunning();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -502,7 +502,7 @@ void LLAvatarTracker::notifyObservers()
|
|||
// new masks and ids will be processed later from idle.
|
||||
return;
|
||||
}
|
||||
LL_PROFILE_ZONE_SCOPED
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
mIsNotifyObservers = true;
|
||||
|
||||
observer_list_t observers(mObservers);
|
||||
|
|
@ -757,7 +757,7 @@ void LLAvatarTracker::processChangeUserRights(LLMessageSystem* msg, void**)
|
|||
|
||||
void LLAvatarTracker::processNotify(LLMessageSystem* msg, bool online)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
S32 count = msg->getNumberOfBlocksFast(_PREHASH_AgentBlock);
|
||||
|
||||
// <FS:PP> Attempt to speed up things a little
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ LLDrawable::LLDrawable(LLViewerObject *vobj, bool new_entry)
|
|||
|
||||
void LLDrawable::init(bool new_entry)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE;
|
||||
|
||||
// mXform
|
||||
mParent = NULL;
|
||||
|
|
@ -312,7 +312,7 @@ S32 LLDrawable::findReferences(LLDrawable *drawablep)
|
|||
|
||||
LLFace* LLDrawable::addFace(LLFacePool *poolp, LLViewerTexture *texturep)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE;
|
||||
|
||||
LLFace *face;
|
||||
{
|
||||
|
|
@ -340,7 +340,7 @@ LLFace* LLDrawable::addFace(LLFacePool *poolp, LLViewerTexture *texturep)
|
|||
|
||||
LLFace* LLDrawable::addFace(const LLTextureEntry *te, LLViewerTexture *texturep)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE;
|
||||
|
||||
LLFace *face;
|
||||
|
||||
|
|
@ -363,7 +363,7 @@ LLFace* LLDrawable::addFace(const LLTextureEntry *te, LLViewerTexture *texturep)
|
|||
|
||||
LLFace* LLDrawable::addFace(const LLTextureEntry *te, LLViewerTexture *texturep, LLViewerTexture *normalp)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE;
|
||||
|
||||
LLFace *face;
|
||||
face = new LLFace(this, mVObjp);
|
||||
|
|
@ -386,7 +386,7 @@ LLFace* LLDrawable::addFace(const LLTextureEntry *te, LLViewerTexture *texturep,
|
|||
|
||||
LLFace* LLDrawable::addFace(const LLTextureEntry *te, LLViewerTexture *texturep, LLViewerTexture *normalp, LLViewerTexture *specularp)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE;
|
||||
|
||||
LLFace *face;
|
||||
face = new LLFace(this, mVObjp);
|
||||
|
|
@ -410,7 +410,7 @@ LLFace* LLDrawable::addFace(const LLTextureEntry *te, LLViewerTexture *texturep,
|
|||
|
||||
void LLDrawable::setNumFaces(const S32 newFaces, LLFacePool *poolp, LLViewerTexture *texturep)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE;
|
||||
|
||||
if (newFaces == (S32)mFaces.size())
|
||||
{
|
||||
|
|
@ -435,7 +435,7 @@ void LLDrawable::setNumFaces(const S32 newFaces, LLFacePool *poolp, LLViewerText
|
|||
|
||||
void LLDrawable::setNumFacesFast(const S32 newFaces, LLFacePool *poolp, LLViewerTexture *texturep)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE;
|
||||
|
||||
if (newFaces <= (S32)mFaces.size() && newFaces >= (S32)mFaces.size()/2)
|
||||
{
|
||||
|
|
@ -460,7 +460,7 @@ void LLDrawable::setNumFacesFast(const S32 newFaces, LLFacePool *poolp, LLViewer
|
|||
|
||||
void LLDrawable::mergeFaces(LLDrawable* src)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE;
|
||||
|
||||
auto face_count = mFaces.size() + src->mFaces.size();
|
||||
|
||||
|
|
@ -495,7 +495,7 @@ void LLDrawable::updateMaterial()
|
|||
|
||||
void LLDrawable::makeActive()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE;
|
||||
|
||||
#if !LL_RELEASE_FOR_DOWNLOAD
|
||||
if (mVObjp.notNull())
|
||||
|
|
@ -559,7 +559,7 @@ void LLDrawable::makeActive()
|
|||
|
||||
void LLDrawable::makeStatic(bool warning_enabled)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE;
|
||||
|
||||
if (isState(ACTIVE) &&
|
||||
!isState(ACTIVE_CHILD) &&
|
||||
|
|
@ -607,7 +607,7 @@ void LLDrawable::makeStatic(bool warning_enabled)
|
|||
// Returns "distance" between target destination and resulting xfrom
|
||||
F32 LLDrawable::updateXform(bool undamped)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE;
|
||||
|
||||
bool damped = !undamped;
|
||||
|
||||
|
|
@ -761,7 +761,7 @@ void LLDrawable::moveUpdatePipeline(bool moved)
|
|||
|
||||
void LLDrawable::movePartition()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE;
|
||||
|
||||
LLSpatialPartition* part = getSpatialPartition();
|
||||
if (part)
|
||||
|
|
@ -807,7 +807,7 @@ bool LLDrawable::updateMoveUndamped()
|
|||
|
||||
void LLDrawable::updatePartition()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE;
|
||||
|
||||
if (!getVOVolume())
|
||||
{
|
||||
|
|
@ -826,7 +826,7 @@ void LLDrawable::updatePartition()
|
|||
|
||||
bool LLDrawable::updateMoveDamped()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE;
|
||||
|
||||
F32 dist_squared = updateXform(false);
|
||||
|
||||
|
|
@ -851,7 +851,7 @@ bool LLDrawable::updateMoveDamped()
|
|||
|
||||
void LLDrawable::updateDistance(LLCamera& camera, bool force_update)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE;
|
||||
|
||||
if (LLViewerCamera::sCurCameraID != LLViewerCamera::CAMERA_WORLD)
|
||||
{
|
||||
|
|
@ -1035,7 +1035,7 @@ const LLVector3& LLDrawable::getBounds(LLVector3& min, LLVector3& max) const
|
|||
|
||||
void LLDrawable::updateSpatialExtents()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE;
|
||||
|
||||
if (mVObjp)
|
||||
{
|
||||
|
|
@ -1171,7 +1171,7 @@ void LLDrawable::setGroup(LLViewerOctreeGroup *groupp)
|
|||
*/
|
||||
LLSpatialPartition* LLDrawable::getSpatialPartition()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE;
|
||||
|
||||
LLSpatialPartition* retval = NULL;
|
||||
|
||||
|
|
@ -1308,7 +1308,7 @@ void LLSpatialBridge::destroyTree()
|
|||
|
||||
void LLSpatialBridge::updateSpatialExtents()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE;
|
||||
|
||||
LLSpatialGroup* root = (LLSpatialGroup*) mOctree->getListener(0);
|
||||
|
||||
|
|
@ -1481,7 +1481,7 @@ public:
|
|||
|
||||
void LLSpatialBridge::setVisible(LLCamera& camera_in, std::vector<LLDrawable*>* results, bool for_select)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE;
|
||||
|
||||
if (!gPipeline.hasRenderType(mDrawableType))
|
||||
{
|
||||
|
|
@ -1580,7 +1580,7 @@ void LLSpatialBridge::setVisible(LLCamera& camera_in, std::vector<LLDrawable*>*
|
|||
|
||||
void LLSpatialBridge::updateDistance(LLCamera& camera_in, bool force_update)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWABLE;
|
||||
|
||||
if (mDrawable == NULL)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -126,7 +126,7 @@ LLDrawPoolAvatar::~LLDrawPoolAvatar()
|
|||
// virtual
|
||||
bool LLDrawPoolAvatar::isDead()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR;
|
||||
|
||||
if (!LLFacePool::isDead())
|
||||
{
|
||||
|
|
@ -138,14 +138,14 @@ bool LLDrawPoolAvatar::isDead()
|
|||
|
||||
S32 LLDrawPoolAvatar::getShaderLevel() const
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR;
|
||||
|
||||
return (S32) LLViewerShaderMgr::instance()->getShaderLevel(LLViewerShaderMgr::SHADER_AVATAR);
|
||||
}
|
||||
|
||||
void LLDrawPoolAvatar::prerender()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR;
|
||||
|
||||
mShaderLevel = LLViewerShaderMgr::instance()->getShaderLevel(LLViewerShaderMgr::SHADER_AVATAR);
|
||||
|
||||
|
|
@ -154,7 +154,7 @@ void LLDrawPoolAvatar::prerender()
|
|||
|
||||
LLMatrix4& LLDrawPoolAvatar::getModelView()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR;
|
||||
|
||||
static LLMatrix4 ret;
|
||||
|
||||
|
|
@ -226,7 +226,7 @@ void LLDrawPoolAvatar::endDeferredPass(S32 pass)
|
|||
|
||||
void LLDrawPoolAvatar::renderDeferred(S32 pass)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR;
|
||||
|
||||
render(pass);
|
||||
}
|
||||
|
|
@ -238,7 +238,7 @@ S32 LLDrawPoolAvatar::getNumPostDeferredPasses()
|
|||
|
||||
void LLDrawPoolAvatar::beginPostDeferredPass(S32 pass)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR;
|
||||
|
||||
sSkipOpaque = true;
|
||||
sShaderLevel = mShaderLevel;
|
||||
|
|
@ -254,7 +254,7 @@ void LLDrawPoolAvatar::beginPostDeferredPass(S32 pass)
|
|||
|
||||
void LLDrawPoolAvatar::endPostDeferredPass(S32 pass)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR;
|
||||
// if we're in software-blending, remember to set the fence _after_ we draw so we wait till this rendering is done
|
||||
sRenderingSkinned = false;
|
||||
sSkipOpaque = false;
|
||||
|
|
@ -266,7 +266,7 @@ void LLDrawPoolAvatar::endPostDeferredPass(S32 pass)
|
|||
|
||||
void LLDrawPoolAvatar::renderPostDeferred(S32 pass)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR;
|
||||
|
||||
is_post_deferred_render = true;
|
||||
if (LLPipeline::sImpostorRender)
|
||||
|
|
@ -498,7 +498,7 @@ void LLDrawPoolAvatar::endRenderPass(S32 pass)
|
|||
|
||||
void LLDrawPoolAvatar::beginImpostor()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR;
|
||||
|
||||
if (!LLPipeline::sReflectionRender)
|
||||
{
|
||||
|
|
@ -515,7 +515,7 @@ void LLDrawPoolAvatar::beginImpostor()
|
|||
|
||||
void LLDrawPoolAvatar::endImpostor()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR;
|
||||
|
||||
gImpostorProgram.unbind();
|
||||
gPipeline.enableLightsDynamic();
|
||||
|
|
@ -523,7 +523,7 @@ void LLDrawPoolAvatar::endImpostor()
|
|||
|
||||
void LLDrawPoolAvatar::beginRigid()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR;
|
||||
|
||||
if (gPipeline.shadersLoaded())
|
||||
{
|
||||
|
|
@ -543,7 +543,7 @@ void LLDrawPoolAvatar::beginRigid()
|
|||
|
||||
void LLDrawPoolAvatar::endRigid()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR;
|
||||
|
||||
sShaderLevel = mShaderLevel;
|
||||
if (sVertexProgram != NULL)
|
||||
|
|
@ -554,7 +554,7 @@ void LLDrawPoolAvatar::endRigid()
|
|||
|
||||
void LLDrawPoolAvatar::beginDeferredImpostor()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR;
|
||||
|
||||
if (!LLPipeline::sReflectionRender)
|
||||
{
|
||||
|
|
@ -572,7 +572,7 @@ void LLDrawPoolAvatar::beginDeferredImpostor()
|
|||
|
||||
void LLDrawPoolAvatar::endDeferredImpostor()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR;
|
||||
|
||||
sShaderLevel = mShaderLevel;
|
||||
sVertexProgram->disableTexture(LLViewerShaderMgr::NORMAL_MAP);
|
||||
|
|
@ -585,7 +585,7 @@ void LLDrawPoolAvatar::endDeferredImpostor()
|
|||
|
||||
void LLDrawPoolAvatar::beginDeferredRigid()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR;
|
||||
|
||||
sVertexProgram = &gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram;
|
||||
sDiffuseChannel = sVertexProgram->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP);
|
||||
|
|
@ -595,7 +595,7 @@ void LLDrawPoolAvatar::beginDeferredRigid()
|
|||
|
||||
void LLDrawPoolAvatar::endDeferredRigid()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR;
|
||||
|
||||
sShaderLevel = mShaderLevel;
|
||||
sVertexProgram->disableTexture(LLViewerShaderMgr::DIFFUSE_MAP);
|
||||
|
|
@ -606,7 +606,7 @@ void LLDrawPoolAvatar::endDeferredRigid()
|
|||
|
||||
void LLDrawPoolAvatar::beginSkinned()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR;
|
||||
|
||||
// used for preview only
|
||||
|
||||
|
|
@ -620,7 +620,7 @@ void LLDrawPoolAvatar::beginSkinned()
|
|||
|
||||
void LLDrawPoolAvatar::endSkinned()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR;
|
||||
|
||||
// if we're in software-blending, remember to set the fence _after_ we draw so we wait till this rendering is done
|
||||
if (sShaderLevel > 0)
|
||||
|
|
@ -646,7 +646,7 @@ void LLDrawPoolAvatar::endSkinned()
|
|||
|
||||
void LLDrawPoolAvatar::beginDeferredSkinned()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR;
|
||||
|
||||
sShaderLevel = mShaderLevel;
|
||||
sVertexProgram = &gDeferredAvatarProgram;
|
||||
|
|
@ -660,7 +660,7 @@ void LLDrawPoolAvatar::beginDeferredSkinned()
|
|||
|
||||
void LLDrawPoolAvatar::endDeferredSkinned()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR;
|
||||
|
||||
// if we're in software-blending, remember to set the fence _after_ we draw so we wait till this rendering is done
|
||||
sRenderingSkinned = false;
|
||||
|
|
@ -948,7 +948,7 @@ static LLTrace::BlockTimerStatHandle FTM_RIGGED_VBO("Rigged VBO");
|
|||
//-----------------------------------------------------------------------------
|
||||
LLViewerTexture *LLDrawPoolAvatar::getDebugTexture()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR;
|
||||
|
||||
if (mReferences.empty())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -244,7 +244,7 @@ void LLFace::setPool(LLFacePool* pool)
|
|||
|
||||
void LLFace::setPool(LLFacePool* new_pool, LLViewerTexture *texturep)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_FACE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_FACE;
|
||||
|
||||
if (!new_pool)
|
||||
{
|
||||
|
|
@ -334,7 +334,7 @@ void LLFace::setSpecularMap(LLViewerTexture* tex)
|
|||
|
||||
void LLFace::dirtyTexture()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_FACE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_FACE;
|
||||
|
||||
LLDrawable* drawablep = getDrawable();
|
||||
|
||||
|
|
@ -530,7 +530,7 @@ void LLFace::updateCenterAgent()
|
|||
|
||||
void LLFace::renderSelected(LLViewerTexture *imagep, const LLColor4& color)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_FACE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_FACE;
|
||||
|
||||
if (mDrawablep == NULL || mDrawablep->getSpatialGroup() == NULL)
|
||||
{
|
||||
|
|
@ -607,7 +607,7 @@ void LLFace::renderSelected(LLViewerTexture *imagep, const LLColor4& color)
|
|||
|
||||
void renderFace(LLDrawable* drawable, LLFace *face)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_FACE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_FACE;
|
||||
|
||||
LLVOVolume* vobj = drawable->getVOVolume();
|
||||
if (vobj)
|
||||
|
|
@ -834,7 +834,7 @@ bool less_than_max_mag(const LLVector4a& vec)
|
|||
bool LLFace::genVolumeBBoxes(const LLVolume &volume, S32 f,
|
||||
const LLMatrix4& mat_vert_in, bool global_volume)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_FACE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_FACE;
|
||||
|
||||
//get bounding box
|
||||
if (mDrawablep->isState(LLDrawable::REBUILD_VOLUME | LLDrawable::REBUILD_POSITION | LLDrawable::REBUILD_RIGGED))
|
||||
|
|
|
|||
|
|
@ -271,8 +271,6 @@ void LLFloaterPreferenceGraphicsAdvanced::disableUnavailableSettings()
|
|||
{
|
||||
LLComboBox* ctrl_reflections = getChild<LLComboBox>("Reflections");
|
||||
LLTextBox* reflections_text = getChild<LLTextBox>("ReflectionsText");
|
||||
LLCheckBoxCtrl* ctrl_avatar_vp = getChild<LLCheckBoxCtrl>("AvatarVertexProgram");
|
||||
LLCheckBoxCtrl* ctrl_avatar_cloth = getChild<LLCheckBoxCtrl>("AvatarCloth");
|
||||
LLCheckBoxCtrl* ctrl_wind_light = getChild<LLCheckBoxCtrl>("WindLightUseAtmosShaders");
|
||||
LLCheckBoxCtrl* ctrl_deferred = getChild<LLCheckBoxCtrl>("UseLightShaders");
|
||||
LLComboBox* ctrl_shadows = getChild<LLComboBox>("ShadowDetail");
|
||||
|
|
@ -337,45 +335,6 @@ void LLFloaterPreferenceGraphicsAdvanced::disableUnavailableSettings()
|
|||
ctrl_shadows->setValue(0);
|
||||
shadows_text->setEnabled(false);
|
||||
}
|
||||
|
||||
// disabled reflections
|
||||
if (!LLFeatureManager::getInstance()->isFeatureAvailable("RenderReflectionDetail"))
|
||||
{
|
||||
ctrl_reflections->setEnabled(false);
|
||||
ctrl_reflections->setValue(false);
|
||||
reflections_text->setEnabled(false);
|
||||
}
|
||||
|
||||
// disabled av
|
||||
if (!LLFeatureManager::getInstance()->isFeatureAvailable("RenderAvatarVP"))
|
||||
{
|
||||
ctrl_avatar_vp->setEnabled(false);
|
||||
ctrl_avatar_vp->setValue(false);
|
||||
|
||||
ctrl_avatar_cloth->setEnabled(false);
|
||||
ctrl_avatar_cloth->setValue(false);
|
||||
|
||||
//deferred needs AvatarVP, disable deferred
|
||||
ctrl_shadows->setEnabled(false);
|
||||
ctrl_shadows->setValue(0);
|
||||
shadows_text->setEnabled(false);
|
||||
|
||||
ctrl_ssao->setEnabled(false);
|
||||
ctrl_ssao->setValue(false);
|
||||
|
||||
ctrl_dof->setEnabled(false);
|
||||
ctrl_dof->setValue(false);
|
||||
|
||||
ctrl_deferred->setEnabled(false);
|
||||
ctrl_deferred->setValue(false);
|
||||
}
|
||||
|
||||
// disabled cloth
|
||||
if (!LLFeatureManager::getInstance()->isFeatureAvailable("RenderAvatarCloth"))
|
||||
{
|
||||
ctrl_avatar_cloth->setEnabled(false);
|
||||
ctrl_avatar_cloth->setValue(false);
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterPreferenceGraphicsAdvanced::refreshEnabledState()
|
||||
|
|
@ -393,23 +352,6 @@ void LLFloaterPreferenceGraphicsAdvanced::refreshEnabledState()
|
|||
bool bumpshiny = LLCubeMap::sUseCubeMaps && LLFeatureManager::getInstance()->isFeatureAvailable("RenderObjectBump");
|
||||
bumpshiny_ctrl->setEnabled(bumpshiny);
|
||||
|
||||
// Avatar Mode
|
||||
// Enable Avatar Shaders
|
||||
LLCheckBoxCtrl* ctrl_avatar_vp = getChild<LLCheckBoxCtrl>("AvatarVertexProgram");
|
||||
// Avatar Render Mode
|
||||
LLCheckBoxCtrl* ctrl_avatar_cloth = getChild<LLCheckBoxCtrl>("AvatarCloth");
|
||||
|
||||
bool avatar_vp_enabled = LLFeatureManager::getInstance()->isFeatureAvailable("RenderAvatarVP");
|
||||
if (LLViewerShaderMgr::sInitialized)
|
||||
{
|
||||
S32 max_avatar_shader = LLViewerShaderMgr::instance()->mMaxAvatarShaderLevel;
|
||||
avatar_vp_enabled = max_avatar_shader > 0;
|
||||
}
|
||||
|
||||
ctrl_avatar_vp->setEnabled(avatar_vp_enabled);
|
||||
|
||||
ctrl_avatar_cloth->setEnabled(gSavedSettings.getBOOL("RenderAvatarVP"));
|
||||
|
||||
/* <FS:LO> remove orphaned code left over from EEP
|
||||
// Vertex Shaders, Global Shader Enable
|
||||
// SL-12594 Basic shaders are always enabled. DJH TODO clean up now-orphaned state handling code
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ void LLScriptHandler::initChannel()
|
|||
//--------------------------------------------------------------------------
|
||||
void LLScriptHandler::addToastWithNotification(const LLNotificationPtr& notification)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
LLToastPanel* notify_box = LLToastPanel::buidPanelFromNotification(notification);
|
||||
|
||||
LLToast::Params p;
|
||||
|
|
|
|||
|
|
@ -303,7 +303,7 @@ void LLScreenChannel::updatePositionAndSize(LLRect new_world_rect)
|
|||
//--------------------------------------------------------------------------
|
||||
void LLScreenChannel::addToast(const LLToast::Params& p)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
bool store_toast = false, show_toast = false;
|
||||
|
||||
if (mDisplayToastsAlways)
|
||||
|
|
|
|||
|
|
@ -3204,7 +3204,7 @@ void LLSelectMgr::adjustTexturesByScale(bool send_to_sim, bool stretch)
|
|||
|
||||
for (U8 te_num = 0; te_num < object->getNumTEs(); te_num++)
|
||||
{
|
||||
const LLTextureEntry* tep = object->getTE(te_num);
|
||||
LLTextureEntry* tep = object->getTE(te_num);
|
||||
|
||||
// ND: Down the code there is a check if getTE did return a valid pointer (actually the pointer is fetched again there, can it change mid loop?)
|
||||
if( !tep )
|
||||
|
|
@ -3242,8 +3242,6 @@ void LLSelectMgr::adjustTexturesByScale(bool send_to_sim, bool stretch)
|
|||
|
||||
object->setTEScale(te_num, diffuse_scale_s, diffuse_scale_t);
|
||||
|
||||
LLTextureEntry* tep = object->getTE(te_num);
|
||||
|
||||
if (tep && !tep->getMaterialParams().isNull())
|
||||
{
|
||||
LLMaterialPtr orig = tep->getMaterialParams();
|
||||
|
|
@ -3285,6 +3283,47 @@ void LLSelectMgr::adjustTexturesByScale(bool send_to_sim, bool stretch)
|
|||
LLMaterialMgr::getInstance()->put(object->getID(), te_num, *p);
|
||||
}
|
||||
}
|
||||
|
||||
if (tep->getGLTFMaterial())
|
||||
{
|
||||
LLPointer<LLGLTFMaterial> material = tep->getGLTFMaterialOverride();
|
||||
if (!material)
|
||||
{
|
||||
material = new LLGLTFMaterial();
|
||||
tep->setGLTFMaterialOverride(material);
|
||||
}
|
||||
|
||||
F32 scale_x = 1;
|
||||
F32 scale_y = 1;
|
||||
|
||||
for (U32 i = 0; i < LLGLTFMaterial::GLTF_TEXTURE_INFO_COUNT; ++i)
|
||||
{
|
||||
LLVector3 scale_ratio = selectNode->mGLTFScaleRatios[te_num][i];
|
||||
|
||||
if (planar)
|
||||
{
|
||||
scale_x = scale_ratio.mV[s_axis] / object_scale.mV[s_axis];
|
||||
scale_y = scale_ratio.mV[t_axis] / object_scale.mV[t_axis];
|
||||
}
|
||||
else
|
||||
{
|
||||
scale_x = scale_ratio.mV[s_axis] * object_scale.mV[s_axis];
|
||||
scale_y = scale_ratio.mV[t_axis] * object_scale.mV[t_axis];
|
||||
}
|
||||
material->mTextureTransform[i].mScale.set(scale_x, scale_y);
|
||||
}
|
||||
|
||||
LLFetchedGLTFMaterial* render_mat = (LLFetchedGLTFMaterial*)tep->getGLTFRenderMaterial();
|
||||
if (render_mat)
|
||||
{
|
||||
render_mat->applyOverride(*material);
|
||||
}
|
||||
|
||||
if (send_to_sim)
|
||||
{
|
||||
LLGLTFMaterialList::queueModify(object, te_num, material);
|
||||
}
|
||||
}
|
||||
send = send_to_sim;
|
||||
}
|
||||
}
|
||||
|
|
@ -7123,6 +7162,7 @@ void LLSelectNode::saveGLTFMaterials(const uuid_vec_t& materials, const gltf_mat
|
|||
void LLSelectNode::saveTextureScaleRatios(LLRender::eTexIndex index_to_query)
|
||||
{
|
||||
mTextureScaleRatios.clear();
|
||||
mGLTFScaleRatios.clear();
|
||||
|
||||
if (mObject.notNull())
|
||||
{
|
||||
|
|
@ -7157,6 +7197,40 @@ void LLSelectNode::saveTextureScaleRatios(LLRender::eTexIndex index_to_query)
|
|||
v.mV[t_axis] = diffuse_t/scale.mV[t_axis];
|
||||
mTextureScaleRatios.push_back(v);
|
||||
}
|
||||
|
||||
LLGLTFMaterial* material = tep->getGLTFMaterialOverride();
|
||||
LLVector3 material_v;
|
||||
F32 scale_x = 1;
|
||||
F32 scale_y = 1;
|
||||
std::vector<LLVector3> material_v_vec;
|
||||
for (U32 i = 0; i < LLGLTFMaterial::GLTF_TEXTURE_INFO_COUNT; ++i)
|
||||
{
|
||||
if (material)
|
||||
{
|
||||
LLGLTFMaterial::TextureTransform& transform = material->mTextureTransform[i];
|
||||
scale_x = transform.mScale[VX];
|
||||
scale_y = transform.mScale[VY];
|
||||
}
|
||||
else
|
||||
{
|
||||
// Not having an override doesn't mean that there is no material
|
||||
scale_x = 1;
|
||||
scale_y = 1;
|
||||
}
|
||||
|
||||
if (tep->getTexGen() == LLTextureEntry::TEX_GEN_PLANAR)
|
||||
{
|
||||
material_v.mV[s_axis] = scale_x * scale.mV[s_axis];
|
||||
material_v.mV[t_axis] = scale_y * scale.mV[t_axis];
|
||||
}
|
||||
else
|
||||
{
|
||||
material_v.mV[s_axis] = scale_x / scale.mV[s_axis];
|
||||
material_v.mV[t_axis] = scale_y / scale.mV[t_axis];
|
||||
}
|
||||
material_v_vec.push_back(material_v);
|
||||
}
|
||||
mGLTFScaleRatios.push_back(material_v_vec);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -257,6 +257,7 @@ public:
|
|||
uuid_vec_t mSavedGLTFMaterialIds;
|
||||
gltf_materials_vec_t mSavedGLTFOverrideMaterials;
|
||||
std::vector<LLVector3> mTextureScaleRatios;
|
||||
std::vector< std::vector<LLVector3> > mGLTFScaleRatios;
|
||||
std::vector<LLVector3> mSilhouetteVertices; // array of vertices to render silhouette of object
|
||||
std::vector<LLVector3> mSilhouetteNormals; // array of normals to render silhouette of object
|
||||
bool mSilhouetteExists; // need to generate silhouette?
|
||||
|
|
|
|||
|
|
@ -415,7 +415,7 @@ LLSpatialGroup* LLSpatialGroup::getParent()
|
|||
|
||||
bool LLSpatialGroup::removeObject(LLDrawable *drawablep, bool from_octree)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_SPATIAL
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_SPATIAL;
|
||||
|
||||
if(!drawablep)
|
||||
{
|
||||
|
|
@ -640,7 +640,7 @@ void LLSpatialGroup::updateDistance(LLCamera &camera)
|
|||
|
||||
F32 LLSpatialPartition::calcDistance(LLSpatialGroup* group, LLCamera& camera)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_SPATIAL
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_SPATIAL;
|
||||
|
||||
LLVector4a eye;
|
||||
LLVector4a origin;
|
||||
|
|
@ -737,7 +737,7 @@ F32 LLSpatialGroup::getUpdateUrgency() const
|
|||
|
||||
bool LLSpatialGroup::changeLOD()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_SPATIAL
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_SPATIAL;
|
||||
|
||||
if (hasState(ALPHA_DIRTY | OBJECT_DIRTY))
|
||||
{
|
||||
|
|
@ -826,7 +826,7 @@ void LLSpatialGroup::handleDestruction(const TreeNode* node)
|
|||
|
||||
void LLSpatialGroup::handleChildAddition(const OctreeNode* parent, OctreeNode* child)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_SPATIAL
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_SPATIAL;
|
||||
|
||||
if (child->getListenerCount() == 0)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1025,7 +1025,7 @@ bool LLSurfacePatch::updateTexture()
|
|||
|
||||
void LLSurfacePatch::updateGL()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
F32 meters_per_grid = getSurface()->getMetersPerGrid();
|
||||
F32 grids_per_patch_edge = (F32)getSurface()->getGridsPerPatchEdge();
|
||||
|
||||
|
|
|
|||
|
|
@ -120,7 +120,7 @@ void LLToastPanel::snapToMessageHeight(LLTextBase* message, S32 maxLineCount)
|
|||
LLToastPanel* LLToastPanel::buidPanelFromNotification(
|
||||
const LLNotificationPtr& notification)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
LLToastPanel* res = NULL;
|
||||
|
||||
//process tip toast panels
|
||||
|
|
|
|||
|
|
@ -1279,6 +1279,7 @@ void settings_setup_listeners()
|
|||
setting_setup_signal_listener(gSavedSettings, "RenderReflectionProbeDetail", handleReflectionProbeDetailChanged);
|
||||
// setting_setup_signal_listener(gSavedSettings, "RenderReflectionsEnabled", handleReflectionsEnabled); // <FS:Beq/> FIRE-33659 better way to enable/disable reflections
|
||||
setting_setup_signal_listener(gSavedSettings, "RenderScreenSpaceReflections", handleReflectionProbeDetailChanged);
|
||||
setting_setup_signal_listener(gSavedSettings, "RenderMirrors", handleReflectionProbeDetailChanged);
|
||||
setting_setup_signal_listener(gSavedSettings, "RenderHeroProbeResolution", handleHeroProbeResolutionChanged);
|
||||
setting_setup_signal_listener(gSavedSettings, "RenderShadowDetail", handleSetShaderChanged);
|
||||
setting_setup_signal_listener(gSavedSettings, "RenderDeferredSSAO", handleSetShaderChanged);
|
||||
|
|
|
|||
|
|
@ -232,7 +232,7 @@ void display_update_camera()
|
|||
// Write some stats to LL_INFOS()
|
||||
void display_stats()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
const F32 FPS_LOG_FREQUENCY = 10.f;
|
||||
if (gRecentFPSTime.getElapsedTimeF32() >= FPS_LOG_FREQUENCY)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -623,7 +623,7 @@ void LLViewerParcelOverlay::setDirty()
|
|||
|
||||
void LLViewerParcelOverlay::updateGL()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
updateOverlayTexture();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -499,8 +499,6 @@ void LLViewerShaderMgr::setShaders()
|
|||
|
||||
mShaderList.clear();
|
||||
|
||||
LLShaderMgr::sMirrorsEnabled = LLPipeline::RenderMirrors;
|
||||
|
||||
if (!gGLManager.mHasRequirements)
|
||||
{
|
||||
// Viewer will show 'hardware requirements' warning later
|
||||
|
|
@ -759,6 +757,8 @@ std::string LLViewerShaderMgr::loadBasicShaders()
|
|||
|
||||
bool ssr = gSavedSettings.getBOOL("RenderScreenSpaceReflections");
|
||||
|
||||
bool mirrors = gSavedSettings.getBOOL("RenderMirrors");
|
||||
|
||||
bool has_reflection_probes = gSavedSettings.getBOOL("RenderReflectionsEnabled") && gGLManager.mGLVersion > 3.99f;
|
||||
|
||||
S32 probe_level = llclamp(gSavedSettings.getS32("RenderReflectionProbeLevel"), 0, 3);
|
||||
|
|
@ -786,6 +786,11 @@ std::string LLViewerShaderMgr::loadBasicShaders()
|
|||
attribs["REF_SAMPLE_COUNT"] = "32";
|
||||
}
|
||||
|
||||
if (mirrors)
|
||||
{
|
||||
attribs["HERO_PROBES"] = "1";
|
||||
}
|
||||
|
||||
{ // PBR terrain
|
||||
const S32 mapping = clamp_terrain_mapping(gSavedSettings.getS32("RenderTerrainPBRPlanarSampleCount"));
|
||||
attribs["TERRAIN_PLANAR_TEXTURE_SAMPLE_COUNT"] = llformat("%d", mapping);
|
||||
|
|
|
|||
|
|
@ -3604,7 +3604,19 @@ void LLViewerMediaTexture::setPlaying(bool playing)
|
|||
|
||||
for(std::list< LLFace* >::iterator iter = mMediaFaceList.begin(); iter!= mMediaFaceList.end(); ++iter)
|
||||
{
|
||||
switchTexture(LLRender::DIFFUSE_MAP, *iter);
|
||||
LLFace* facep = *iter;
|
||||
const LLTextureEntry* te = facep->getTextureEntry();
|
||||
if (te->getGLTFMaterial())
|
||||
{
|
||||
// PBR material, switch emissive and basecolor
|
||||
switchTexture(LLRender::EMISSIVE_MAP, *iter);
|
||||
switchTexture(LLRender::BASECOLOR_MAP, *iter);
|
||||
}
|
||||
else
|
||||
{
|
||||
// blinn-phong material, switch diffuse map only
|
||||
switchTexture(LLRender::DIFFUSE_MAP, *iter);
|
||||
}
|
||||
}
|
||||
}
|
||||
else //stop playing this media
|
||||
|
|
|
|||
|
|
@ -938,7 +938,7 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag
|
|||
imagep->mMaxVirtualSize = 0.f;
|
||||
}
|
||||
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_TEXTURE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_TEXTURE;
|
||||
for (U32 i = 0; i < LLRender::NUM_TEXTURE_CHANNELS; ++i)
|
||||
{
|
||||
for (S32 fi = 0; fi < imagep->getNumFaces(i); ++fi)
|
||||
|
|
|
|||
|
|
@ -6826,7 +6826,7 @@ void LLViewerWindow::setup3DRender()
|
|||
|
||||
void LLViewerWindow::setup3DViewport(S32 x_offset, S32 y_offset)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_UI
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_UI;
|
||||
gGLViewport[0] = mWorldViewRectRaw.mLeft + x_offset;
|
||||
gGLViewport[1] = mWorldViewRectRaw.mBottom + y_offset;
|
||||
gGLViewport[2] = mWorldViewRectRaw.getWidth();
|
||||
|
|
|
|||
|
|
@ -8065,7 +8065,7 @@ void LLVOAvatar::updateGL()
|
|||
{
|
||||
if (mMeshTexturesDirty)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR;
|
||||
updateMeshTextures();
|
||||
mMeshTexturesDirty = false;
|
||||
}
|
||||
|
|
@ -9685,7 +9685,7 @@ void LLVOAvatar::updateMeshVisibility()
|
|||
// virtual
|
||||
void LLVOAvatar::updateMeshTextures()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR;
|
||||
static S32 update_counter = 0;
|
||||
mBakedTextureDebugText.clear();
|
||||
|
||||
|
|
|
|||
|
|
@ -290,7 +290,7 @@ const LLVoiceVersionInfo& LLWebRTCVoiceClient::getVersion()
|
|||
|
||||
void LLWebRTCVoiceClient::updateSettings()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE;
|
||||
|
||||
setVoiceEnabled(LLVoiceClient::getInstance()->voiceEnabled());
|
||||
static LLCachedControl<S32> sVoiceEarLocation(gSavedSettings, "VoiceEarLocation");
|
||||
|
|
@ -335,7 +335,7 @@ void LLWebRTCVoiceClient::removeObserver(LLVoiceClientParticipantObserver *obser
|
|||
|
||||
void LLWebRTCVoiceClient::notifyParticipantObservers()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE;
|
||||
for (observer_set_t::iterator it = mParticipantObservers.begin(); it != mParticipantObservers.end();)
|
||||
{
|
||||
LLVoiceClientParticipantObserver *observer = *it;
|
||||
|
|
@ -357,7 +357,7 @@ void LLWebRTCVoiceClient::removeObserver(LLVoiceClientStatusObserver *observer)
|
|||
|
||||
void LLWebRTCVoiceClient::notifyStatusObservers(LLVoiceClientStatusObserver::EStatusType status)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE;
|
||||
|
||||
LL_DEBUGS("Voice") << "( " << LLVoiceClientStatusObserver::status2string(status) << " )"
|
||||
<< " mSession=" << mSession << LL_ENDL;
|
||||
|
|
@ -541,7 +541,7 @@ void LLWebRTCVoiceClient::voiceConnectionCoro()
|
|||
// for cross-region voice.
|
||||
void LLWebRTCVoiceClient::updateNeighboringRegions()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE;
|
||||
|
||||
static const std::vector<LLVector3d> neighbors {LLVector3d(0.0f, 1.0f, 0.0f), LLVector3d(0.707f, 0.707f, 0.0f),
|
||||
LLVector3d(1.0f, 0.0f, 0.0f), LLVector3d(0.707f, -0.707f, 0.0f),
|
||||
|
|
@ -574,7 +574,7 @@ void LLWebRTCVoiceClient::updateNeighboringRegions()
|
|||
// shut down the current audio session to make room for the next one.
|
||||
void LLWebRTCVoiceClient::leaveAudioSession()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE;
|
||||
|
||||
if(mSession)
|
||||
{
|
||||
|
|
@ -630,7 +630,7 @@ void LLWebRTCVoiceClient::OnDevicesChanged(const llwebrtc::LLWebRTCVoiceDeviceLi
|
|||
void LLWebRTCVoiceClient::OnDevicesChangedImpl(const llwebrtc::LLWebRTCVoiceDeviceList &render_devices,
|
||||
const llwebrtc::LLWebRTCVoiceDeviceList &capture_devices)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE;
|
||||
std::string inputDevice = gSavedSettings.getString("VoiceInputAudioDevice");
|
||||
std::string outputDevice = gSavedSettings.getString("VoiceOutputAudioDevice");
|
||||
|
||||
|
|
@ -797,7 +797,7 @@ void LLWebRTCVoiceClient::setHidden(bool hidden)
|
|||
// notify the observers.
|
||||
void LLWebRTCVoiceClient::OnConnectionEstablished(const std::string &channelID, const LLUUID ®ionID)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE;
|
||||
|
||||
if (gAgent.getRegion()->getRegionID() == regionID)
|
||||
{
|
||||
|
|
@ -881,7 +881,7 @@ void LLWebRTCVoiceClient::setEarLocation(S32 loc)
|
|||
|
||||
void LLWebRTCVoiceClient::updatePosition(void)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE;
|
||||
|
||||
LLViewerRegion *region = gAgent.getRegion();
|
||||
if (region && isAgentAvatarValid())
|
||||
|
|
@ -1010,7 +1010,7 @@ void LLWebRTCVoiceClient::enforceTether()
|
|||
// standard 50m
|
||||
void LLWebRTCVoiceClient::sendPositionUpdate(bool force)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE;
|
||||
|
||||
std::string spatial_data;
|
||||
|
||||
|
|
@ -1126,7 +1126,7 @@ LLWebRTCVoiceClient::participantStatePtr_t LLWebRTCVoiceClient::addParticipantBy
|
|||
|
||||
void LLWebRTCVoiceClient::removeParticipantByID(const std::string &channelID, const LLUUID &id, const LLUUID& region)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE;
|
||||
|
||||
participantStatePtr_t result;
|
||||
LLWebRTCVoiceClient::sessionState::ptr_t session = sessionState::matchSessionByChannelID(channelID);
|
||||
|
|
@ -1156,7 +1156,7 @@ LLWebRTCVoiceClient::participantState::participantState(const LLUUID& agent_id,
|
|||
LLWebRTCVoiceClient::participantStatePtr_t LLWebRTCVoiceClient::sessionState::addParticipant(const LLUUID& agent_id, const LLUUID& region)
|
||||
{
|
||||
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE;
|
||||
|
||||
participantStatePtr_t result;
|
||||
|
||||
|
|
@ -1194,7 +1194,7 @@ LLWebRTCVoiceClient::participantStatePtr_t LLWebRTCVoiceClient::sessionState::ad
|
|||
|
||||
LLWebRTCVoiceClient::participantStatePtr_t LLWebRTCVoiceClient::sessionState::findParticipantByID(const LLUUID& id)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE;
|
||||
|
||||
participantStatePtr_t result;
|
||||
participantUUIDMap::iterator iter = mParticipantsByUUID.find(id);
|
||||
|
|
@ -1209,7 +1209,7 @@ LLWebRTCVoiceClient::participantStatePtr_t LLWebRTCVoiceClient::sessionState::fi
|
|||
|
||||
void LLWebRTCVoiceClient::sessionState::removeParticipant(const LLWebRTCVoiceClient::participantStatePtr_t &participant)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE;
|
||||
|
||||
if (participant)
|
||||
{
|
||||
|
|
@ -1492,7 +1492,7 @@ void LLWebRTCVoiceClient::setMicGain(F32 gain)
|
|||
|
||||
void LLWebRTCVoiceClient::setVoiceEnabled(bool enabled)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE;
|
||||
|
||||
LL_DEBUGS("Voice")
|
||||
<< "( " << (enabled ? "enabled" : "disabled") << " )"
|
||||
|
|
@ -1887,7 +1887,7 @@ void LLWebRTCVoiceClient::sessionState::revive()
|
|||
|
||||
void LLWebRTCVoiceClient::sessionState::processSessionStates()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE;
|
||||
|
||||
auto iter = mSessions.begin();
|
||||
while (iter != mSessions.end())
|
||||
|
|
@ -1908,7 +1908,7 @@ void LLWebRTCVoiceClient::sessionState::processSessionStates()
|
|||
// process the states on each connection associated with a session.
|
||||
bool LLWebRTCVoiceClient::sessionState::processConnectionStates()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE;
|
||||
|
||||
std::list<connectionPtr_t>::iterator iter = mWebRTCConnections.begin();
|
||||
while (iter != mWebRTCConnections.end())
|
||||
|
|
@ -1932,7 +1932,7 @@ bool LLWebRTCVoiceClient::sessionState::processConnectionStates()
|
|||
// on our location.
|
||||
bool LLWebRTCVoiceClient::estateSessionState::processConnectionStates()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE;
|
||||
|
||||
if (!mShuttingDown)
|
||||
{
|
||||
|
|
@ -2168,7 +2168,7 @@ void LLVoiceWebRTCConnection::processIceUpdates()
|
|||
// will make the cap call to the server sending up the ICE candidates.
|
||||
void LLVoiceWebRTCConnection::processIceUpdatesCoro()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE;
|
||||
|
||||
if (mShutDown || LLWebRTCVoiceClient::isShuttingDown())
|
||||
{
|
||||
|
|
@ -2397,7 +2397,7 @@ void LLVoiceWebRTCConnection::sendData(const std::string &data)
|
|||
// The simulator will pass this on to the Secondlife WebRTC server.
|
||||
void LLVoiceWebRTCConnection::breakVoiceConnectionCoro()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE;
|
||||
|
||||
LL_DEBUGS("Voice") << "Disconnecting voice." << LL_ENDL;
|
||||
if (mWebRTCDataInterface)
|
||||
|
|
@ -2456,7 +2456,7 @@ void LLVoiceWebRTCConnection::breakVoiceConnectionCoro()
|
|||
// will use the offer and answer to negotiate the session.
|
||||
void LLVoiceWebRTCSpatialConnection::requestVoiceConnection()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE;
|
||||
|
||||
LLViewerRegion *regionp = LLWorld::instance().getRegionFromID(mRegionID);
|
||||
|
||||
|
|
@ -2529,7 +2529,7 @@ void LLVoiceWebRTCSpatialConnection::requestVoiceConnection()
|
|||
|
||||
void LLVoiceWebRTCConnection::OnVoiceConnectionRequestSuccess(const LLSD &result)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE;
|
||||
|
||||
if (LLWebRTCVoiceClient::isShuttingDown())
|
||||
{
|
||||
|
|
@ -2584,7 +2584,7 @@ static llwebrtc::LLWebRTCPeerConnectionInterface::InitOptions getConnectionOptio
|
|||
// Secondlife WebRTC server.
|
||||
bool LLVoiceWebRTCConnection::connectionStateMachine()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE;
|
||||
|
||||
processIceUpdates();
|
||||
|
||||
|
|
@ -2778,7 +2778,7 @@ void LLVoiceWebRTCConnection::OnDataReceived(const std::string& data, bool binar
|
|||
// this pointer.
|
||||
void LLVoiceWebRTCConnection::OnDataReceivedImpl(const std::string &data, bool binary)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE;
|
||||
|
||||
if (mShutDown)
|
||||
{
|
||||
|
|
@ -2945,7 +2945,7 @@ void LLVoiceWebRTCConnection::OnDataChannelReady(llwebrtc::LLWebRTCDataInterface
|
|||
// to peers.
|
||||
void LLVoiceWebRTCConnection::sendJoin()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE;
|
||||
|
||||
|
||||
boost::json::object root;
|
||||
|
|
@ -3019,7 +3019,7 @@ LLVoiceWebRTCAdHocConnection::~LLVoiceWebRTCAdHocConnection()
|
|||
// So, we have a separate requestVoiceConnection call.
|
||||
void LLVoiceWebRTCAdHocConnection::requestVoiceConnection()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_VOICE;
|
||||
|
||||
LLViewerRegion *regionp = LLWorld::instance().getRegionFromID(mRegionID);
|
||||
|
||||
|
|
|
|||
|
|
@ -142,7 +142,7 @@ void LLVOSurfacePatch::updateGL()
|
|||
{
|
||||
if (mPatchp)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
mPatchp->updateGL();
|
||||
}
|
||||
}
|
||||
|
|
@ -995,7 +995,7 @@ void gen_terrain_tangents(U16 strider_vertex_count,
|
|||
LLStrider<LLVector2> &texCoords0p,
|
||||
LLStrider<U16> &indicesp)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
|
||||
LLVector4a *vertices = new LLVector4a[strider_vertex_count];
|
||||
LLVector4a *normals = new LLVector4a[strider_vertex_count];
|
||||
|
|
|
|||
|
|
@ -1754,7 +1754,7 @@ void send_agent_pause()
|
|||
|
||||
void send_agent_resume()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_NETWORK
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_NETWORK;
|
||||
// Note: used to check for LLWorld initialization before it became a singleton.
|
||||
// Rather than just remove this check I'm changing it to assure that the message
|
||||
// system has been initialized. -MG
|
||||
|
|
|
|||
|
|
@ -1182,12 +1182,7 @@ void LLPipeline::refreshCachedSettings()
|
|||
RenderScreenSpaceReflectionAdaptiveStepMultiplier = gSavedSettings.getF32("RenderScreenSpaceReflectionAdaptiveStepMultiplier");
|
||||
RenderScreenSpaceReflectionGlossySamples = gSavedSettings.getS32("RenderScreenSpaceReflectionGlossySamples");
|
||||
RenderBufferVisualization = gSavedSettings.getS32("RenderBufferVisualization");
|
||||
if (gSavedSettings.getBOOL("RenderMirrors") != RenderMirrors)
|
||||
{
|
||||
RenderMirrors = gSavedSettings.getBOOL("RenderMirrors");
|
||||
LLViewerShaderMgr::instance()->clearShaderCache();
|
||||
LLViewerShaderMgr::instance()->setShaders();
|
||||
}
|
||||
RenderMirrors = gSavedSettings.getBOOL("RenderMirrors");
|
||||
RenderHeroProbeUpdateRate = gSavedSettings.getS32("RenderHeroProbeUpdateRate");
|
||||
RenderHeroProbeConservativeUpdateMultiplier = gSavedSettings.getS32("RenderHeroProbeConservativeUpdateMultiplier");
|
||||
|
||||
|
|
|
|||
|
|
@ -107,7 +107,7 @@ public:
|
|||
|
||||
virtual void recordMessage(LLError::ELevel level, const std::string& message)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
mFile << message << std::endl;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue