1
0
mirror of https://github.com/wolfpld/tracy.git synced 2025-03-20 07:40:02 +08:00

Add ZoneText and ZoneName to the C API.

This commit is contained in:
Bartosz Taudul
2019-01-16 01:17:01 +01:00
parent 49e270d8a6
commit 92f3a4bba0
4 changed files with 96 additions and 4 deletions
+56
View File
@@ -1860,6 +1860,62 @@ void ___tracy_emit_zone_end( TracyCZoneCtx ctx )
}
}
void ___tracy_emit_zone_text( TracyCZoneCtx ctx, const char* txt, size_t size )
{
if( !ctx.active ) return;
const auto thread = tracy::GetThreadHandle();
tracy::Magic magic;
auto& token = tracy::s_token.ptr;
auto ptr = (char*)tracy::tracy_malloc( size+1 );
memcpy( ptr, txt, size );
ptr[size] = '\0';
auto& tail = token->get_tail_index();
#ifndef TRACY_NO_VERIFY
{
auto item = token->enqueue_begin<tracy::moodycamel::CanAlloc>( magic );
tracy::MemWrite( &item->hdr.type, tracy::QueueType::ZoneValidation );
tracy::MemWrite( &item->zoneValidation.thread, thread );
tracy::MemWrite( &item->zoneValidation.id, ctx.id );
tail.store( magic + 1, std::memory_order_release );
}
#endif
{
auto item = token->enqueue_begin<tracy::moodycamel::CanAlloc>( magic );
tracy::MemWrite( &item->hdr.type, tracy::QueueType::ZoneText );
tracy::MemWrite( &item->zoneText.thread, thread );
tracy::MemWrite( &item->zoneText.text, (uint64_t)ptr );
tail.store( magic + 1, std::memory_order_release );
}
}
void ___tracy_emit_zone_name( TracyCZoneCtx ctx, const char* txt, size_t size )
{
if( !ctx.active ) return;
const auto thread = tracy::GetThreadHandle();
tracy::Magic magic;
auto& token = tracy::s_token.ptr;
auto ptr = (char*)tracy::tracy_malloc( size+1 );
memcpy( ptr, txt, size );
ptr[size] = '\0';
auto& tail = token->get_tail_index();
#ifndef TRACY_NO_VERIFY
{
auto item = token->enqueue_begin<tracy::moodycamel::CanAlloc>( magic );
tracy::MemWrite( &item->hdr.type, tracy::QueueType::ZoneValidation );
tracy::MemWrite( &item->zoneValidation.thread, thread );
tracy::MemWrite( &item->zoneValidation.id, ctx.id );
tail.store( magic + 1, std::memory_order_release );
}
#endif
{
auto item = token->enqueue_begin<tracy::moodycamel::CanAlloc>( magic );
tracy::MemWrite( &item->hdr.type, tracy::QueueType::ZoneName );
tracy::MemWrite( &item->zoneText.thread, thread );
tracy::MemWrite( &item->zoneText.text, (uint64_t)ptr );
tail.store( magic + 1, std::memory_order_release );
}
}
#ifdef __cplusplus
}
#endif