Final fix for fast timer reshuffle.
parent
ec7b204ed6
commit
3d0ff2585e
|
|
@ -37,7 +37,6 @@
|
|||
#include "llfasttimer_class.h"
|
||||
|
||||
#if LL_WINDOWS
|
||||
#define LL_INLINE __forceinline
|
||||
//
|
||||
// Windows implementation of CPU clock
|
||||
//
|
||||
|
|
@ -53,21 +52,21 @@
|
|||
//#undef _interlockedbittestandset
|
||||
//#undef _interlockedbittestandreset
|
||||
|
||||
//inline U32 get_cpu_clock_count_32()
|
||||
//inline U32 LLFastTimer::getCPUClockCount32()
|
||||
//{
|
||||
// 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()
|
||||
//inline U64 LLFastTimer::getCPUClockCount64()
|
||||
//{
|
||||
// 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()
|
||||
inline U32 LLFastTimer::getCPUClockCount32()
|
||||
{
|
||||
U32 ret_val;
|
||||
__asm
|
||||
|
|
@ -83,7 +82,7 @@ inline U32 get_cpu_clock_count_32()
|
|||
}
|
||||
|
||||
// return full timer value, *not* shifted by 8 bits
|
||||
inline U64 get_cpu_clock_count_64()
|
||||
inline U64 LLFastTimer::getCPUClockCount64()
|
||||
{
|
||||
U64 ret_val;
|
||||
__asm
|
||||
|
|
@ -97,8 +96,6 @@ inline U64 get_cpu_clock_count_64()
|
|||
}
|
||||
return ret_val;
|
||||
}
|
||||
#else
|
||||
#define LL_INLINE
|
||||
#endif
|
||||
|
||||
|
||||
|
|
@ -111,7 +108,7 @@ inline U64 get_cpu_clock_count_64()
|
|||
// to synchronize this value between cores at kernel start. It should not be affected
|
||||
// by CPU frequency. If not available use the REALTIME clock, but this may be affected by
|
||||
// NTP adjustments or other user activity affecting the system time.
|
||||
inline U64 get_cpu_clock_count_64()
|
||||
inline U64 LLFastTimer::getCPUClockCount64()
|
||||
{
|
||||
struct timespec tp;
|
||||
|
||||
|
|
@ -123,9 +120,9 @@ inline U64 get_cpu_clock_count_64()
|
|||
return (tp.tv_sec*LLFastTimer::sClockResolution)+tp.tv_nsec;
|
||||
}
|
||||
|
||||
inline U32 get_cpu_clock_count_32()
|
||||
inline U32 LLFastTimer::getCPUClockCount32()
|
||||
{
|
||||
return (U32)get_cpu_clock_count_64();
|
||||
return (U32)LLFastTimer::getCPUClockCount64();
|
||||
}
|
||||
#endif // (LL_LINUX || LL_SOLARIS))
|
||||
|
||||
|
|
@ -133,14 +130,14 @@ inline U32 get_cpu_clock_count_32()
|
|||
#if (LL_DARWIN) && (defined(__i386__) || defined(__amd64__))
|
||||
//
|
||||
// Mac x86 implementation of CPU clock
|
||||
inline U32 get_cpu_clock_count_32()
|
||||
inline U32 LLFastTimer::getCPUClockCount32()
|
||||
{
|
||||
U64 x;
|
||||
__asm__ volatile (".byte 0x0f, 0x31": "=A"(x));
|
||||
return (U32)x >> 8;
|
||||
}
|
||||
|
||||
inline U32 get_cpu_clock_count_64()
|
||||
inline U32 LLFastTimer::getCPUClockCount64()
|
||||
{
|
||||
U64 x;
|
||||
__asm__ volatile (".byte 0x0f, 0x31": "=A"(x));
|
||||
|
|
@ -155,12 +152,12 @@ inline U32 get_cpu_clock_count_64()
|
|||
//
|
||||
// Just use gettimeofday implementation for now
|
||||
|
||||
inline U32 get_cpu_clock_count_32()
|
||||
inline U32 LLFastTimer::getCPUClockCount32()
|
||||
{
|
||||
return (U32)get_clock_count();
|
||||
}
|
||||
|
||||
inline U32 get_cpu_clock_count_64()
|
||||
inline U32 LLFastTimer::getCPUClockCount64()
|
||||
{
|
||||
return get_clock_count();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@
|
|||
|
||||
S32 LLFastTimer::sCurFrameIndex = -1;
|
||||
S32 LLFastTimer::sLastFrameIndex = -1;
|
||||
U64 LLFastTimer::sLastFrameTime = get_cpu_clock_count_64();
|
||||
U64 LLFastTimer::sLastFrameTime = LLFastTimer::getCPUClockCount64();
|
||||
bool LLFastTimer::sPauseHistory = 0;
|
||||
bool LLFastTimer::sResetHistory = 0;
|
||||
LLFastTimer::CurTimerData LLFastTimer::sCurTimerData;
|
||||
|
|
@ -426,7 +426,7 @@ void LLFastTimer::NamedTimer::buildHierarchy()
|
|||
//static
|
||||
void LLFastTimer::NamedTimer::accumulateTimings()
|
||||
{
|
||||
U32 cur_time = get_cpu_clock_count_32();
|
||||
U32 cur_time = getCPUClockCount32();
|
||||
|
||||
// walk up stack of active timers and accumulate current time while leaving timing structures active
|
||||
LLFastTimer* cur_timer = sCurTimerData.mCurTimer;
|
||||
|
|
@ -556,7 +556,7 @@ void LLFastTimer::NamedTimer::reset()
|
|||
|
||||
// walk up stack of active timers and reset start times to current time
|
||||
// effectively zeroing out any accumulated time
|
||||
U32 cur_time = get_cpu_clock_count_32();
|
||||
U32 cur_time = getCPUClockCount32();
|
||||
|
||||
// root defined by parent pointing to self
|
||||
CurTimerData* cur_data = &sCurTimerData;
|
||||
|
|
@ -649,7 +649,7 @@ std::vector<LLFastTimer::NamedTimer*>& LLFastTimer::NamedTimer::getChildren()
|
|||
void LLFastTimer::nextFrame()
|
||||
{
|
||||
countsPerSecond(); // good place to calculate clock frequency
|
||||
U64 frame_time = get_cpu_clock_count_64();
|
||||
U64 frame_time = getCPUClockCount64();
|
||||
if ((frame_time - sLastFrameTime) >> 8 > 0xffffffff)
|
||||
{
|
||||
llinfos << "Slow frame, fast timers inaccurate" << llendl;
|
||||
|
|
@ -738,7 +738,7 @@ const LLFastTimer::NamedTimer* LLFastTimer::getTimerByName(const std::string& na
|
|||
LLFastTimer::LLFastTimer(LLFastTimer::FrameState* state)
|
||||
: mFrameState(state)
|
||||
{
|
||||
U32 start_time = get_cpu_clock_count_32();
|
||||
U32 start_time = getCPUClockCount32();
|
||||
mStartTime = start_time;
|
||||
mFrameState->mActiveCount++;
|
||||
LLFastTimer::sCurTimerData.mCurTimer = this;
|
||||
|
|
|
|||
Loading…
Reference in New Issue