Plot data transfer.

This commit is contained in:
Bartosz Taudul 2017-10-13 02:07:03 +02:00
parent d9feeb3486
commit f0484b50ca
3 changed files with 28 additions and 0 deletions

View File

@ -16,6 +16,8 @@
#define LockableBase( type ) type
#define LockMark(x)
#define TracyPlot(x,y)
#else
#include "TracyLock.hpp"
@ -35,6 +37,8 @@
#define LockableBase( type ) tracy::Lockable<type>
#define LockMark( varname ) static const tracy::SourceLocation __tracy_lock_location_##varname { __FUNCTION__, __FILE__, (uint32_t)__LINE__, 0 }; varname.Mark( &__tracy_lock_location_##varname );
#define TracyPlot( name, val ) tracy::Profiler::PlotData( name, val );
#endif
#endif

View File

@ -82,6 +82,20 @@ public:
tail.store( magic + 1, std::memory_order_release );
}
static tracy_force_inline void PlotData( const char* name, double val )
{
uint32_t cpu;
Magic magic;
auto& token = s_token.ptr;
auto& tail = token->get_tail_index();
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
item->hdr.type = QueueType::PlotData;
item->plotData.name = (uint64_t)name;
item->plotData.time = GetTime( cpu );
item->plotData.val = val;
tail.store( magic + 1, std::memory_order_release );
}
static bool ShouldExit();
private:

View File

@ -21,6 +21,7 @@ enum class QueueType : uint8_t
LockObtain,
LockRelease,
LockMark,
PlotData,
NUM_TYPES
};
@ -101,6 +102,13 @@ struct QueueLockMark
uint64_t srcloc; // ptr
};
struct QueuePlotData
{
uint64_t name; // ptr
int64_t time;
double val;
};
struct QueueHeader
{
union
@ -126,6 +134,7 @@ struct QueueItem
QueueLockObtain lockObtain;
QueueLockRelease lockRelease;
QueueLockMark lockMark;
QueuePlotData plotData;
};
};
@ -147,6 +156,7 @@ static const size_t QueueDataSize[] = {
sizeof( QueueHeader ) + sizeof( QueueLockObtain ),
sizeof( QueueHeader ) + sizeof( QueueLockRelease ),
sizeof( QueueHeader ) + sizeof( QueueLockMark ),
sizeof( QueueHeader ) + sizeof( QueuePlotData ),
};
static_assert( sizeof( QueueDataSize ) / sizeof( size_t ) == (uint8_t)QueueType::NUM_TYPES, "QueueDataSize mismatch" );