1
0
mirror of https://github.com/wolfpld/tracy.git synced 2025-03-20 07:40:02 +08:00

Expose profiler internals to make it easier for inlining.

concurrentqueue.h doesn't bring any poisonous includes, only STL.
This commit is contained in:
Bartosz Taudul 2017-10-03 14:19:32 +02:00
parent 439a23049d
commit 353fda95a3
2 changed files with 19 additions and 32 deletions

View File

@ -14,7 +14,6 @@
#include "../common/TracyProtocol.hpp" #include "../common/TracyProtocol.hpp"
#include "../common/TracySocket.hpp" #include "../common/TracySocket.hpp"
#include "../common/TracySystem.hpp" #include "../common/TracySystem.hpp"
#include "concurrentqueue.h"
#include "TracyScoped.hpp" #include "TracyScoped.hpp"
#include "TracyProfiler.hpp" #include "TracyProfiler.hpp"
@ -27,10 +26,10 @@ namespace tracy
enum { QueuePrealloc = 256 * 1024 }; enum { QueuePrealloc = 256 * 1024 };
static moodycamel::ConcurrentQueue<QueueItem> s_queue( QueueItemSize * QueuePrealloc ); moodycamel::ConcurrentQueue<QueueItem> s_queue( QueueItemSize * QueuePrealloc );
static thread_local moodycamel::ProducerToken s_token( s_queue ); thread_local moodycamel::ProducerToken s_token( s_queue );
static std::atomic<uint64_t> s_id( 0 ); std::atomic<uint64_t> s_id( 0 );
#ifndef TRACY_DISABLE #ifndef TRACY_DISABLE
static Profiler s_profiler; static Profiler s_profiler;
@ -69,30 +68,6 @@ Profiler::~Profiler()
s_instance = nullptr; s_instance = nullptr;
} }
QueueItem* Profiler::StartItem()
{
return s_queue.enqueue_begin( s_token );
}
void Profiler::FinishItem()
{
s_queue.enqueue_finish( s_token );
}
uint64_t Profiler::GetNewId()
{
return s_id.fetch_add( 1, std::memory_order_relaxed );
}
void Profiler::FrameMark()
{
int8_t cpu;
auto item = s_queue.enqueue_begin( s_token );
item->hdr.type = QueueType::FrameMarkMsg;
item->hdr.id = (uint64_t)GetTime( cpu );
s_queue.enqueue_finish( s_token );
}
bool Profiler::ShouldExit() bool Profiler::ShouldExit()
{ {
return s_instance->m_shutdown.load( std::memory_order_relaxed ); return s_instance->m_shutdown.load( std::memory_order_relaxed );

View File

@ -6,6 +6,7 @@
#include <stdint.h> #include <stdint.h>
#include <thread> #include <thread>
#include "concurrentqueue.h"
#include "../common/tracy_lz4.hpp" #include "../common/tracy_lz4.hpp"
#include "../common/TracyQueue.hpp" #include "../common/TracyQueue.hpp"
@ -26,6 +27,10 @@ struct SourceLocation
uint32_t color; uint32_t color;
}; };
extern moodycamel::ConcurrentQueue<QueueItem> s_queue;
extern thread_local moodycamel::ProducerToken s_token;;
extern std::atomic<uint64_t> s_id;
class Profiler class Profiler
{ {
public: public:
@ -45,11 +50,18 @@ public:
#endif #endif
} }
static QueueItem* StartItem(); static QueueItem* StartItem() { return s_queue.enqueue_begin( s_token ); }
static void FinishItem(); static void FinishItem() { s_queue.enqueue_finish( s_token ); }
static uint64_t GetNewId(); static uint64_t GetNewId() { return s_id.fetch_add( 1, std::memory_order_relaxed ); }
static void FrameMark(); static void FrameMark()
{
int8_t cpu;
auto item = s_queue.enqueue_begin( s_token );
item->hdr.type = QueueType::FrameMarkMsg;
item->hdr.id = (uint64_t)GetTime( cpu );
s_queue.enqueue_finish( s_token );
}
static bool ShouldExit(); static bool ShouldExit();