The C++11 spec states in [basic.stc.thread] thread storage duration:
2. A variable with thread storage duration shall be initialized before its
first odr-use (3.2) and, if constructed, shall be destroyed on thread exit.
Previously Tracy relied on the TLS data being initialized:
- During thread creation (MSVC).
- Or during first use in a thread, but the initialization was performed for
the whole TLS block.
It seems that new compilers are more granular with how they perform the
initialization, hence rpmalloc init has to be checked before each allocation,
as it cannot be "folded" into, for example, initialization of the profiler
itself.
It now properly supports TRACY_CALLSTACK as well as the
Tracy*Transient macros.
The order of the macros now has the same order as the D3D12 file.
Added support for TracyD3D11ContextName().
I removed TRACY_D3D11_NO_SINGLE_THREAD, because I'm not
sure what that is supposed to be used for. It was set
up in an upstream fork of Tracy.