Fixed texture console showing invalid values...
Improved texture console progress bar visibility. Shoehorned sgblacklist for server response status 499 Restored stat recording for LLViewerTextureList Cleaned up lltexturefetch by excluding more unused code via #if
This commit is contained in:
@@ -90,7 +90,7 @@ LLDebugView::LLDebugView(const std::string& name, const LLRect &rect)
|
|||||||
mMemoryView->setVisible(FALSE); // start invisible
|
mMemoryView->setVisible(FALSE); // start invisible
|
||||||
addChild(mMemoryView);
|
addChild(mMemoryView);
|
||||||
|
|
||||||
r.set(150, rect.getHeight() - 50, 820, 100);
|
r.set(150, rect.getHeight() - 50, 870, 100);
|
||||||
gTextureView = new LLTextureView("gTextureView", r);
|
gTextureView = new LLTextureView("gTextureView", r);
|
||||||
gTextureView->setRect(r);
|
gTextureView->setRect(r);
|
||||||
gTextureView->setFollowsBottom();
|
gTextureView->setFollowsBottom();
|
||||||
|
|||||||
@@ -472,6 +472,7 @@ public:
|
|||||||
LLMutex* SGHostBlackList::sMutex = 0;
|
LLMutex* SGHostBlackList::sMutex = 0;
|
||||||
SGHostBlackList::blacklist_t SGHostBlackList::blacklist;
|
SGHostBlackList::blacklist_t SGHostBlackList::blacklist;
|
||||||
|
|
||||||
|
#if HTTP_METRICS
|
||||||
// Cross-thread messaging for asset metrics.
|
// Cross-thread messaging for asset metrics.
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -695,7 +696,7 @@ public:
|
|||||||
bool truncate_viewer_metrics(int max_regions, LLSD & metrics);
|
bool truncate_viewer_metrics(int max_regions, LLSD & metrics);
|
||||||
|
|
||||||
} // end of anonymous namespace
|
} // end of anonymous namespace
|
||||||
|
#endif
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
@@ -716,8 +717,10 @@ const char* LLTextureFetchWorker::sStateDescs[] = {
|
|||||||
"DONE",
|
"DONE",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if HTTP_METRICS
|
||||||
// static
|
// static
|
||||||
volatile bool LLTextureFetch::svMetricsDataBreak(true); // Start with a data break
|
volatile bool LLTextureFetch::svMetricsDataBreak(true); // Start with a data break
|
||||||
|
#endif
|
||||||
|
|
||||||
// called from MAIN THREAD
|
// called from MAIN THREAD
|
||||||
|
|
||||||
@@ -1224,8 +1227,8 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
#if HTTP_METRICS
|
|
||||||
mFetcher->addToNetworkQueue(this); // failsafe
|
mFetcher->addToNetworkQueue(this); // failsafe
|
||||||
|
#if HTTP_METRICS
|
||||||
if (! mMetricsStartTime)
|
if (! mMetricsStartTime)
|
||||||
{
|
{
|
||||||
mMetricsStartTime = LLViewerAssetStatsFF::get_timestamp();
|
mMetricsStartTime = LLViewerAssetStatsFF::get_timestamp();
|
||||||
@@ -1334,11 +1337,16 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||||||
if (mRequestedSize < 0)
|
if (mRequestedSize < 0)
|
||||||
{
|
{
|
||||||
S32 max_attempts;
|
S32 max_attempts;
|
||||||
if (mGetStatus == HTTP_NOT_FOUND)
|
if (mGetStatus == HTTP_NOT_FOUND || mGetStatus == 499)
|
||||||
{
|
{
|
||||||
mHTTPFailCount = max_attempts = 1; // Don't retry
|
mHTTPFailCount = max_attempts = 1; // Don't retry
|
||||||
llwarns << "Texture missing from server (404): " << mUrl << llendl;
|
if(mGetStatus == HTTP_NOT_FOUND)
|
||||||
|
llwarns << "Texture missing from server (404): " << mUrl << llendl;
|
||||||
|
else if (mGetStatus == 499)
|
||||||
|
{
|
||||||
|
llwarns << "No response from server (499): " << mUrl << llendl;
|
||||||
|
SGHostBlackList::add(mUrl, 60.0, mGetStatus);
|
||||||
|
}
|
||||||
//roll back to try UDP
|
//roll back to try UDP
|
||||||
if(mCanUseNET)
|
if(mCanUseNET)
|
||||||
{
|
{
|
||||||
@@ -1939,10 +1947,14 @@ LLTextureFetch::LLTextureFetch(LLTextureCache* cache, LLImageDecodeThread* image
|
|||||||
mTextureBandwidth(0),
|
mTextureBandwidth(0),
|
||||||
mHTTPTextureBits(0),
|
mHTTPTextureBits(0),
|
||||||
mTotalHTTPRequests(0),
|
mTotalHTTPRequests(0),
|
||||||
mCurlGetRequest(NULL),
|
mCurlGetRequest(NULL)
|
||||||
mQAMode(qa_mode)
|
#if HTTP_METRICS
|
||||||
|
,mQAMode(qa_mode)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
|
#if HTTP_METRICS
|
||||||
mCurlPOSTRequestCount = 0;
|
mCurlPOSTRequestCount = 0;
|
||||||
|
#endif
|
||||||
mMaxBandwidth = gSavedSettings.getF32("ThrottleBandwidthKBPS");
|
mMaxBandwidth = gSavedSettings.getF32("ThrottleBandwidthKBPS");
|
||||||
mTextureInfo.setUpLogging(gSavedSettings.getBOOL("LogTextureDownloadsToViewerLog"), gSavedSettings.getBOOL("LogTextureDownloadsToSimulator"), gSavedSettings.getU32("TextureLoggingThreshold"));
|
mTextureInfo.setUpLogging(gSavedSettings.getBOOL("LogTextureDownloadsToViewerLog"), gSavedSettings.getBOOL("LogTextureDownloadsToSimulator"), gSavedSettings.getU32("TextureLoggingThreshold"));
|
||||||
}
|
}
|
||||||
@@ -1951,12 +1963,14 @@ LLTextureFetch::~LLTextureFetch()
|
|||||||
{
|
{
|
||||||
clearDeleteList() ;
|
clearDeleteList() ;
|
||||||
|
|
||||||
|
#if HTTP_METRICS
|
||||||
while (! mCommands.empty())
|
while (! mCommands.empty())
|
||||||
{
|
{
|
||||||
TFRequest * req(mCommands.front());
|
TFRequest * req(mCommands.front());
|
||||||
mCommands.erase(mCommands.begin());
|
mCommands.erase(mCommands.begin());
|
||||||
delete req;
|
delete req;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// ~LLQueuedThread() called here
|
// ~LLQueuedThread() called here
|
||||||
}
|
}
|
||||||
@@ -2259,8 +2273,10 @@ S32 LLTextureFetch::getPending()
|
|||||||
LLMutexLock lock(&mQueueMutex);
|
LLMutexLock lock(&mQueueMutex);
|
||||||
|
|
||||||
res = mRequestQueue.size();
|
res = mRequestQueue.size();
|
||||||
|
#if HTTP_METRICS
|
||||||
res += mCurlPOSTRequestCount;
|
res += mCurlPOSTRequestCount;
|
||||||
res += mCommands.size();
|
res += mCommands.size();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
unlockData();
|
unlockData();
|
||||||
return res;
|
return res;
|
||||||
@@ -2278,6 +2294,7 @@ bool LLTextureFetch::runCondition()
|
|||||||
//
|
//
|
||||||
// Changes here may need to be reflected in getPending().
|
// Changes here may need to be reflected in getPending().
|
||||||
|
|
||||||
|
#if HTTP_METRICS
|
||||||
bool have_no_commands(false);
|
bool have_no_commands(false);
|
||||||
{
|
{
|
||||||
LLMutexLock lock(&mQueueMutex);
|
LLMutexLock lock(&mQueueMutex);
|
||||||
@@ -2290,6 +2307,9 @@ bool LLTextureFetch::runCondition()
|
|||||||
return ! (have_no_commands
|
return ! (have_no_commands
|
||||||
&& have_no_curl_requests
|
&& have_no_curl_requests
|
||||||
&& (mRequestQueue.empty() && mIdleThread)); // From base class
|
&& (mRequestQueue.empty() && mIdleThread)); // From base class
|
||||||
|
#else
|
||||||
|
return !(mRequestQueue.empty() && mIdleThread);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
@@ -2297,9 +2317,11 @@ bool LLTextureFetch::runCondition()
|
|||||||
// MAIN THREAD (unthreaded envs), WORKER THREAD (threaded envs)
|
// MAIN THREAD (unthreaded envs), WORKER THREAD (threaded envs)
|
||||||
void LLTextureFetch::commonUpdate()
|
void LLTextureFetch::commonUpdate()
|
||||||
{
|
{
|
||||||
|
#if HTTP_METRICS
|
||||||
// Run a cross-thread command, if any.
|
// Run a cross-thread command, if any.
|
||||||
cmdDoWork();
|
cmdDoWork();
|
||||||
|
#endif
|
||||||
|
|
||||||
// Update Curl on same thread as mCurlGetRequest was constructed
|
// Update Curl on same thread as mCurlGetRequest was constructed
|
||||||
S32 processed = mCurlGetRequest->process();
|
S32 processed = mCurlGetRequest->process();
|
||||||
if (processed > 0)
|
if (processed > 0)
|
||||||
@@ -2869,7 +2891,6 @@ void LLTextureFetch::commandDataBreak()
|
|||||||
|
|
||||||
LLTextureFetch::svMetricsDataBreak = true;
|
LLTextureFetch::svMetricsDataBreak = true;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
void LLTextureFetch::cmdEnqueue(TFRequest * req)
|
void LLTextureFetch::cmdEnqueue(TFRequest * req)
|
||||||
{
|
{
|
||||||
@@ -2927,14 +2948,11 @@ namespace
|
|||||||
bool
|
bool
|
||||||
TFReqSetRegion::doWork(LLTextureFetch *)
|
TFReqSetRegion::doWork(LLTextureFetch *)
|
||||||
{
|
{
|
||||||
#if HTTP_METRICS
|
|
||||||
LLViewerAssetStatsFF::set_region_thread1(mRegionHandle);
|
LLViewerAssetStatsFF::set_region_thread1(mRegionHandle);
|
||||||
#endif
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if HTTP_METRICS
|
|
||||||
TFReqSendMetrics::~TFReqSendMetrics()
|
TFReqSendMetrics::~TFReqSendMetrics()
|
||||||
{
|
{
|
||||||
delete mMainStats;
|
delete mMainStats;
|
||||||
@@ -3076,8 +3094,6 @@ TFReqSendMetrics::doWork(LLTextureFetch * fetcher)
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
bool
|
bool
|
||||||
truncate_viewer_metrics(int max_regions, LLSD & metrics)
|
truncate_viewer_metrics(int max_regions, LLSD & metrics)
|
||||||
@@ -3117,6 +3133,5 @@ truncate_viewer_metrics(int max_regions, LLSD & metrics)
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // end of anonymous namespace
|
} // end of anonymous namespace
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -106,7 +106,6 @@ public:
|
|||||||
const LLUUID & agent_id,
|
const LLUUID & agent_id,
|
||||||
LLViewerAssetStats * main_stats);
|
LLViewerAssetStats * main_stats);
|
||||||
void commandDataBreak();
|
void commandDataBreak();
|
||||||
#endif
|
|
||||||
|
|
||||||
LLCurlRequest & getCurlRequest() { return *mCurlGetRequest; }
|
LLCurlRequest & getCurlRequest() { return *mCurlGetRequest; }
|
||||||
|
|
||||||
@@ -115,6 +114,7 @@ public:
|
|||||||
// Curl POST counter maintenance
|
// Curl POST counter maintenance
|
||||||
inline void incrCurlPOSTCount() { mCurlPOSTRequestCount++; }
|
inline void incrCurlPOSTCount() { mCurlPOSTRequestCount++; }
|
||||||
inline void decrCurlPOSTCount() { mCurlPOSTRequestCount--; }
|
inline void decrCurlPOSTCount() { mCurlPOSTRequestCount--; }
|
||||||
|
#endif
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void addToNetworkQueue(LLTextureFetchWorker* worker);
|
void addToNetworkQueue(LLTextureFetchWorker* worker);
|
||||||
@@ -133,6 +133,7 @@ private:
|
|||||||
/*virtual*/ void threadedUpdate(void);
|
/*virtual*/ void threadedUpdate(void);
|
||||||
void commonUpdate();
|
void commonUpdate();
|
||||||
|
|
||||||
|
#if HTTP_METRICS
|
||||||
// Metrics command helpers
|
// Metrics command helpers
|
||||||
/**
|
/**
|
||||||
* Enqueues a command request at the end of the command queue
|
* Enqueues a command request at the end of the command queue
|
||||||
@@ -162,6 +163,7 @@ private:
|
|||||||
* Method locks the command queue.
|
* Method locks the command queue.
|
||||||
*/
|
*/
|
||||||
void cmdDoWork();
|
void cmdDoWork();
|
||||||
|
#endif
|
||||||
|
|
||||||
public:
|
public:
|
||||||
LLUUID mDebugID;
|
LLUUID mDebugID;
|
||||||
@@ -197,6 +199,7 @@ private:
|
|||||||
//debug use
|
//debug use
|
||||||
U32 mTotalHTTPRequests ;
|
U32 mTotalHTTPRequests ;
|
||||||
|
|
||||||
|
#if HTTP_METRICS
|
||||||
// Out-of-band cross-thread command queue. This command queue
|
// Out-of-band cross-thread command queue. This command queue
|
||||||
// is logically tied to LLQueuedThread's list of
|
// is logically tied to LLQueuedThread's list of
|
||||||
// QueuedRequest instances and so must be covered by the
|
// QueuedRequest instances and so must be covered by the
|
||||||
@@ -213,12 +216,13 @@ private:
|
|||||||
// use the LLCurl module's request counter as it isn't thread compatible.
|
// use the LLCurl module's request counter as it isn't thread compatible.
|
||||||
// *NOTE: Don't mix Atomic and static, apr_initialize must be called first.
|
// *NOTE: Don't mix Atomic and static, apr_initialize must be called first.
|
||||||
LLAtomic32<S32> mCurlPOSTRequestCount;
|
LLAtomic32<S32> mCurlPOSTRequestCount;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// A probabilistically-correct indicator that the current
|
// A probabilistically-correct indicator that the current
|
||||||
// attempt to log metrics follows a break in the metrics stream
|
// attempt to log metrics follows a break in the metrics stream
|
||||||
// reporting due to either startup or a problem POSTing data.
|
// reporting due to either startup or a problem POSTing data.
|
||||||
static volatile bool svMetricsDataBreak;
|
static volatile bool svMetricsDataBreak;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // LL_LLTEXTUREFETCH_H
|
#endif // LL_LLTEXTUREFETCH_H
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ static std::string title_string3("Pkt Bnd");
|
|||||||
static std::string title_string4(" W x H (Dis) Mem");
|
static std::string title_string4(" W x H (Dis) Mem");
|
||||||
|
|
||||||
static S32 title_x1 = 0;
|
static S32 title_x1 = 0;
|
||||||
static S32 title_x2 = 440;
|
static S32 title_x2 = 460;
|
||||||
static S32 title_x3 = title_x2 + 40;
|
static S32 title_x3 = title_x2 + 40;
|
||||||
static S32 title_x4 = title_x3 + 50;
|
static S32 title_x4 = title_x3 + 50;
|
||||||
static S32 texture_bar_height = 8;
|
static S32 texture_bar_height = 8;
|
||||||
@@ -182,7 +182,7 @@ void LLTextureBar::draw()
|
|||||||
// Various numerical stats.
|
// Various numerical stats.
|
||||||
std::string tex_str;
|
std::string tex_str;
|
||||||
S32 left, right;
|
S32 left, right;
|
||||||
S32 top = 0;
|
S32 top = -2;
|
||||||
S32 bottom = top + 6;
|
S32 bottom = top + 6;
|
||||||
LLColor4 clr;
|
LLColor4 clr;
|
||||||
|
|
||||||
@@ -256,13 +256,15 @@ void LLTextureBar::draw()
|
|||||||
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
|
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
|
||||||
|
|
||||||
// Draw the progress bar.
|
// Draw the progress bar.
|
||||||
S32 bar_width = 100;
|
S32 bar_width = 125;
|
||||||
S32 bar_left = 330;
|
S32 bar_left = 330;
|
||||||
left = bar_left;
|
left = bar_left;
|
||||||
right = left + bar_width;
|
right = left + bar_width;
|
||||||
|
|
||||||
gGL.color4f(0.f, 0.f, 0.f, 0.75f);
|
gGL.color4f(0.f, 0.f, 0.f, 0.75f);
|
||||||
gl_rect_2d(left, top, right, bottom);
|
gl_rect_2d(left, top, right, bottom);
|
||||||
|
gGL.color4f(.75f, .75f, .75f, 0.75f);
|
||||||
|
gl_rect_2d(left, top, right, bottom, false);
|
||||||
|
|
||||||
F32 data_progress = mImagep->mDownloadProgress;
|
F32 data_progress = mImagep->mDownloadProgress;
|
||||||
|
|
||||||
@@ -272,7 +274,7 @@ void LLTextureBar::draw()
|
|||||||
right = left + llfloor(data_progress * (F32)bar_width);
|
right = left + llfloor(data_progress * (F32)bar_width);
|
||||||
if (right > left)
|
if (right > left)
|
||||||
{
|
{
|
||||||
gGL.color4f(0.f, 0.f, 1.f, 0.75f);
|
gGL.color4f(.75f, .75f, .75f, 0.75f);
|
||||||
gl_rect_2d(left, top, right, bottom);
|
gl_rect_2d(left, top, right, bottom);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -494,12 +496,13 @@ void LLGLTexMemBar::draw()
|
|||||||
#endif
|
#endif
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
text = llformat("Textures: %d Fetch: %d(%d) Pkts:%d(%d) Cache R/W: %d/%d LFS:%d IW:%d RAW:%d HTP:%d BW: %.0f/%.0f",
|
text = llformat("Textures: %d Fetch: %d(%d) Pkts:%d(%d) Cache R/W: %d/%d LFS:%d IW:%d RAW:%d HTP:%d DEC:%d CRE:%d",
|
||||||
gTextureList.getNumImages(),
|
gTextureList.getNumImages(),
|
||||||
LLAppViewer::getTextureFetch()->getNumRequests(), LLAppViewer::getTextureFetch()->getNumDeletes(),
|
LLAppViewer::getTextureFetch()->getNumRequests(), LLAppViewer::getTextureFetch()->getNumDeletes(),
|
||||||
LLAppViewer::getTextureFetch()->mPacketCount, LLAppViewer::getTextureFetch()->mBadPacketCount,
|
LLAppViewer::getTextureFetch()->mPacketCount, LLAppViewer::getTextureFetch()->mBadPacketCount,
|
||||||
LLAppViewer::getTextureCache()->getNumReads(), LLAppViewer::getTextureCache()->getNumWrites(),
|
LLAppViewer::getTextureCache()->getNumReads(), LLAppViewer::getTextureCache()->getNumWrites(),
|
||||||
LLLFSThread::sLocal->getPending(),
|
LLLFSThread::sLocal->getPending(),
|
||||||
|
LLAppViewer::getImageDecodeThread()->getPending(),
|
||||||
LLImageRaw::sRawImageCount,
|
LLImageRaw::sRawImageCount,
|
||||||
LLAppViewer::getTextureFetch()->getNumHTTPRequests(),
|
LLAppViewer::getTextureFetch()->getNumHTTPRequests(),
|
||||||
LLAppViewer::getImageDecodeThread()->getPending(),
|
LLAppViewer::getImageDecodeThread()->getPending(),
|
||||||
@@ -508,7 +511,7 @@ void LLGLTexMemBar::draw()
|
|||||||
LLFontGL::getFontMonospace()->renderUTF8(text, 0, 0, line_height*2,
|
LLFontGL::getFontMonospace()->renderUTF8(text, 0, 0, line_height*2,
|
||||||
text_color, LLFontGL::LEFT, LLFontGL::TOP);
|
text_color, LLFontGL::LEFT, LLFontGL::TOP);
|
||||||
|
|
||||||
left = 600;
|
left = 650;
|
||||||
F32 bandwidth = LLAppViewer::getTextureFetch()->getTextureBandwidth();
|
F32 bandwidth = LLAppViewer::getTextureFetch()->getTextureBandwidth();
|
||||||
F32 max_bandwidth = gSavedSettings.getF32("ThrottleBandwidthKBPS");
|
F32 max_bandwidth = gSavedSettings.getF32("ThrottleBandwidthKBPS");
|
||||||
color = bandwidth > max_bandwidth ? LLColor4::red : bandwidth > max_bandwidth*.75f ? LLColor4::yellow : text_color;
|
color = bandwidth > max_bandwidth ? LLColor4::red : bandwidth > max_bandwidth*.75f ? LLColor4::yellow : text_color;
|
||||||
|
|||||||
@@ -585,12 +585,12 @@ void LLViewerTextureList::updateImages(F32 max_time)
|
|||||||
{
|
{
|
||||||
LLAppViewer::getTextureFetch()->setTextureBandwidth(LLViewerStats::getInstance()->mTextureKBitStat.getMeanPerSec());
|
LLAppViewer::getTextureFetch()->setTextureBandwidth(LLViewerStats::getInstance()->mTextureKBitStat.getMeanPerSec());
|
||||||
|
|
||||||
/*LLViewerStats::getInstance()->mNumImagesStat.addValue(sNumImages);
|
sNumImagesStat.addValue(sNumImages);
|
||||||
LLViewerStats::getInstance()->mNumRawImagesStat.addValue(LLImageRaw::sRawImageCount);
|
sNumRawImagesStat.addValue(LLImageRaw::sRawImageCount);
|
||||||
LLViewerStats::getInstance()->mGLTexMemStat.addValue((F32)BYTES_TO_MEGA_BYTES(LLImageGL::sGlobalTextureMemoryInBytes));
|
sGLTexMemStat.addValue((F32)BYTES_TO_MEGA_BYTES(LLImageGL::sGlobalTextureMemoryInBytes));
|
||||||
LLViewerStats::getInstance()->mGLBoundMemStat.addValue((F32)BYTES_TO_MEGA_BYTES(LLImageGL::sBoundTextureMemoryInBytes));
|
sGLBoundMemStat.addValue((F32)BYTES_TO_MEGA_BYTES(LLImageGL::sBoundTextureMemoryInBytes));
|
||||||
LLViewerStats::getInstance()->mRawMemStat.addValue((F32)BYTES_TO_MEGA_BYTES(LLImageRaw::sGlobalRawMemory));
|
sRawMemStat.addValue((F32)BYTES_TO_MEGA_BYTES(LLImageRaw::sGlobalRawMemory));
|
||||||
LLViewerStats::getInstance()->mFormattedMemStat.addValue((F32)BYTES_TO_MEGA_BYTES(LLImageFormatted::sGlobalFormattedMemory));*/
|
sFormattedMemStat.addValue((F32)BYTES_TO_MEGA_BYTES(LLImageFormatted::sGlobalFormattedMemory));
|
||||||
|
|
||||||
updateImagesDecodePriorities();
|
updateImagesDecodePriorities();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user