diff --git a/Tracy.hpp b/Tracy.hpp index a3ec997a..89ef8b71 100644 --- a/Tracy.hpp +++ b/Tracy.hpp @@ -58,11 +58,15 @@ #define TracyAllocS(x,y,z) #define TracyFreeS(x,y) +#define TracyMeshTri(v0,v1,v2,v3,v4,v5) +#define TracyMeshEnd + #else #include "client/TracyLock.hpp" #include "client/TracyProfiler.hpp" #include "client/TracyScoped.hpp" +#include "client/TracyMesh.hpp" #if defined TRACY_HAS_CALLSTACK && defined TRACY_CALLSTACK # define ZoneNamed( varname, active ) static const tracy::SourceLocationData TracyConcat(__tracy_source_location,__LINE__) { nullptr, __FUNCTION__, __FILE__, (uint32_t)__LINE__, 0 }; tracy::ScopedZone varname( &TracyConcat(__tracy_source_location,__LINE__), TRACY_CALLSTACK, active ); @@ -143,6 +147,9 @@ # define TracyFreeS( ptr, depth ) TracyFree( ptr ) #endif +#define TracyMeshTri( x0, y0, x1, y1, x2, y2 ) tracy::mesh::MeshTri( x0, y0, x1, y1, x2, y2 ) +#define TracyMeshEnd tracy::mesh::MeshEnd(); + #endif #endif diff --git a/client/TracyMesh.hpp b/client/TracyMesh.hpp new file mode 100644 index 00000000..3934ff15 --- /dev/null +++ b/client/TracyMesh.hpp @@ -0,0 +1,40 @@ +#ifndef __TRACYMESH_HPP__ +#define __TRACYMESH_HPP__ + +#include "TracyProfiler.hpp" + +namespace tracy +{ +namespace mesh +{ + +static void MeshTri( float x0, float y0, float x1, float y1, float x2, float y2 ) +{ + Magic magic; + auto token = GetToken(); + auto& tail = token->get_tail_index(); + auto item = token->enqueue_begin( magic ); + MemWrite( &item->hdr.type, QueueType::MeshTri ); + MemWrite( &item->meshTri.x0, x0 ); + MemWrite( &item->meshTri.y0, y0 ); + MemWrite( &item->meshTri.x1, x1 ); + MemWrite( &item->meshTri.y1, y1 ); + MemWrite( &item->meshTri.x2, x2 ); + MemWrite( &item->meshTri.y2, y2 ); + tail.store( magic + 1, std::memory_order_release ); +} + +static void MeshEnd() +{ + Magic magic; + auto token = GetToken(); + auto& tail = token->get_tail_index(); + auto item = token->enqueue_begin( magic ); + MemWrite( &item->hdr.type, QueueType::MeshEnd ); + tail.store( magic + 1, std::memory_order_release ); +} + +} +} + +#endif diff --git a/common/TracyProtocol.hpp b/common/TracyProtocol.hpp index 652f5cc9..9ffc61ac 100644 --- a/common/TracyProtocol.hpp +++ b/common/TracyProtocol.hpp @@ -9,7 +9,7 @@ namespace tracy { -enum : uint32_t { ProtocolVersion = 14 }; +enum : uint32_t { ProtocolVersion = 15 }; enum : uint32_t { BroadcastVersion = 0 }; using lz4sz_t = uint32_t; diff --git a/common/TracyQueue.hpp b/common/TracyQueue.hpp index 8f4cb4f5..e3534329 100644 --- a/common/TracyQueue.hpp +++ b/common/TracyQueue.hpp @@ -56,6 +56,8 @@ enum class QueueType : uint8_t CallstackFrameSize, CallstackFrame, SysTimeReport, + MeshTri, + MeshEnd, StringData, ThreadName, CustomStringData, @@ -297,6 +299,13 @@ struct QueueSysTime float sysTime; }; +struct QueueMeshTri +{ + float x0, y0; + float x1, y1; + float x2, y2; +}; + struct QueueHeader { union @@ -342,6 +351,7 @@ struct QueueItem QueueCallstackFrame callstackFrame; QueueCrashReport crashReport; QueueSysTime sysTime; + QueueMeshTri meshTri; }; }; #pragma pack() @@ -399,6 +409,8 @@ static const size_t QueueDataSize[] = { sizeof( QueueHeader ) + sizeof( QueueCallstackFrameSize ), sizeof( QueueHeader ) + sizeof( QueueCallstackFrame ), sizeof( QueueHeader ) + sizeof( QueueSysTime ), + sizeof( QueueHeader ) + sizeof( QueueMeshTri ), + sizeof( QueueHeader ), // mesh end // keep all QueueStringTransfer below sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // string data sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // thread name