diff options
| author | Tofu Linden <tofu.linden@lindenlab.com> | 2010-01-25 12:07:25 -0800 | 
|---|---|---|
| committer | Tofu Linden <tofu.linden@lindenlab.com> | 2010-01-25 12:07:25 -0800 | 
| commit | 563daa96a873ef627ca42d24e0f6de6bb359326d (patch) | |
| tree | 8801ead4b59b4eddc29437fd7e8f196c85bc8660 | |
| parent | 471b8f71cd01176ad5deb1b1e6d8cec738d09d0c (diff) | |
pull in the linux+solaris fast-timers impl from snowglobe, fit it into viewer2, start moving headers around.
| -rw-r--r-- | doc/contributions.txt | 1 | ||||
| -rw-r--r-- | indra/llcommon/llfasttimer_class.h (renamed from indra/llcommon/llfasttimer.h) | 103 | 
2 files changed, 6 insertions, 98 deletions
| diff --git a/doc/contributions.txt b/doc/contributions.txt index cf10ecccfb..2e4d803252 100644 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -500,6 +500,7 @@ Ringo Tuxing  	CT-231  	CT-321  Robin Cornelius +	SNOW-108  	SNOW-204  	VWR-2488  	VWR-9557 diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer_class.h index 8af79c90fd..93d2d0494d 100644 --- a/indra/llcommon/llfasttimer.h +++ b/indra/llcommon/llfasttimer_class.h @@ -1,5 +1,5 @@  /** - * @file llfasttimer.h + * @file llfasttimer_class.h   * @brief Declaration of a fast timer.   *   * $LicenseInfo:firstyear=2004&license=viewergpl$ @@ -30,108 +30,14 @@   * $/LicenseInfo$   */ -#ifndef LL_FASTTIMER_H -#define LL_FASTTIMER_H +#ifndef LL_FASTTIMER_CLASS_H +#define LL_FASTTIMER_CLASS_H  #include "llinstancetracker.h"  #define FAST_TIMER_ON 1  #define TIME_FAST_TIMERS 0 -#if LL_WINDOWS -#define LL_INLINE __forceinline - -// -// NOTE: put back in when we aren't using platform sdk anymore -// -// because MS has different signatures for these functions in winnt.h -// need to rename them to avoid conflicts -//#define _interlockedbittestandset _renamed_interlockedbittestandset -//#define _interlockedbittestandreset _renamed_interlockedbittestandreset -//#include <intrin.h> -//#undef _interlockedbittestandset -//#undef _interlockedbittestandreset - -//inline U32 get_cpu_clock_count_32() -//{ -//	U64 time_stamp = __rdtsc(); -//	return (U32)(time_stamp >> 8); -//} -// -//// return full timer value, *not* shifted by 8 bits -//inline U64 get_cpu_clock_count_64() -//{ -//	return __rdtsc(); -//} - -// shift off lower 8 bits for lower resolution but longer term timing -// on 1Ghz machine, a 32-bit word will hold ~1000 seconds of timing -inline U32 get_cpu_clock_count_32() -{ -	U32 ret_val; -	__asm -	{ -        _emit   0x0f -        _emit   0x31 -		shr eax,8 -		shl edx,24 -		or eax, edx -		mov dword ptr [ret_val], eax -	} -    return ret_val; -} - -// return full timer value, *not* shifted by 8 bits -inline U64 get_cpu_clock_count_64() -{ -	U64 ret_val; -	__asm -	{ -        _emit   0x0f -        _emit   0x31 -		mov eax,eax -		mov edx,edx -		mov dword ptr [ret_val+4], edx -		mov dword ptr [ret_val], eax -	} -    return ret_val; -} -#else -#define LL_INLINE -#endif - -#if (LL_LINUX || LL_SOLARIS || LL_DARWIN) && (defined(__i386__) || defined(__amd64__)) -inline U32 get_cpu_clock_count_32() -{ -	U64 x; -	__asm__ volatile (".byte 0x0f, 0x31": "=A"(x)); -	return (U32)x >> 8; -} - -inline U32 get_cpu_clock_count_64() -{ -	U64 x; -	__asm__ volatile (".byte 0x0f, 0x31": "=A"(x)); -	return x >> 8; -} -#endif - -#if ( LL_DARWIN && !(defined(__i386__) || defined(__amd64__))) || (LL_SOLARIS && defined(__sparc__)) -// -// Mac PPC (deprecated) & Solaris SPARC implementation of CPU clock -// -// Just use gettimeofday implementation for now - -inline U32 get_cpu_clock_count_32() -{ -	return (U32)get_clock_count(); -} - -inline U32 get_cpu_clock_count_64() -{ -	return get_clock_count(); -} -#endif  class LLMutex; @@ -352,6 +258,7 @@ private:  	static S32				sLastFrameIndex;  	static U64				sLastFrameTime;  	static info_list_t*		sTimerInfos; +	static U64 sClockResolution;  	U32							mStartTime;  	LLFastTimer::FrameState*	mFrameState; @@ -361,4 +268,4 @@ private:  typedef class LLFastTimer LLFastTimer; -#endif // LL_LLFASTTIMER_H +#endif // LL_LLFASTTIMER_CLASS_H | 
