diff options
Diffstat (limited to 'indra')
| -rwxr-xr-x | indra/llcommon/llthread.cpp | 39 | ||||
| -rw-r--r-- | indra/llcommon/lltraceaccumulators.h | 1 | ||||
| -rw-r--r-- | indra/llcommon/lltracerecording.cpp | 15 | ||||
| -rw-r--r-- | indra/llcommon/lltracerecording.h | 143 | ||||
| -rw-r--r-- | indra/llcommon/lltracethreadrecorder.cpp | 7 | ||||
| -rw-r--r-- | indra/llcommon/lltracethreadrecorder.h | 2 | ||||
| -rwxr-xr-x | indra/newview/llappviewer.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/llscenemonitor.cpp | 36 | ||||
| -rw-r--r-- | indra/newview/llscenemonitor.h | 2 | ||||
| -rwxr-xr-x | indra/newview/llstatusbar.cpp | 2 | ||||
| -rwxr-xr-x | indra/newview/lltexturefetch.cpp | 4 | ||||
| -rwxr-xr-x | indra/newview/lltexturefetch.h | 8 | ||||
| -rwxr-xr-x | indra/newview/lltextureview.cpp | 4 | ||||
| -rwxr-xr-x | indra/newview/llviewerassetstats.cpp | 47 | ||||
| -rwxr-xr-x | indra/newview/llviewerstats.cpp | 52 | ||||
| -rwxr-xr-x | indra/newview/llviewerstats.h | 14 | ||||
| -rwxr-xr-x | indra/newview/llviewertexturelist.cpp | 6 | ||||
| -rwxr-xr-x | indra/newview/llviewerwindow.cpp | 2 | ||||
| -rwxr-xr-x | indra/newview/llworld.cpp | 10 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/floater_scene_load_stats.xml | 28 | ||||
| -rwxr-xr-x | indra/newview/skins/default/xui/en/floater_stats.xml | 32 | 
21 files changed, 298 insertions, 157 deletions
| diff --git a/indra/llcommon/llthread.cpp b/indra/llcommon/llthread.cpp index 166a4eb26d..e0f53fb9c4 100755 --- a/indra/llcommon/llthread.cpp +++ b/indra/llcommon/llthread.cpp @@ -39,6 +39,39 @@  #include <sched.h>  #endif + +#ifdef LL_WINDOWS +const DWORD MS_VC_EXCEPTION=0x406D1388; + +#pragma pack(push,8) +typedef struct tagTHREADNAME_INFO +{ +	DWORD dwType; // Must be 0x1000. +	const char* szName; // Pointer to name (in user addr space). +	DWORD dwThreadID; // Thread ID (-1=caller thread). +	DWORD dwFlags; // Reserved for future use, must be zero. +} THREADNAME_INFO; +#pragma pack(pop) + +void SetThreadName( DWORD dwThreadID, const char* threadName) +{ +	THREADNAME_INFO info; +	info.dwType = 0x1000; +	info.szName = threadName; +	info.dwThreadID = dwThreadID; +	info.dwFlags = 0; + +	__try +	{ +		RaiseException( MS_VC_EXCEPTION, 0, sizeof(info)/sizeof(DWORD), (DWORD*)&info ); +	} +	__except(EXCEPTION_CONTINUE_EXECUTION) +	{ +	} +} +#endif + +  //----------------------------------------------------------------------------  // Usage:  // void run_func(LLThread* thread) @@ -93,6 +126,11 @@ void *APR_THREAD_FUNC LLThread::staticRun(apr_thread_t *apr_threadp, void *datap  {  	LLThread *threadp = (LLThread *)datap; +#ifdef LL_WINDOWS +	SetThreadName(-1, threadp->mName.c_str()); +#endif + +  	LLTrace::ThreadRecorder thread_recorder(*LLTrace::get_master_thread_recorder());  #if !LL_DARWIN @@ -224,6 +262,7 @@ void LLThread::start()  		llwarns << "failed to start thread " << mName << llendl;  		ll_apr_warn_status(status);  	} +  }  //============================================================================ diff --git a/indra/llcommon/lltraceaccumulators.h b/indra/llcommon/lltraceaccumulators.h index fac6347ff9..a2f9f4c090 100644 --- a/indra/llcommon/lltraceaccumulators.h +++ b/indra/llcommon/lltraceaccumulators.h @@ -37,7 +37,6 @@  namespace LLTrace  { -  	template<typename ACCUMULATOR>  	class AccumulatorBuffer : public LLRefCount  	{ diff --git a/indra/llcommon/lltracerecording.cpp b/indra/llcommon/lltracerecording.cpp index f1388e7935..875c371068 100644 --- a/indra/llcommon/lltracerecording.cpp +++ b/indra/llcommon/lltracerecording.cpp @@ -38,10 +38,13 @@ namespace LLTrace  // Recording  /////////////////////////////////////////////////////////////////////// -Recording::Recording()  -:	mElapsedSeconds(0) +Recording::Recording(EPlayState state)  +:	mElapsedSeconds(0), +	mInHandOff(false) +  {  	mBuffers = new AccumulatorBufferGroup(); +	setPlayState(state);  }  Recording::Recording( const Recording& other ) @@ -101,7 +104,8 @@ void Recording::handleStart()  {  	mSamplingTimer.reset();  	mBuffers.setStayUnique(true); -	LLTrace::get_thread_recorder()->activate(mBuffers.write()); +	LLTrace::get_thread_recorder()->activate(mBuffers.write(), mInHandOff); +	mInHandOff = false;  }  void Recording::handleStop() @@ -113,6 +117,7 @@ void Recording::handleStop()  void Recording::handleSplitTo(Recording& other)  { +	other.mInHandOff = true;  	mBuffers.write()->handOffTo(*other.mBuffers.write());  } @@ -485,6 +490,8 @@ void PeriodicRecording::handleStop()  void PeriodicRecording::handleReset()  { +	getCurRecording().stop(); +  	if (mAutoResize)  	{  		mRecordingPeriods.clear(); @@ -500,6 +507,7 @@ void PeriodicRecording::handleReset()  		}  	}  	mCurPeriod = 0; +	mNumPeriods = 0;  	getCurRecording().setPlayState(getPlayState());  } @@ -719,7 +727,6 @@ void LLStopWatchControlsMixinCommon::start()  		handleStart();  		break;  	case STARTED: -		handleReset();  		break;  	default:  		llassert(false); diff --git a/indra/llcommon/lltracerecording.h b/indra/llcommon/lltracerecording.h index 7b0970ffdf..31616a52cc 100644 --- a/indra/llcommon/lltracerecording.h +++ b/indra/llcommon/lltracerecording.h @@ -124,11 +124,32 @@ namespace LLTrace  	template<typename T>  	class EventStatHandle; +	template<typename T> +	struct RelatedTypes +	{ +		typedef F64 fractional_t; +		typedef T	sum_t; +	}; + +	template<typename T, typename UNIT_T> +	struct RelatedTypes<LLUnit<T, UNIT_T> > +	{ +		typedef LLUnit<typename RelatedTypes<T>::fractional_t, UNIT_T> fractional_t; +		typedef LLUnit<typename RelatedTypes<T>::sum_t, UNIT_T> sum_t; +	}; + +	template<> +	struct RelatedTypes<bool> +	{ +		typedef F64 fractional_t; +		typedef U32 sum_t; +	}; +  	class Recording   	:	public LLStopWatchControlsMixin<Recording>  	{  	public: -		Recording(); +		Recording(EPlayState state = LLStopWatchControlsMixinCommon::STOPPED);  		Recording(const Recording& other);  		~Recording(); @@ -172,16 +193,16 @@ namespace LLTrace  		// CountStatHandle accessors  		F64 getSum(const TraceType<CountAccumulator>& stat);  		template <typename T> -		T getSum(const CountStatHandle<T>& stat) +		typename RelatedTypes<T>::sum_t getSum(const CountStatHandle<T>& stat)  		{ -			return (T)getSum(static_cast<const TraceType<CountAccumulator>&> (stat)); +			return (typename RelatedTypes<T>::sum_t)getSum(static_cast<const TraceType<CountAccumulator>&> (stat));  		}  		F64 getPerSec(const TraceType<CountAccumulator>& stat);  		template <typename T> -		T getPerSec(const CountStatHandle<T>& stat) +		typename RelatedTypes<T>::fractional_t getPerSec(const CountStatHandle<T>& stat)  		{ -			return (T)getPerSec(static_cast<const TraceType<CountAccumulator>&> (stat)); +			return (typename RelatedTypes<T>::fractional_t)getPerSec(static_cast<const TraceType<CountAccumulator>&> (stat));  		}  		U32 getSampleCount(const TraceType<CountAccumulator>& stat); @@ -197,9 +218,9 @@ namespace LLTrace  		F64 getMean(const TraceType<SampleAccumulator>& stat);  		template <typename T> -		T getMean(SampleStatHandle<T>& stat) +		typename RelatedTypes<T>::fractional_t getMean(SampleStatHandle<T>& stat)  		{ -			return (T)getMean(static_cast<const TraceType<SampleAccumulator>&> (stat)); +			return (typename RelatedTypes<T>::fractional_t)getMean(static_cast<const TraceType<SampleAccumulator>&> (stat));  		}  		F64 getMax(const TraceType<SampleAccumulator>& stat); @@ -211,9 +232,9 @@ namespace LLTrace  		F64 getStandardDeviation(const TraceType<SampleAccumulator>& stat);  		template <typename T> -		T getStandardDeviation(const SampleStatHandle<T>& stat) +		typename RelatedTypes<T>::fractional_t getStandardDeviation(const SampleStatHandle<T>& stat)  		{ -			return (T)getStandardDeviation(static_cast<const TraceType<SampleAccumulator>&> (stat)); +			return (typename RelatedTypes<T>::fractional_t)getStandardDeviation(static_cast<const TraceType<SampleAccumulator>&> (stat));  		}  		F64 getLastValue(const TraceType<SampleAccumulator>& stat); @@ -228,9 +249,9 @@ namespace LLTrace  		// EventStatHandle accessors  		F64 getSum(const TraceType<EventAccumulator>& stat);  		template <typename T> -		T getSum(const EventStatHandle<T>& stat) +		typename RelatedTypes<T>::sum_t getSum(const EventStatHandle<T>& stat)  		{ -			return (T)getSum(static_cast<const TraceType<EventAccumulator>&> (stat)); +			return (typename RelatedTypes<T>::sum_t)getSum(static_cast<const TraceType<EventAccumulator>&> (stat));  		}  		F64 getMin(const TraceType<EventAccumulator>& stat); @@ -249,16 +270,16 @@ namespace LLTrace  		F64 getMean(const TraceType<EventAccumulator>& stat);  		template <typename T> -		T getMean(EventStatHandle<T>& stat) +		typename RelatedTypes<T>::fractional_t getMean(EventStatHandle<T>& stat)  		{ -			return (T)getMean(static_cast<const TraceType<EventAccumulator>&> (stat)); +			return (typename RelatedTypes<T>::fractional_t)getMean(static_cast<const TraceType<EventAccumulator>&> (stat));  		}  		F64 getStandardDeviation(const TraceType<EventAccumulator>& stat);  		template <typename T> -		T getStandardDeviation(const EventStatHandle<T>& stat) +		typename RelatedTypes<T>::fractional_t getStandardDeviation(const EventStatHandle<T>& stat)  		{ -			return (T)getStandardDeviation(static_cast<const TraceType<EventAccumulator>&> (stat)); +			return (typename RelatedTypes<T>::fractional_t)getStandardDeviation(static_cast<const TraceType<EventAccumulator>&> (stat));  		}  		F64 getLastValue(const TraceType<EventAccumulator>& stat); @@ -284,9 +305,11 @@ namespace LLTrace  		// returns data for current thread  		class ThreadRecorder* getThreadRecorder();  -		LLTimer				mSamplingTimer; -		LLUnit<F64, LLUnits::Seconds>			mElapsedSeconds; +		LLTimer											mSamplingTimer; +		LLUnit<F64, LLUnits::Seconds>					mElapsedSeconds;  		LLCopyOnWritePointer<AccumulatorBufferGroup>	mBuffers; +		bool											mInHandOff; +  	};  	class LL_COMMON_API PeriodicRecording @@ -310,11 +333,15 @@ namespace LLTrace  		const Recording& getPrevRecording(U32 offset) const;  		Recording snapshotCurRecording() const; +		// +		// PERIODIC MIN +		// +  		// catch all for stats that have a defined sum  		template <typename T>  		typename T::value_t getPeriodMin(const TraceType<T>& stat, size_t num_periods = U32_MAX)  		{ -			size_t total_periods = mRecordingPeriods.size(); +			size_t total_periods = mNumPeriods;  			num_periods = llmin(num_periods, isStarted() ? total_periods - 1 : total_periods);  			typename T::value_t min_val = std::numeric_limits<typename T::value_t>::max(); @@ -326,6 +353,12 @@ namespace LLTrace  			return min_val;  		} +		template<typename T> +		T getPeriodMin(const CountStatHandle<T>& stat, size_t num_periods = U32_MAX) +		{ +			return T(getPeriodMin(static_cast<const TraceType<CountAccumulator>&>(stat), num_periods)); +		} +  		F64 getPeriodMin(const TraceType<SampleAccumulator>& stat, size_t num_periods = U32_MAX);  		template<typename T>  		T getPeriodMin(const SampleStatHandle<T>& stat, size_t num_periods = U32_MAX) @@ -341,9 +374,9 @@ namespace LLTrace  		}  		template <typename T> -		F64 getPeriodMinPerSec(const TraceType<T>& stat, size_t num_periods = U32_MAX) +		typename RelatedTypes<typename T::value_t>::fractional_t getPeriodMinPerSec(const TraceType<T>& stat, size_t num_periods = U32_MAX)  		{ -			size_t total_periods = mRecordingPeriods.size(); +			size_t total_periods = mNumPeriods;  			num_periods = llmin(num_periods, isStarted() ? total_periods - 1 : total_periods);  			F64 min_val = std::numeric_limits<F64>::max(); @@ -352,14 +385,24 @@ namespace LLTrace  				S32 index = (mCurPeriod + total_periods - i) % total_periods;  				min_val = llmin(min_val, mRecordingPeriods[index].getPerSec(stat));  			} -			return min_val; +			return (typename RelatedTypes<typename T::value_t>::fractional_t) min_val; +		} + +		template<typename T> +		typename RelatedTypes<T>::fractional_t getPeriodMinPerSec(const CountStatHandle<T>& stat, size_t num_periods = U32_MAX) +		{ +			return typename RelatedTypes<T>::fractional_t(getPeriodMinPerSec(static_cast<const TraceType<CountAccumulator>&>(stat), num_periods));  		} +		// +		// PERIODIC MAX +		// +  		// catch all for stats that have a defined sum  		template <typename T>  		typename T::value_t getPeriodMax(const TraceType<T>& stat, size_t num_periods = U32_MAX)  		{ -			size_t total_periods = mRecordingPeriods.size(); +			size_t total_periods = mNumPeriods;  			num_periods = llmin(num_periods, isStarted() ? total_periods - 1 : total_periods);  			typename T::value_t max_val = std::numeric_limits<typename T::value_t>::min(); @@ -371,6 +414,12 @@ namespace LLTrace  			return max_val;  		} +		template<typename T> +		T getPeriodMax(const CountStatHandle<T>& stat, size_t num_periods = U32_MAX) +		{ +			return T(getPeriodMax(static_cast<const TraceType<CountAccumulator>&>(stat), num_periods)); +		} +  		F64 getPeriodMax(const TraceType<SampleAccumulator>& stat, size_t num_periods = U32_MAX);  		template<typename T>  		T getPeriodMax(const SampleStatHandle<T>& stat, size_t num_periods = U32_MAX) @@ -386,9 +435,9 @@ namespace LLTrace  		}  		template <typename T> -		F64 getPeriodMaxPerSec(const TraceType<T>& stat, size_t num_periods = U32_MAX) +		typename RelatedTypes<typename T::value_t>::fractional_t getPeriodMaxPerSec(const TraceType<T>& stat, size_t num_periods = U32_MAX)  		{ -			size_t total_periods = mRecordingPeriods.size(); +			size_t total_periods = mNumPeriods;  			num_periods = llmin(num_periods, isStarted() ? total_periods - 1 : total_periods);  			F64 max_val = std::numeric_limits<F64>::min(); @@ -397,14 +446,24 @@ namespace LLTrace  				S32 index = (mCurPeriod + total_periods - i) % total_periods;  				max_val = llmax(max_val, mRecordingPeriods[index].getPerSec(stat));  			} -			return max_val; +			return (typename RelatedTypes<typename T::value_t>::fractional_t)max_val; +		} + +		template<typename T> +		typename RelatedTypes<T>::fractional_t getPeriodMaxPerSec(const CountStatHandle<T>& stat, size_t num_periods = U32_MAX) +		{ +			return typename RelatedTypes<T>::fractional_t(getPeriodMaxPerSec(static_cast<const TraceType<CountAccumulator>&>(stat), num_periods));  		} +		// +		// PERIODIC MEAN +		// +  		// catch all for stats that have a defined sum  		template <typename T>  		typename T::mean_t getPeriodMean(const TraceType<T >& stat, size_t num_periods = U32_MAX)  		{ -			size_t total_periods = mRecordingPeriods.size(); +			size_t total_periods = mNumPeriods;  			num_periods = llmin(num_periods, isStarted() ? total_periods - 1 : total_periods);  			typename T::mean_t mean = 0; @@ -422,24 +481,29 @@ namespace LLTrace  			return mean;  		} +		template<typename T> +		typename RelatedTypes<T>::fractional_t getPeriodMean(const CountStatHandle<T>& stat, size_t num_periods = U32_MAX) +		{ +			return typename RelatedTypes<T>::fractional_t(getPeriodMean(static_cast<const TraceType<CountAccumulator>&>(stat), num_periods)); +		}  		F64 getPeriodMean(const TraceType<SampleAccumulator>& stat, size_t num_periods = U32_MAX);  		template<typename T>  -		T getPeriodMean(const SampleStatHandle<T>& stat, size_t num_periods = U32_MAX) +		typename RelatedTypes<T>::fractional_t getPeriodMean(const SampleStatHandle<T>& stat, size_t num_periods = U32_MAX)  		{ -			return T(getPeriodMean(static_cast<const TraceType<SampleAccumulator>&>(stat), num_periods)); +			return typename RelatedTypes<T>::fractional_t(getPeriodMean(static_cast<const TraceType<SampleAccumulator>&>(stat), num_periods));  		}  		F64 getPeriodMean(const TraceType<EventAccumulator>& stat, size_t num_periods = U32_MAX);  		template<typename T> -		T getPeriodMean(const EventStatHandle<T>& stat, size_t num_periods = U32_MAX) +		typename RelatedTypes<T>::fractional_t getPeriodMean(const EventStatHandle<T>& stat, size_t num_periods = U32_MAX)  		{ -			return T(getPeriodMean(static_cast<const TraceType<EventAccumulator>&>(stat), num_periods)); +			return typename RelatedTypes<T>::fractional_t(getPeriodMean(static_cast<const TraceType<EventAccumulator>&>(stat), num_periods));  		}  		template <typename T> -		typename T::mean_t getPeriodMeanPerSec(const TraceType<T>& stat, size_t num_periods = U32_MAX) +		typename RelatedTypes<typename T::mean_t>::fractional_t getPeriodMeanPerSec(const TraceType<T>& stat, size_t num_periods = U32_MAX)  		{ -			size_t total_periods = mRecordingPeriods.size(); +			size_t total_periods = mNumPeriods;  			num_periods = llmin(num_periods, isStarted() ? total_periods - 1 : total_periods);  			typename T::mean_t mean = 0; @@ -454,7 +518,13 @@ namespace LLTrace  				}  			}  			mean = mean / num_periods; -			return mean; +			return (typename RelatedTypes<typename T::mean_t>::fractional_t)mean; +		} + +		template<typename T> +		typename RelatedTypes<T>::fractional_t getPeriodMeanPerSec(const CountStatHandle<T>& stat, size_t num_periods = U32_MAX) +		{ +			return typename RelatedTypes<T>::fractional_t(getPeriodMeanPerSec(static_cast<const TraceType<CountAccumulator>&>(stat), num_periods));  		}  	private: @@ -504,11 +574,10 @@ namespace LLTrace  		ExtendablePeriodicRecording();  		void extend(); -		PeriodicRecording& getAcceptedRecording()				{ return mAcceptedRecording; } -		const PeriodicRecording& getAcceptedRecording() const	{return mAcceptedRecording;} +		PeriodicRecording& getResults()				{ return mAcceptedRecording; } +		const PeriodicRecording& getResults() const	{return mAcceptedRecording;} -		PeriodicRecording& getPotentialRecording()				{ return mPotentialRecording; } -		const PeriodicRecording& getPotentialRecording() const	{return mPotentialRecording;} +		void nextPeriod() { mPotentialRecording.nextPeriod(); }  	private:  		// implementation for LLStopWatchControlsMixin diff --git a/indra/llcommon/lltracethreadrecorder.cpp b/indra/llcommon/lltracethreadrecorder.cpp index 7ac0e75154..e20d8b63de 100644 --- a/indra/llcommon/lltracethreadrecorder.cpp +++ b/indra/llcommon/lltracethreadrecorder.cpp @@ -120,13 +120,17 @@ TimeBlockTreeNode* ThreadRecorder::getTimeBlockTreeNode( S32 index )  } -void ThreadRecorder::activate( AccumulatorBufferGroup* recording ) +void ThreadRecorder::activate( AccumulatorBufferGroup* recording, bool from_handoff )  {  	ActiveRecording* active_recording = new ActiveRecording(recording);  	if (!mActiveRecordings.empty())  	{  		AccumulatorBufferGroup& prev_active_recording = mActiveRecordings.back()->mPartialRecording;  		prev_active_recording.sync(); +		if (!from_handoff) +		{ +			TimeBlock::updateTimes(); +		}  		prev_active_recording.handOffTo(active_recording->mPartialRecording);  	}  	mActiveRecordings.push_back(active_recording); @@ -240,6 +244,7 @@ void ThreadRecorder::pushToParent()  	{ LLMutexLock lock(&mSharedRecordingMutex);	  		LLTrace::get_thread_recorder()->bringUpToDate(&mThreadRecordingBuffers);  		mSharedRecordingBuffers.append(mThreadRecordingBuffers); +		mThreadRecordingBuffers.reset();  	}  } diff --git a/indra/llcommon/lltracethreadrecorder.h b/indra/llcommon/lltracethreadrecorder.h index 535f855200..c40228785e 100644 --- a/indra/llcommon/lltracethreadrecorder.h +++ b/indra/llcommon/lltracethreadrecorder.h @@ -47,7 +47,7 @@ namespace LLTrace  		~ThreadRecorder(); -		void activate(AccumulatorBufferGroup* recording); +		void activate(AccumulatorBufferGroup* recording, bool from_handoff = false);  		void deactivate(AccumulatorBufferGroup* recording);  		active_recording_list_t::reverse_iterator bringUpToDate(AccumulatorBufferGroup* recording); diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 5f6b183fcc..47492aaa31 100755 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -1294,6 +1294,7 @@ bool LLAppViewer::mainLoop()  	{  		LLFastTimer _(FTM_FRAME);  		LLTrace::TimeBlock::processTimes(); +		llassert(LLStatViewer::FPS.getPrimaryAccumulator()->getSampleCount() <= 1);  		LLTrace::get_frame_recording().nextPeriod();  		LLTrace::TimeBlock::logStats(); diff --git a/indra/newview/llscenemonitor.cpp b/indra/newview/llscenemonitor.cpp index 342b45863a..eec4a703a1 100644 --- a/indra/newview/llscenemonitor.cpp +++ b/indra/newview/llscenemonitor.cpp @@ -256,7 +256,7 @@ void LLSceneMonitor::unfreezeScene()  void LLSceneMonitor::capture()  { -	static U32 last_capture_time = 0; +	static U32 last_capture_frame = 0;  	static LLCachedControl<bool> monitor_enabled(gSavedSettings, "SceneLoadingMonitorEnabled");  	static LLCachedControl<F32>  scene_load_sample_time(gSavedSettings, "SceneLoadingMonitorSampleTime");  	static LLFrameTimer timer;	 @@ -268,11 +268,11 @@ void LLSceneMonitor::capture()  		if(mEnabled)  		{  			unfreezeScene(); +			reset();  			force_capture = true;  		}  		else  		{ -			reset();  			freezeScene();  		} @@ -280,8 +280,8 @@ void LLSceneMonitor::capture()  	}  	if (mEnabled  -		&&	(mMonitorRecording.getSum(*LLViewerCamera::getVelocityStat()) > 0.1f -		|| mMonitorRecording.getSum(*LLViewerCamera::getAngularVelocityStat()) > 0.05f)) +		&& (mMonitorRecording.getSum(*LLViewerCamera::getVelocityStat()) > 0.1f +			|| mMonitorRecording.getSum(*LLViewerCamera::getAngularVelocityStat()) > 0.05f))  	{  		reset();  		freezeScene(); @@ -290,9 +290,10 @@ void LLSceneMonitor::capture()  	if((timer.getElapsedTimeF32() > scene_load_sample_time()   			|| force_capture) +		&& mDiffState == WAITING_FOR_NEXT_DIFF  		&& mEnabled  		&& LLGLSLShader::sNoFixedFunction -		&& last_capture_time != gFrameCount) +		&& last_capture_frame != gFrameCount)  	{  		force_capture = false; @@ -301,7 +302,7 @@ void LLSceneMonitor::capture()  		timer.reset(); -		last_capture_time = gFrameCount; +		last_capture_frame = gFrameCount;  		LLRenderTarget& cur_target = getCaptureTarget(); @@ -465,7 +466,11 @@ void LLSceneMonitor::fetchQueryResult()  {  	LLFastTimer _(FTM_SCENE_LOAD_IMAGE_DIFF); -	if(mDiffState == WAIT_ON_RESULT) +	// also throttle timing here, to avoid going below sample time due to phasing with frame capture +	static LLCachedControl<F32>  scene_load_sample_time(gSavedSettings, "SceneLoadingMonitorSampleTime"); +	static LLFrameTimer timer;	 + +	if(mDiffState == WAIT_ON_RESULT && timer.getElapsedTimeF32() > scene_load_sample_time)  	{  		mDiffState = WAITING_FOR_NEXT_DIFF; @@ -479,7 +484,7 @@ void LLSceneMonitor::fetchQueryResult()  			mDiffResult = count * 0.5f / (mDiff->getWidth() * mDiff->getHeight() * mDiffPixelRatio * mDiffPixelRatio); //0.5 -> (front face + back face)  			LL_DEBUGS("SceneMonitor") << "Frame difference: " << std::setprecision(4) << mDiffResult << LL_ENDL; -			record(sFramePixelDiff, mDiffResult); +			record(sFramePixelDiff, sqrtf(mDiffResult));  			static LLCachedControl<F32> diff_threshold(gSavedSettings,"SceneLoadingPixelDiffThreshold");  			if(mDiffResult > diff_threshold()) @@ -488,7 +493,7 @@ void LLSceneMonitor::fetchQueryResult()  			}  			else  			{ -				mSceneLoadRecording.getPotentialRecording().nextPeriod(); +				mSceneLoadRecording.nextPeriod();  			}  		}  	} @@ -506,7 +511,7 @@ void LLSceneMonitor::dumpToFile(std::string file_name)  	os << std::setprecision(10); -	PeriodicRecording& scene_load_recording = mSceneLoadRecording.getAcceptedRecording(); +	PeriodicRecording& scene_load_recording = mSceneLoadRecording.getResults();  	const U32 frame_count = scene_load_recording.getNumRecordedPeriods();  	LLUnit<F64, LLUnits::Seconds> frame_time; @@ -519,6 +524,15 @@ void LLSceneMonitor::dumpToFile(std::string file_name)  	}  	os << '\n'; +	os << "Sample period(s)"; +	for (S32 frame = 1; frame <= frame_count; frame++) +	{ +		frame_time = scene_load_recording.getPrevRecording(frame_count - frame).getDuration(); +		os << ", " << frame_time.value(); +	} +	os << '\n'; + +  	typedef TraceType<CountAccumulator> trace_count;  	for (trace_count::instance_iter it = trace_count::beginInstances(), end_it = trace_count::endInstances();  		it != end_it; @@ -697,7 +711,7 @@ void LLSceneMonitorView::draw()  	LLFontGL::getFontMonospace()->renderUTF8(num_str, 0, 5, getRect().getHeight() - line_height * lines, color, LLFontGL::LEFT, LLFontGL::TOP);  	lines++; -	num_str = llformat("Scene Loading time: %.3f seconds", (F32)LLSceneMonitor::getInstance()->getRecording()->getAcceptedRecording().getDuration().value()); +	num_str = llformat("Scene Loading time: %.3f seconds", (F32)LLSceneMonitor::getInstance()->getRecording()->getResults().getDuration().value());  	LLFontGL::getFontMonospace()->renderUTF8(num_str, 0, 5, getRect().getHeight() - line_height * lines, color, LLFontGL::LEFT, LLFontGL::TOP);  	lines++; diff --git a/indra/newview/llscenemonitor.h b/indra/newview/llscenemonitor.h index 9717310da4..7088d529d6 100644 --- a/indra/newview/llscenemonitor.h +++ b/indra/newview/llscenemonitor.h @@ -62,7 +62,7 @@ public:  	const LLTrace::ExtendablePeriodicRecording* getRecording() const {return &mSceneLoadRecording;}  	void dumpToFile(std::string file_name); -	bool hasResults() const { return mSceneLoadRecording.getAcceptedRecording().getDuration() != 0;} +	bool hasResults() const { return mSceneLoadRecording.getResults().getDuration() != 0;}  private:  	void freezeScene(); diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp index f3406d9f8d..b385d5cdfa 100755 --- a/indra/newview/llstatusbar.cpp +++ b/indra/newview/llstatusbar.cpp @@ -198,7 +198,7 @@ BOOL LLStatusBar::postBuild()  	sgp.rect(r);  	sgp.follows.flags(FOLLOWS_BOTTOM | FOLLOWS_RIGHT);  	sgp.mouse_opaque(false); -	sgp.stat.count_stat_float(&LLStatViewer::KBIT); +	sgp.stat.count_stat_float(&LLStatViewer::ACTIVE_MESSAGE_DATA_RECEIVED);  	sgp.units("Kbps");  	sgp.precision(0);  	mSGBandwidth = LLUICtrlFactory::create<LLStatGraph>(sgp); diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index 6716391f41..d85247c4ec 100755 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -1483,7 +1483,7 @@ bool LLTextureFetchWorker::doWork(S32 param)  			mGetReason.clear();  			LL_DEBUGS("Texture") << "HTTP GET: " << mID << " Offset: " << mRequestedOffset  								 << " Bytes: " << mRequestedSize -								 << " Bandwidth(kbps): " << mFetcher->getTextureBandwidth() << "/" << mFetcher->mMaxBandwidth +								 << " Bandwidth(kbps): " << mFetcher->getTextureBandwidth().value() << "/" << mFetcher->mMaxBandwidth  								 << LL_ENDL;  			// Will call callbackHttpGet when curl request completes @@ -2891,7 +2891,7 @@ S32 LLTextureFetch::update(F32 max_time_ms)  		mNetworkQueueMutex.lock();										// +Mfnq  		mMaxBandwidth = band_width; -		add(LLStatViewer::TEXTURE_KBIT, mHTTPTextureBits); +		add(LLStatViewer::TEXTURE_NETWORK_DATA_RECEIVED, mHTTPTextureBits);  		mHTTPTextureBits = 0;  		mNetworkQueueMutex.unlock();									// -Mfnq diff --git a/indra/newview/lltexturefetch.h b/indra/newview/lltexturefetch.h index 109f2bd401..38272b40dc 100755 --- a/indra/newview/lltexturefetch.h +++ b/indra/newview/lltexturefetch.h @@ -107,10 +107,10 @@ public:  	bool receiveImagePacket(const LLHost& host, const LLUUID& id, U16 packet_num, U16 data_size, U8* data);      // Threads:  T* (but not safe) -	void setTextureBandwidth(F32 bandwidth) { mTextureBandwidth = bandwidth; } +	void setTextureBandwidth(LLUnit<F32, LLUnits::Kibibits> bandwidth) { mTextureBandwidth = bandwidth; }      // Threads:  T* (but not safe) -	F32 getTextureBandwidth() { return mTextureBandwidth; } +	LLUnit<F32, LLUnits::Kibibits> getTextureBandwidth() { return mTextureBandwidth; }      // Threads:  T*  	BOOL isFromLocalCache(const LLUUID& id); @@ -325,8 +325,8 @@ private:  	queue_t mHTTPTextureQueue;											// Mfnq  	typedef std::map<LLHost,std::set<LLUUID> > cancel_queue_t;  	cancel_queue_t mCancelQueue;										// Mfnq -	F32 mTextureBandwidth;												// <none> -	F32 mMaxBandwidth;													// Mfnq +	LLUnit<F32, LLUnits::Kibibits> mTextureBandwidth;					// <none> +	LLUnit<F32, LLUnits::Kibibits> mMaxBandwidth;						// Mfnq  	LLTextureInfo mTextureInfo;  	// XXX possible delete diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp index 72ed3d4485..20e8a522cd 100755 --- a/indra/newview/lltextureview.cpp +++ b/indra/newview/lltextureview.cpp @@ -586,8 +586,8 @@ void LLGLTexMemBar::draw()  	left = 550; -	F32 bandwidth = LLAppViewer::getTextureFetch()->getTextureBandwidth(); -	F32 max_bandwidth = gSavedSettings.getF32("ThrottleBandwidthKBPS"); +	LLUnit<F32, LLUnits::Kibibits> bandwidth = LLAppViewer::getTextureFetch()->getTextureBandwidth(); +	LLUnit<F32, LLUnits::Kibibits> max_bandwidth = gSavedSettings.getF32("ThrottleBandwidthKBPS");  	color = bandwidth > max_bandwidth ? LLColor4::red : bandwidth > max_bandwidth*.75f ? LLColor4::yellow : text_color;  	color[VALPHA] = text_color[VALPHA];  	text = llformat("BW:%.0f/%.0f",bandwidth, max_bandwidth); diff --git a/indra/newview/llviewerassetstats.cpp b/indra/newview/llviewerassetstats.cpp index 80412c215f..5f11a2b519 100755 --- a/indra/newview/llviewerassetstats.cpp +++ b/indra/newview/llviewerassetstats.cpp @@ -153,29 +153,29 @@ namespace LLViewerAssetStatsFF  		};  		if (at < 0 || at >= LLViewerAssetType::AT_COUNT) -{ +		{  			return EVACOtherGet; -} +		}  		EViewerAssetCategories ret(asset_to_bin_map[at]);  		if (EVACTextureTempHTTPGet == ret)  		{  			// Indexed with [is_temp][with_http]  			static const EViewerAssetCategories texture_bin_map[2][2] = -{ -	{ +			{ +				{  					EVACTextureNonTempUDPGet, -						EVACTextureNonTempHTTPGet, +					EVACTextureNonTempHTTPGet,  				},  				{  					EVACTextureTempUDPGet, -						EVACTextureTempHTTPGet, -	} +					EVACTextureTempHTTPGet, +				}  			};  			ret = texture_bin_map[is_temp][with_http];  		}  		return ret; -} +	}  	static LLTrace::CountStatHandle<> sEnqueueAssetRequestsTempTextureHTTP   ("enqueuedassetrequeststemptexturehttp",   																	"Number of temporary texture asset http requests enqueued"), @@ -384,50 +384,50 @@ void LLViewerAssetStats::getStats(AssetStats& stats, bool compact_output)  									.resp_min(rec.getMin(*sResponse[EVACTextureTempHTTPGet]).value())  									.resp_max(rec.getMax(*sResponse[EVACTextureTempHTTPGet]).value())  									.resp_mean(rec.getMean(*sResponse[EVACTextureTempHTTPGet]).value()); -} +		}  		if (!compact_output  			|| rec.getSum(*sEnqueued[EVACTextureTempUDPGet])   			|| rec.getSum(*sDequeued[EVACTextureTempUDPGet])  			|| rec.getSum(*sResponse[EVACTextureTempUDPGet]).value()) -{ +		{  			r.get_texture_temp_udp	.enqueued((S32)rec.getSum(*sEnqueued[EVACTextureTempUDPGet]))  									.dequeued((S32)rec.getSum(*sDequeued[EVACTextureTempUDPGet]))  									.resp_count((S32)rec.getSum(*sResponse[EVACTextureTempUDPGet]).value())  									.resp_min(rec.getMin(*sResponse[EVACTextureTempUDPGet]).value())  									.resp_max(rec.getMax(*sResponse[EVACTextureTempUDPGet]).value())  									.resp_mean(rec.getMean(*sResponse[EVACTextureTempUDPGet]).value()); -} +		}  		if (!compact_output  			|| rec.getSum(*sEnqueued[EVACTextureNonTempHTTPGet])   			|| rec.getSum(*sDequeued[EVACTextureNonTempHTTPGet])  			|| rec.getSum(*sResponse[EVACTextureNonTempHTTPGet]).value()) -{ +		{  			r.get_texture_non_temp_http	.enqueued((S32)rec.getSum(*sEnqueued[EVACTextureNonTempHTTPGet]))  										.dequeued((S32)rec.getSum(*sDequeued[EVACTextureNonTempHTTPGet]))  										.resp_count((S32)rec.getSum(*sResponse[EVACTextureNonTempHTTPGet]).value())  										.resp_min(rec.getMin(*sResponse[EVACTextureNonTempHTTPGet]).value())  										.resp_max(rec.getMax(*sResponse[EVACTextureNonTempHTTPGet]).value())  										.resp_mean(rec.getMean(*sResponse[EVACTextureNonTempHTTPGet]).value()); -} +		}  		if (!compact_output  			|| rec.getSum(*sEnqueued[EVACTextureNonTempUDPGet])   			|| rec.getSum(*sDequeued[EVACTextureNonTempUDPGet])  			|| rec.getSum(*sResponse[EVACTextureNonTempUDPGet]).value()) -{ +		{  			r.get_texture_non_temp_udp	.enqueued((S32)rec.getSum(*sEnqueued[EVACTextureNonTempUDPGet]))  										.dequeued((S32)rec.getSum(*sDequeued[EVACTextureNonTempUDPGet]))  										.resp_count((S32)rec.getSum(*sResponse[EVACTextureNonTempUDPGet]).value())  										.resp_min(rec.getMin(*sResponse[EVACTextureNonTempUDPGet]).value())  										.resp_max(rec.getMax(*sResponse[EVACTextureNonTempUDPGet]).value())  										.resp_mean(rec.getMean(*sResponse[EVACTextureNonTempUDPGet]).value()); -} +		}  		if (!compact_output  			|| rec.getSum(*sEnqueued[EVACWearableUDPGet])   			|| rec.getSum(*sDequeued[EVACWearableUDPGet])  			|| rec.getSum(*sResponse[EVACWearableUDPGet]).value()) -{ +		{  			r.get_wearable_udp	.enqueued((S32)rec.getSum(*sEnqueued[EVACWearableUDPGet]))  								.dequeued((S32)rec.getSum(*sDequeued[EVACWearableUDPGet]))  								.resp_count((S32)rec.getSum(*sResponse[EVACWearableUDPGet]).value()) @@ -478,16 +478,16 @@ void LLViewerAssetStats::getStats(AssetStats& stats, bool compact_output)  		S32 fps = (S32)rec.getLastValue(LLStatViewer::FPS_SAMPLE);  		if (!compact_output || fps != 0)  		{ -			r.fps.count(fps); -			r.fps.min(rec.getMin(LLStatViewer::FPS_SAMPLE)); -			r.fps.max(rec.getMax(LLStatViewer::FPS_SAMPLE)); -			r.fps.mean(rec.getMean(LLStatViewer::FPS_SAMPLE)); +			r.fps	.count(fps) +					.min(rec.getMin(LLStatViewer::FPS_SAMPLE)) +					.max(rec.getMax(LLStatViewer::FPS_SAMPLE)) +					.mean(rec.getMean(LLStatViewer::FPS_SAMPLE));  		}  		U32 grid_x(0), grid_y(0);  		grid_from_region_handle(it->first, &grid_x, &grid_y); -		r.grid_x(grid_x); -		r.grid_y(grid_y); -		r.duration(LLUnit<F64, LLUnits::Microseconds>(rec.getDuration()).value()); +		r	.grid_x(grid_x) +			.grid_y(grid_y) +			.duration(LLUnit<F64, LLUnits::Microseconds>(rec.getDuration()).value());  	}  	stats.duration(mCurRecording ? LLUnit<F64, LLUnits::Microseconds>(mCurRecording->getDuration()).value() : 0.0); @@ -526,6 +526,7 @@ void record_enqueue(LLViewerAssetType::EType at, bool with_http, bool is_temp)  {  	const EViewerAssetCategories eac(asset_type_to_category(at, with_http, is_temp)); +	llinfos << "enqueue " << int(eac) << llendl;  	add(*sEnqueued[int(eac)], 1);  } diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp index d753619daa..69a6c00a8f 100755 --- a/indra/newview/llviewerstats.cpp +++ b/indra/newview/llviewerstats.cpp @@ -89,19 +89,22 @@ LLTrace::CountStatHandle<>	FPS("FPS", "Frames rendered"),  							TEX_REBAKES("texrebakes", "Number of times avatar textures have been forced to rebake"),  							NUM_NEW_OBJECTS("numnewobjectsstat", "Number of objects in scene that were not previously in cache"); -LLTrace::CountStatHandle<LLUnit<F64, LLUnits::Kilotriangles> > TRIANGLES_DRAWN("trianglesdrawnstat"); - -LLTrace::CountStatHandle<LLUnit<F64, LLUnits::Kibibits> >	KBIT("Bandwidth", "Network data received"), -															LAYERS_KBIT("layerskbitstat", "Network data received for layer data (terrain)"), -															OBJECT_KBIT("objectkbitstat", "Network data received for objects"), -															ASSET_KBIT("assetkbitstat", "Network data received for assets (animations, sounds)"), -															TEXTURE_KBIT("texturekbitstat", "Network data received for textures"), -															ACTUAL_IN_KBIT("actualinkbitstat", "Incoming network data"), -															ACTUAL_OUT_KBIT("actualoutkbitstat", "Outgoing network data"); - -LLTrace::CountStatHandle<LLUnit<F64, LLUnits::Seconds> >	SIM_20_FPS_TIME("sim20fpstime", "Seconds with sim FPS below 20"), -															SIM_PHYSICS_20_FPS_TIME("simphysics20fpstime", "Seconds with physics FPS below 20"), -															LOSS_5_PERCENT_TIME("loss5percenttime", "Seconds with packet loss > 5%"); +LLTrace::CountStatHandle<LLUnit<F64, LLUnits::Kilotriangles> >  +							TRIANGLES_DRAWN("trianglesdrawnstat"); + +LLTrace::CountStatHandle<LLUnit<F64, LLUnits::Kibibytes> >	 +							ACTIVE_MESSAGE_DATA_RECEIVED("activemessagedatareceived", "Message system data received on all active regions"), +							LAYERS_NETWORK_DATA_RECEIVED("layersdatareceived", "Network data received for layer data (terrain)"), +							OBJECT_NETWORK_DATA_RECEIVED("objectdatareceived", "Network data received for objects"), +							ASSET_UDP_DATA_RECEIVED("assetudpdatareceived", "Network data received for assets (animations, sounds) over UDP message system"), +							TEXTURE_NETWORK_DATA_RECEIVED("texturedatareceived", "Network data received for textures"), +							MESSAGE_SYSTEM_DATA_IN("messagedatain", "Incoming message system network data"), +							MESSAGE_SYSTEM_DATA_OUT("messagedataout", "Outgoing message system network data"); + +LLTrace::CountStatHandle<LLUnit<F64, LLUnits::Seconds> >	 +							SIM_20_FPS_TIME("sim20fpstime", "Seconds with sim FPS below 20"), +							SIM_PHYSICS_20_FPS_TIME("simphysics20fpstime", "Seconds with physics FPS below 20"), +							LOSS_5_PERCENT_TIME("loss5percenttime", "Seconds with packet loss > 5%");  SimMeasurement<>			SIM_TIME_DILATION("simtimedilation", "Simulator time scale", LL_SIM_STAT_TIME_DILATION),  							SIM_FPS("simfps", "Simulator framerate", LL_SIM_STAT_FPS), @@ -122,8 +125,9 @@ SimMeasurement<>			SIM_TIME_DILATION("simtimedilation", "Simulator time scale",  							SIM_PHYSICS_PINNED_TASKS("physicspinnedtasks", "", LL_SIM_STAT_PHYSICS_PINNED_TASKS),  							SIM_PHYSICS_LOD_TASKS("physicslodtasks", "", LL_SIM_STAT_PHYSICS_LOD_TASKS); -SimMeasurement<LLUnit<F64, LLUnits::Percent> >	SIM_PERCENTAGE_SCRIPTS_RUN("simpctscriptsrun", "", LL_SIM_STAT_PCTSCRIPTSRUN), -												SIM_SKIPPED_CHARACTERS_PERCENTAGE("simsimpctsteppedcharacters", "", LL_SIM_STAT_PCTSTEPPEDCHARACTERS); +SimMeasurement<LLUnit<F64, LLUnits::Percent> >	 +							SIM_PERCENTAGE_SCRIPTS_RUN("simpctscriptsrun", "", LL_SIM_STAT_PCTSCRIPTSRUN), +							SIM_SKIPPED_CHARACTERS_PERCENTAGE("simsimpctsteppedcharacters", "", LL_SIM_STAT_PCTSTEPPEDCHARACTERS);  LLTrace::SampleStatHandle<>	FPS_SAMPLE("fpssample"),  							NUM_IMAGES("numimagesstat"), @@ -139,9 +143,11 @@ LLTrace::SampleStatHandle<>	FPS_SAMPLE("fpssample"),  							WINDOW_WIDTH("windowwidth", "Window width"),  							WINDOW_HEIGHT("windowheight", "Window height"); -LLTrace::SampleStatHandle<LLUnit<F32, LLUnits::Percent> > PACKETS_LOST_PERCENT("packetslostpercentstat"); +LLTrace::SampleStatHandle<LLUnit<F32, LLUnits::Percent> >  +							PACKETS_LOST_PERCENT("packetslostpercentstat"); -static LLTrace::SampleStatHandle<S64> CHAT_BUBBLES("chatbubbles", "Chat Bubbles Enabled"); +static LLTrace::SampleStatHandle<bool>  +							CHAT_BUBBLES("chatbubbles", "Chat Bubbles Enabled");  LLTrace::SampleStatHandle<LLUnit<F64, LLUnits::Megabytes> >	GL_TEX_MEM("gltexmemstat"),  															GL_BOUND_MEM("glboundmemstat"), @@ -197,12 +203,10 @@ LLViewerStats::LLViewerStats()  :	mLastTimeDiff(0.0)  {  	mRecording.start(); -	LLTrace::get_frame_recording().start();  }  LLViewerStats::~LLViewerStats() -{ -} +{}  void LLViewerStats::resetStats()  { @@ -363,10 +367,10 @@ void update_statistics()  	add(LLStatViewer::FPS, 1);  	F32 layer_bits = (F32)(gVLManager.getLandBits() + gVLManager.getWindBits() + gVLManager.getCloudBits()); -	add(LLStatViewer::LAYERS_KBIT, LLUnit<F64, LLUnits::Bits>(layer_bits)); -	add(LLStatViewer::OBJECT_KBIT, gObjectData); +	add(LLStatViewer::LAYERS_NETWORK_DATA_RECEIVED, LLUnit<F64, LLUnits::Bits>(layer_bits)); +	add(LLStatViewer::OBJECT_NETWORK_DATA_RECEIVED, gObjectData);  	sample(LLStatViewer::PENDING_VFS_OPERATIONS, LLVFile::getVFSThread()->getPending()); -	add(LLStatViewer::ASSET_KBIT, LLUnit<F64, LLUnits::Bits>(gTransferManager.getTransferBitsIn(LLTCT_ASSET))); +	add(LLStatViewer::ASSET_UDP_DATA_RECEIVED, LLUnit<F64, LLUnits::Bits>(gTransferManager.getTransferBitsIn(LLTCT_ASSET)));  	gTransferManager.resetTransferBitsIn(LLTCT_ASSET);  	if (LLAppViewer::getTextureFetch()->getNumRequests() == 0) @@ -393,7 +397,7 @@ void update_statistics()  		static LLFrameTimer texture_stats_timer;  		if (texture_stats_timer.getElapsedTimeF32() >= texture_stats_freq)  		{ -			gTotalTextureData = LLViewerStats::instance().getRecording().getSum(LLStatViewer::TEXTURE_KBIT); +			gTotalTextureData = LLViewerStats::instance().getRecording().getSum(LLStatViewer::TEXTURE_NETWORK_DATA_RECEIVED);  			texture_stats_timer.reset();  		}  	} diff --git a/indra/newview/llviewerstats.h b/indra/newview/llviewerstats.h index 59d4df124b..3b7079ae4b 100755 --- a/indra/newview/llviewerstats.h +++ b/indra/newview/llviewerstats.h @@ -94,13 +94,13 @@ extern LLTrace::CountStatHandle<>			FPS,  extern LLTrace::CountStatHandle<LLUnit<F64, LLUnits::Kilotriangles> > TRIANGLES_DRAWN; -extern LLTrace::CountStatHandle<LLUnit<F64, LLUnits::Kibibits> >	KBIT, -																	LAYERS_KBIT, -																	OBJECT_KBIT, -																	ASSET_KBIT, -																	TEXTURE_KBIT, -																	ACTUAL_IN_KBIT, -																	ACTUAL_OUT_KBIT; +extern LLTrace::CountStatHandle<LLUnit<F64, LLUnits::Kibibytes> >	ACTIVE_MESSAGE_DATA_RECEIVED, +																	LAYERS_NETWORK_DATA_RECEIVED, +																	OBJECT_NETWORK_DATA_RECEIVED, +																	ASSET_UDP_DATA_RECEIVED, +																	TEXTURE_NETWORK_DATA_RECEIVED, +																	MESSAGE_SYSTEM_DATA_IN, +																	MESSAGE_SYSTEM_DATA_OUT;  extern LLTrace::CountStatHandle<LLUnit<F64, LLUnits::Seconds> >		SIM_20_FPS_TIME,  																	SIM_PHYSICS_20_FPS_TIME, diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index 431a3b330c..dfd7ac983d 100755 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp @@ -663,7 +663,7 @@ void LLViewerTextureList::updateImages(F32 max_time)  	}  	cleared = FALSE; -	LLAppViewer::getTextureFetch()->setTextureBandwidth(LLTrace::get_frame_recording().getPeriodMeanPerSec(LLStatViewer::TEXTURE_KBIT)); +	LLAppViewer::getTextureFetch()->setTextureBandwidth(LLTrace::get_frame_recording().getPeriodMeanPerSec(LLStatViewer::TEXTURE_NETWORK_DATA_RECEIVED));  	{  		using namespace LLStatViewer; @@ -1374,7 +1374,7 @@ void LLViewerTextureList::receiveImageHeader(LLMessageSystem *msg, void **user_d  	{  		received_size = msg->getReceiveSize() ;		  	} -	add(LLStatViewer::TEXTURE_KBIT, LLUnit<F64, LLUnits::Bytes>(received_size)); +	add(LLStatViewer::TEXTURE_NETWORK_DATA_RECEIVED, LLUnit<F64, LLUnits::Bytes>(received_size));  	add(LLStatViewer::TEXTURE_PACKETS, 1);  	U8 codec; @@ -1448,7 +1448,7 @@ void LLViewerTextureList::receiveImagePacket(LLMessageSystem *msg, void **user_d  		received_size = msg->getReceiveSize() ;		  	} -	add(LLStatViewer::TEXTURE_KBIT, LLUnit<F64, LLUnits::Bytes>(received_size)); +	add(LLStatViewer::TEXTURE_NETWORK_DATA_RECEIVED, LLUnit<F64, LLUnits::Bytes>(received_size));  	add(LLStatViewer::TEXTURE_PACKETS, 1);  	//llprintline("Start decode, image header..."); diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 85e4e6bc08..10e354f2e3 100755 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -215,6 +215,7 @@  // Globals  //  void render_ui(F32 zoom_factor = 1.f, int subfield = 0); +void swap();  extern BOOL gDebugClicks;  extern BOOL gDisplaySwapBuffers; @@ -4405,6 +4406,7 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei  					// Required for showing the GUI in snapshots and performing bloom composite overlay  					// Call even if show_ui is FALSE  					render_ui(scale_factor, subfield); +					swap();  				}  				for (U32 out_y = 0; out_y < read_height ; out_y++) diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp index d45a62b223..3dfe4c5e5f 100755 --- a/indra/newview/llworld.cpp +++ b/indra/newview/llworld.cpp @@ -732,9 +732,9 @@ void LLWorld::updateNetStats()  	LLUnit<F64, LLUnits::Bits> actual_in_bits = gMessageSystem->mPacketRing.getAndResetActualInBits();  	LLUnit<F64, LLUnits::Bits> actual_out_bits = gMessageSystem->mPacketRing.getAndResetActualOutBits(); -	add(LLStatViewer::ACTUAL_IN_KBIT, actual_in_bits); -	add(LLStatViewer::ACTUAL_OUT_KBIT, actual_out_bits); -	add(LLStatViewer::KBIT, bits); +	add(LLStatViewer::MESSAGE_SYSTEM_DATA_IN, actual_in_bits); +	add(LLStatViewer::MESSAGE_SYSTEM_DATA_OUT, actual_out_bits); +	add(LLStatViewer::ACTIVE_MESSAGE_DATA_RECEIVED, bits);  	add(LLStatViewer::PACKETS_IN, packets_in);  	add(LLStatViewer::PACKETS_OUT, packets_out);  	add(LLStatViewer::PACKETS_LOST, packets_lost); @@ -743,8 +743,8 @@ void LLWorld::updateNetStats()  		sample(LLStatViewer::PACKETS_LOST_PERCENT, LLUnits::Ratio::fromValue((F32)packets_lost/(F32)packets_in));  	} -	mLastPacketsIn = gMessageSystem->mPacketsIn; -	mLastPacketsOut = gMessageSystem->mPacketsOut; +	mLastPacketsIn   = gMessageSystem->mPacketsIn; +	mLastPacketsOut  = gMessageSystem->mPacketsOut;  	mLastPacketsLost = gMessageSystem->mDroppedPackets;  } diff --git a/indra/newview/skins/default/xui/en/floater_scene_load_stats.xml b/indra/newview/skins/default/xui/en/floater_scene_load_stats.xml index 246e8bb256..71ff961c59 100644 --- a/indra/newview/skins/default/xui/en/floater_scene_load_stats.xml +++ b/indra/newview/skins/default/xui/en/floater_scene_load_stats.xml @@ -45,10 +45,10 @@                    unit_scale="100"                    precision="0"/>          <stat_bar name="bandwidth" -                  label="Bandwidth" +                  label="UDP Data Received"                    orientation="horizontal"                    unit_label="kbps" -                  stat="kbitstat" +                  stat="activemessagedatareceived"                    bar_max="5000"                    tick_spacing="500"                    precision="0"/> @@ -159,55 +159,55 @@                      tick_spacing="128.f"                      precision="1"                      show_bar="false"/> -			    <stat_bar name="objectkbitstat" +			    <stat_bar name="objectdatareceived"                      label="Objects"                      orientation="horizontal" -                    stat="objectkbitstat" +                    stat="objectdatareceived"                      unit_label="kbps"                      bar_max="1024.f"                      tick_spacing="128.f"                      precision="1"                      show_bar="false"/> -			    <stat_bar name="texturekbitstat" +			    <stat_bar name="texturedatareceived"                      label="Texture"                      orientation="horizontal" -                    stat="texturekbitstat" +                    stat="texturedatareceived"                      unit_label="kbps"                      bar_max="1024.f"                      tick_spacing="128.f"                      precision="1"                      show_bar="false"/> -			    <stat_bar name="assetkbitstat" +			    <stat_bar name="assetudpdatareceived"                      label="Asset"                      orientation="horizontal" -                    stat="assetkbitstat" +                    stat="assetudpdatareceived"                      unit_label="kbps"                      bar_max="1024.f"                      tick_spacing="128.f"                      precision="1"                      show_bar="false"/> -			    <stat_bar name="layerskbitstat" +			    <stat_bar name="layersdatareceived"                      label="Layers"                      orientation="horizontal" -                    stat="layerskbitstat" +                    stat="layersdatareceived"                      unit_label="kbps"                      bar_max="1024.f"                      tick_spacing="128.f"                      precision="1"                      show_bar="false"/> -			    <stat_bar name="actualinkbitstat" +			    <stat_bar name="messagedatain"                      label="Actual In"                      orientation="horizontal" -                    stat="actualinkbitstat" +                    stat="messagedatain"                      unit_label="kbps"                      bar_max="1024.f"                      tick_spacing="128.f"                      precision="1"                      show_bar="false"/> -			    <stat_bar name="actualoutkbitstat" +			    <stat_bar name="messagedataout"                      label="Actual Out"                      orientation="horizontal" -                    stat="actualoutkbitstat" +                    stat="messagedataout"                      unit_label="kbps"                      bar_max="1024.f"                      tick_spacing="128.f" diff --git a/indra/newview/skins/default/xui/en/floater_stats.xml b/indra/newview/skins/default/xui/en/floater_stats.xml index ad7094c6d8..ba43c24ad3 100755 --- a/indra/newview/skins/default/xui/en/floater_stats.xml +++ b/indra/newview/skins/default/xui/en/floater_stats.xml @@ -37,9 +37,9 @@                    decimal_digits="1"                    show_bar="true"                    show_history="true"/> -       <!-- <stat_bar name="bandwidth" -                  label="Bandwidth" -                  stat="Bandwidth" +       <stat_bar name="bandwidth" +                  label="UDP Data Received" +                  stat="activemessagedatareceived"                    show_bar="true"/>          <stat_bar name="packet_loss"                    label="Packet Loss" @@ -135,29 +135,29 @@                      label="Packets Out"                      stat="packetsoutstat"                      decimal_digits="1"/> -          <stat_bar name="objectkbitstat" +          <stat_bar name="objectdatareceived"                      label="Objects" -                    stat="objectkbitstat" +                    stat="objectdatareceived"                      decimal_digits="1"/> -          <stat_bar name="texturekbitstat" +          <stat_bar name="texturedatareceived"                      label="Texture" -                    stat="texturekbitstat" +                    stat="texturedatareceived"                      decimal_digits="1"/> -          <stat_bar name="assetkbitstat" +          <stat_bar name="assetudpdatareceived"                      label="Asset" -                    stat="assetkbitstat" +                    stat="assetudpdatareceived"                      decimal_digits="1"/> -          <stat_bar name="layerskbitstat" +          <stat_bar name="layersdatareceived"                      label="Layers" -                    stat="layerskbitstat" +                    stat="layersdatareceived"                      decimal_digits="1"/> -          <stat_bar name="actualinkbitstat" +          <stat_bar name="messagedatain"                      label="Actual In" -                    stat="actualinkbitstat" +                    stat="messagedatain"                      decimal_digits="1"/> -          <stat_bar name="actualoutkbitstat" +          <stat_bar name="messagedataout"                      label="Actual Out" -                    stat="actualoutkbitstat" +                    stat="messagedataout"                      decimal_digits="1"                      show_history="false"/>            <stat_bar name="vfspendingoperations" @@ -336,7 +336,7 @@                        stat="simpumpiomsec"                        decimal_digits="3"/>            </stat_view> -        </stat_view>--> +        </stat_view>        </stat_view>      </container_view>    </scroll_container> | 
