From 2f4673ce1bea5002537cb3645f4f0f30bb79166d Mon Sep 17 00:00:00 2001 From: Ari Vuollet Date: Sat, 11 May 2024 19:01:45 +0300 Subject: [PATCH] Patch tracy for Windows on ARM --- Source/ThirdParty/tracy/client/TracyProfiler.hpp | 2 ++ Source/ThirdParty/tracy/client/tracy_rpmalloc.cpp | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Source/ThirdParty/tracy/client/TracyProfiler.hpp b/Source/ThirdParty/tracy/client/TracyProfiler.hpp index 8892fb14f..b303a4503 100644 --- a/Source/ThirdParty/tracy/client/TracyProfiler.hpp +++ b/Source/ThirdParty/tracy/client/TracyProfiler.hpp @@ -177,6 +177,8 @@ public: # elif defined _WIN32 # ifdef TRACY_TIMER_QPC return GetTimeQpc(); +# elif defined(_M_ARM64) + if( HardwareSupportsInvariantTSC() ) return int64_t( _ReadStatusReg(ARM64_PMCCNTR_EL0) ); # else if( HardwareSupportsInvariantTSC() ) return int64_t( __rdtsc() ); # endif diff --git a/Source/ThirdParty/tracy/client/tracy_rpmalloc.cpp b/Source/ThirdParty/tracy/client/tracy_rpmalloc.cpp index 711505d21..e94957552 100644 --- a/Source/ThirdParty/tracy/client/tracy_rpmalloc.cpp +++ b/Source/ThirdParty/tracy/client/tracy_rpmalloc.cpp @@ -781,7 +781,9 @@ rpmalloc_set_main_thread(void) { static void _rpmalloc_spin(void) { -#if defined(_MSC_VER) +#if defined(_MSC_VER) && defined(_M_ARM64) + __isb(_ARM64_BARRIER_SY); +#elif defined(_MSC_VER) _mm_pause(); #elif defined(__x86_64__) || defined(__i386__) __asm__ volatile("pause" ::: "memory");