/
redgpu
/
ezEngine
Обзор
Документация
Войти
/
redgpu
/
ezEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
Code/ThirdParty/tracy/client/TracyAlloc.cpp
43 строки
1 KB
Mikael K
Add WDStudios Tracy intergration to ezEngine (#1257)
14 апр 2024, 20:15
Не верифицирован
14 апр 2024, 20:15
7a5ed56
Код
Авторство
О чём код?
#include "../common/TracyAlloc.hpp" #ifdef TRACY_USE_RPMALLOC #include <atomic> #include "../common/TracyForceInline.hpp" #include "../common/TracyYield.hpp" namespace tracy { extern thread_local bool RpThreadInitDone; extern std::atomic<int> RpInitDone; extern std::atomic<int> RpInitLock; tracy_no_inline static void InitRpmallocPlumbing() { const auto done = RpInitDone.load( std::memory_order_acquire ); if( !done ) { int expected = 0; while( !RpInitLock.compare_exchange_weak( expected, 1, std::memory_order_release, std::memory_order_relaxed ) ) { expected = 0; YieldThread(); } const auto done = RpInitDone.load( std::memory_order_acquire ); if( !done ) { rpmalloc_initialize(); RpInitDone.store( 1, std::memory_order_release ); } RpInitLock.store( 0, std::memory_order_release ); } rpmalloc_thread_initialize(); RpThreadInitDone = true; } TRACY_API void InitRpmalloc() { if( !RpThreadInitDone ) InitRpmallocPlumbing(); } } #endif