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:
parent
439a23049d
commit
353fda95a3
@ -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 );
|
||||||
|
|||||||
@ -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();
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user