From cb0011755d6af32a478cf1df972cf7bd57fb08f8 Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Fri, 13 Oct 2017 02:21:29 +0200 Subject: [PATCH] Prevent type conversions. --- client/TracyProfiler.hpp | 33 ++++++++++++++++++++++++++++++++- common/TracyQueue.hpp | 15 ++++++++++++++- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/client/TracyProfiler.hpp b/client/TracyProfiler.hpp index 6acf5258..17faeff7 100644 --- a/client/TracyProfiler.hpp +++ b/client/TracyProfiler.hpp @@ -82,6 +82,36 @@ public: tail.store( magic + 1, std::memory_order_release ); } + static tracy_force_inline void PlotData( const char* name, int64_t val ) + { + uint32_t cpu; + Magic magic; + auto& token = s_token.ptr; + auto& tail = token->get_tail_index(); + auto item = token->enqueue_begin( magic ); + item->hdr.type = QueueType::PlotData; + item->plotData.name = (uint64_t)name; + item->plotData.time = GetTime( cpu ); + item->plotData.type = PlotDataType::Int; + item->plotData.data.i = val; + tail.store( magic + 1, std::memory_order_release ); + } + + static tracy_force_inline void PlotData( const char* name, float val ) + { + uint32_t cpu; + Magic magic; + auto& token = s_token.ptr; + auto& tail = token->get_tail_index(); + auto item = token->enqueue_begin( magic ); + item->hdr.type = QueueType::PlotData; + item->plotData.name = (uint64_t)name; + item->plotData.time = GetTime( cpu ); + item->plotData.type = PlotDataType::Float; + item->plotData.data.f = val; + tail.store( magic + 1, std::memory_order_release ); + } + static tracy_force_inline void PlotData( const char* name, double val ) { uint32_t cpu; @@ -92,7 +122,8 @@ public: item->hdr.type = QueueType::PlotData; item->plotData.name = (uint64_t)name; item->plotData.time = GetTime( cpu ); - item->plotData.val = val; + item->plotData.type = PlotDataType::Double; + item->plotData.data.d = val; tail.store( magic + 1, std::memory_order_release ); } diff --git a/common/TracyQueue.hpp b/common/TracyQueue.hpp index 7f33e69a..1ffa0bfc 100644 --- a/common/TracyQueue.hpp +++ b/common/TracyQueue.hpp @@ -102,11 +102,24 @@ struct QueueLockMark uint64_t srcloc; // ptr }; +enum class PlotDataType : uint8_t +{ + Float, + Double, + Int +}; + struct QueuePlotData { uint64_t name; // ptr int64_t time; - double val; + PlotDataType type; + union + { + double d; + float f; + int64_t i; + } data; }; struct QueueHeader