Add context switch usage struct.

This commit is contained in:
Bartosz Taudul 2019-11-05 00:30:57 +01:00
parent 09d6f3f917
commit a62c4135ad
2 changed files with 21 additions and 0 deletions

View File

@ -35,4 +35,7 @@
<Type Name="tracy::ContextSwitchCpu"> <Type Name="tracy::ContextSwitchCpu">
<DisplayString>{{ start={int64_t( _start_thread ) >> 16} end={_end} thread={uint16_t( _start_thread )} }}</DisplayString> <DisplayString>{{ start={int64_t( _start_thread ) >> 16} end={_end} thread={uint16_t( _start_thread )} }}</DisplayString>
</Type> </Type>
<Type Name="tracy::ContextSwitchUsage">
<DisplayString>{{ time={int64_t( _time_other_own ) >> 16} own={uint8_t( _time_other_own >> 8 )} other={uint8_t( _time_other_own )} }}</DisplayString>
</Type>
</AutoVisualizer> </AutoVisualizer>

View File

@ -376,6 +376,24 @@ struct ContextSwitchCpu
enum { ContextSwitchCpuSize = sizeof( ContextSwitchCpu ) }; enum { ContextSwitchCpuSize = sizeof( ContextSwitchCpu ) };
struct ContextSwitchUsage
{
ContextSwitchUsage() {}
ContextSwitchUsage( int64_t time, uint8_t other, uint8_t own ) { SetTime( time ); SetOther( other ); SetOwn( own ); }
tracy_force_inline int64_t Time() const { return int64_t( _time_other_own ) >> 16; }
tracy_force_inline void SetTime( int64_t time ) { assert( time < (int64_t)( 1ull << 47 ) ); memcpy( ((char*)&_time_other_own)+2, &time, 4 ); memcpy( ((char*)&_time_other_own)+6, ((char*)&time)+4, 2 ); }
tracy_force_inline uint8_t Other() const { return uint8_t( _time_other_own ); }
tracy_force_inline void SetOther( uint8_t other ) { memcpy( &_time_other_own, &other, 1 ); }
tracy_force_inline uint8_t Own() const { return uint8_t( _time_other_own >> 8 ); }
tracy_force_inline void SetOwn( uint8_t own ) { memcpy( ((char*)&_time_other_own)+1, &own, 1 ); }
uint64_t _time_other_own;
};
enum { ContextSwitchUsageSize = sizeof( ContextSwitchUsage ) };
struct MessageData struct MessageData
{ {
int64_t time; int64_t time;