From cdb5eeea639c33de1e0c1d77c964a9bc3066127c Mon Sep 17 00:00:00 2001 From: jacob Date: Tue, 20 May 2025 18:06:11 -0500 Subject: [PATCH] tracy lock C api internals simplification --- src/sim_step.c | 2 +- .../tracy/client/TracyProfiler.cpp | 131 ++++++++++-------- src/third_party/tracy/tracy/TracyC.h | 50 ++++--- 3 files changed, 99 insertions(+), 84 deletions(-) diff --git a/src/sim_step.c b/src/sim_step.c index c78ef5c8..985990f6 100644 --- a/src/sim_step.c +++ b/src/sim_step.c @@ -1276,7 +1276,7 @@ void sim_step(struct sim_step_ctx *ctx) def.max_force = F32_INFINITY; def.linear_spring_hz = 5; def.linear_spring_damp = 0.7; - def.angular_spring_hz = 5; + def.angular_spring_hz = 1; def.angular_spring_damp = 0.1; joint_ent->mouse_joint_data = phys_mouse_joint_from_def(def); } else if (sim_ent_is_valid_and_active(joint_ent)) { diff --git a/src/third_party/tracy/client/TracyProfiler.cpp b/src/third_party/tracy/client/TracyProfiler.cpp index 2fa787a6..478bdcab 100644 --- a/src/third_party/tracy/client/TracyProfiler.cpp +++ b/src/third_party/tracy/client/TracyProfiler.cpp @@ -4791,132 +4791,149 @@ TRACY_API void ___tracy_emit_gpu_time_sync_serial( const struct ___tracy_gpu_tim tracy::Profiler::QueueSerialFinish(); } +/* ========================== * + * Lock + * ========================== */ + struct __tracy_lockable_context_data { tracy::LockableCtx ctx; }; -TRACY_API struct __tracy_lockable_context_data* ___tracy_announce_lockable_ctx( const struct ___tracy_source_location_data* srcloc ) +TRACY_API TracyCLockCtx ___tracy_announce_lockable_ctx( const struct ___tracy_source_location_data* srcloc ) { static_assert(sizeof(struct ___tracy_source_location_data) == sizeof(tracy::SourceLocationData)); // C srcloc struct must fit in cpp srcloc struct - struct __tracy_lockable_context_data *lockdata = (__tracy_lockable_context_data *)tracy::tracy_malloc(sizeof(__tracy_lockable_context_data)); - - // Because Tracy deletes the "=" operator - tracy::LockableCtx ctx { (tracy::SourceLocationData *)srcloc }; - memcpy(&lockdata->ctx, &ctx, sizeof(ctx)); - - return lockdata; + tracy::LockableCtx *ctx = (tracy::LockableCtx *)tracy::tracy_malloc(sizeof(tracy::LockableCtx)); + new(ctx) tracy::LockableCtx((tracy::SourceLocationData *)srcloc); + return (TracyCLockCtx)ctx; } -TRACY_API void ___tracy_terminate_lockable_ctx( struct __tracy_lockable_context_data* lockdata ) +TRACY_API void ___tracy_terminate_lockable_ctx( TracyCLockCtx lockdata ) { - lockdata->ctx.~LockableCtx(); + tracy::LockableCtx *ctx = (tracy::LockableCtx *)lockdata; + ctx->~LockableCtx(); tracy::tracy_free((void*)lockdata); } -TRACY_API int32_t ___tracy_before_lock_lockable_ctx( struct __tracy_lockable_context_data* lockdata ) +TRACY_API int32_t ___tracy_before_lock_lockable_ctx( TracyCLockCtx lockdata ) { - return lockdata->ctx.BeforeLock(); + tracy::LockableCtx *ctx = (tracy::LockableCtx *)lockdata; + return ctx->BeforeLock(); } -TRACY_API void ___tracy_after_lock_lockable_ctx( struct __tracy_lockable_context_data* lockdata ) +TRACY_API void ___tracy_after_lock_lockable_ctx( TracyCLockCtx lockdata ) { - lockdata->ctx.AfterLock(); + tracy::LockableCtx *ctx = (tracy::LockableCtx *)lockdata; + ctx->AfterLock(); } -TRACY_API void ___tracy_after_unlock_lockable_ctx( struct __tracy_lockable_context_data* lockdata ) +TRACY_API void ___tracy_after_unlock_lockable_ctx( TracyCLockCtx lockdata ) { - lockdata->ctx.AfterUnlock(); + tracy::LockableCtx *ctx = (tracy::LockableCtx *)lockdata; + ctx->AfterUnlock(); } -TRACY_API void ___tracy_after_try_lock_lockable_ctx( struct __tracy_lockable_context_data* lockdata, int32_t acquired ) +TRACY_API void ___tracy_after_try_lock_lockable_ctx( TracyCLockCtx lockdata, int32_t acquired ) { - lockdata->ctx.AfterTryLock(acquired); + tracy::LockableCtx *ctx = (tracy::LockableCtx *)lockdata; + ctx->AfterTryLock(acquired); } -TRACY_API void ___tracy_mark_lockable_ctx(struct __tracy_lockable_context_data *lockdata, const struct ___tracy_source_location_data *srcloc) +TRACY_API void ___tracy_mark_lockable_ctx(TracyCLockCtx lockdata, const struct ___tracy_source_location_data *srcloc) { - lockdata->ctx.Mark((tracy::SourceLocationData *)srcloc); + tracy::LockableCtx *ctx = (tracy::LockableCtx *)lockdata; + ctx->Mark((tracy::SourceLocationData *)srcloc); } -TRACY_API void ___tracy_custom_name_lockable_ctx(struct __tracy_lockable_context_data *lockdata, const char *name, size_t nameSz) +TRACY_API void ___tracy_custom_name_lockable_ctx(TracyCLockCtx lockdata, const char *name, size_t nameSz) { - lockdata->ctx.CustomName(name, nameSz); + tracy::LockableCtx *ctx = (tracy::LockableCtx *)lockdata; + ctx->CustomName(name, nameSz); } -struct __tracy_shared_lockable_context_data -{ - tracy::SharedLockableCtx ctx; -}; +/* ========================== * + * Shared lock + * ========================== */ -TRACY_API struct __tracy_shared_lockable_context_data* ___tracy_announce_shared_lockable_ctx( const struct ___tracy_source_location_data* srcloc ) +TRACY_API TracyCSharedLockCtx ___tracy_announce_shared_lockable_ctx(const struct ___tracy_source_location_data *srcloc) { static_assert(sizeof(struct ___tracy_source_location_data) == sizeof(tracy::SourceLocationData)); // C srcloc struct must fit in cpp srcloc struct - struct __tracy_shared_lockable_context_data *lockdata = (__tracy_shared_lockable_context_data *)tracy::tracy_malloc(sizeof(__tracy_shared_lockable_context_data)); - - // Because Tracy deletes the "=" operator - tracy::SharedLockableCtx ctx { (tracy::SourceLocationData *)srcloc }; - memcpy(&lockdata->ctx, &ctx, sizeof(ctx)); - - return lockdata; + tracy::SharedLockableCtx *ctx = (tracy::SharedLockableCtx *)tracy::tracy_malloc(sizeof(tracy::SharedLockableCtx)); + new(ctx) tracy::SharedLockableCtx((tracy::SourceLocationData *)srcloc); + return (TracyCSharedLockCtx )ctx; } -TRACY_API void ___tracy_terminate_shared_lockable_ctx( struct __tracy_shared_lockable_context_data* lockdata ) +TRACY_API void ___tracy_terminate_shared_lockable_ctx(TracyCSharedLockCtx lockdata) { - lockdata->ctx.~SharedLockableCtx(); - tracy::tracy_free((void*)lockdata); + tracy::SharedLockableCtx *ctx = (tracy::SharedLockableCtx *)lockdata; + ctx->~SharedLockableCtx(); + tracy::tracy_free((void *)lockdata); } -TRACY_API int32_t ___tracy_before_exclusive_lock_shared_lockable_ctx( struct __tracy_shared_lockable_context_data* lockdata ) +TRACY_API int32_t ___tracy_before_exclusive_lock_shared_lockable_ctx(TracyCSharedLockCtx lockdata) { - return lockdata->ctx.BeforeLock(); + tracy::SharedLockableCtx *ctx = (tracy::SharedLockableCtx *)lockdata; + return ctx->BeforeLock(); } -TRACY_API void ___tracy_after_exclusive_lock_shared_lockable_ctx( struct __tracy_shared_lockable_context_data* lockdata ) +TRACY_API void ___tracy_after_exclusive_lock_shared_lockable_ctx(TracyCSharedLockCtx lockdata) { - lockdata->ctx.AfterLock(); + tracy::SharedLockableCtx *ctx = (tracy::SharedLockableCtx *)lockdata; + ctx->AfterLock(); } -TRACY_API void ___tracy_after_exclusive_unlock_shared_lockable_ctx( struct __tracy_shared_lockable_context_data* lockdata ) +TRACY_API void ___tracy_after_exclusive_unlock_shared_lockable_ctx(TracyCSharedLockCtx lockdata) { - lockdata->ctx.AfterUnlock(); + tracy::SharedLockableCtx *ctx = (tracy::SharedLockableCtx *)lockdata; + ctx->AfterUnlock(); } -TRACY_API void ___tracy_after_try_exclusive_lock_shared_lockable_ctx( struct __tracy_shared_lockable_context_data* lockdata, int32_t acquired ) +TRACY_API void ___tracy_after_try_exclusive_lock_shared_lockable_ctx(TracyCSharedLockCtx lockdata, int32_t acquired) { - lockdata->ctx.AfterTryLock(acquired); + tracy::SharedLockableCtx *ctx = (tracy::SharedLockableCtx *)lockdata; + ctx->AfterTryLock(acquired); } -TRACY_API int32_t ___tracy_before_shared_lock_shared_lockable_ctx(struct __tracy_shared_lockable_context_data *lockdata) +TRACY_API int32_t ___tracy_before_shared_lock_shared_lockable_ctx(TracyCSharedLockCtx lockdata) { - return lockdata->ctx.BeforeLockShared(); + tracy::SharedLockableCtx *ctx = (tracy::SharedLockableCtx *)lockdata; + return ctx->BeforeLockShared(); } -TRACY_API void ___tracy_after_shared_lock_shared_lockable_ctx(struct __tracy_shared_lockable_context_data *lockdata) +TRACY_API void ___tracy_after_shared_lock_shared_lockable_ctx(TracyCSharedLockCtx lockdata) { - lockdata->ctx.AfterLockShared(); + tracy::SharedLockableCtx *ctx = (tracy::SharedLockableCtx *)lockdata; + ctx->AfterLockShared(); } -TRACY_API void ___tracy_after_try_shared_lock_shared_lockable_ctx(struct __tracy_shared_lockable_context_data *lockdata, int32_t acquired) +TRACY_API void ___tracy_after_try_shared_lock_shared_lockable_ctx(TracyCSharedLockCtx lockdata, int32_t acquired) { - lockdata->ctx.AfterTryLockShared(acquired); + tracy::SharedLockableCtx *ctx = (tracy::SharedLockableCtx *)lockdata; + ctx->AfterTryLockShared(acquired); } -TRACY_API void ___tracy_after_shared_unlock_shared_lockable_ctx(struct __tracy_shared_lockable_context_data *lockdata) +TRACY_API void ___tracy_after_shared_unlock_shared_lockable_ctx(TracyCSharedLockCtx lockdata) { - lockdata->ctx.AfterUnlockShared(); + tracy::SharedLockableCtx *ctx = (tracy::SharedLockableCtx *)lockdata; + ctx->AfterUnlockShared(); } -TRACY_API void ___tracy_mark_shared_lockable_ctx(struct __tracy_shared_lockable_context_data *lockdata, const struct ___tracy_source_location_data *srcloc) +TRACY_API void ___tracy_mark_shared_lockable_ctx(TracyCSharedLockCtx lockdata, const struct ___tracy_source_location_data *srcloc) { - lockdata->ctx.Mark((tracy::SourceLocationData *)srcloc); + tracy::SharedLockableCtx *ctx = (tracy::SharedLockableCtx *)lockdata; + ctx->Mark((tracy::SourceLocationData *)srcloc); } -TRACY_API void ___tracy_custom_name_shared_lockable_ctx(struct __tracy_shared_lockable_context_data *lockdata, const char *name, size_t nameSz) +TRACY_API void ___tracy_custom_name_shared_lockable_ctx(TracyCSharedLockCtx lockdata, const char *name, size_t nameSz) { - lockdata->ctx.CustomName(name, nameSz); + tracy::SharedLockableCtx *ctx = (tracy::SharedLockableCtx *)lockdata; + ctx->CustomName(name, nameSz); } +/* ========================== * + * Other + * ========================== */ + TRACY_API int32_t ___tracy_connected( void ) { return static_cast( tracy::GetProfiler().IsConnected() ); diff --git a/src/third_party/tracy/tracy/TracyC.h b/src/third_party/tracy/tracy/TracyC.h index 028f8263..420e5f88 100644 --- a/src/third_party/tracy/tracy/TracyC.h +++ b/src/third_party/tracy/tracy/TracyC.h @@ -38,8 +38,8 @@ TRACY_API void ___tracy_set_thread_name( const char* name ); typedef const void* TracyCZoneCtx; -typedef const void* TracyCLockCtx; -typedef const void* TracyCSharedLockCtx; +typedef void *TracyCLockCtx; +typedef void *TracyCSharedLockCtx; #define TracyCZone(c,x) #define TracyCZoneN(c,x,y) @@ -208,14 +208,12 @@ struct ___tracy_gpu_time_sync_data { uint8_t context; }; -struct __tracy_lockable_context_data; - // Some containers don't support storing const types. // This struct, as visible to user, is immutable, so treat it as if const was declared here. typedef /*const*/ struct ___tracy_c_zone_context TracyCZoneCtx; -typedef struct __tracy_lockable_context_data* TracyCLockCtx; -typedef struct __tracy_lockable_context_data *TracyCSharedLockCtx; +typedef void *TracyCLockCtx; +typedef void *TracyCSharedLockCtx; #ifdef TRACY_MANUAL_LIFETIME TRACY_API void ___tracy_startup_profiler(void); @@ -363,14 +361,14 @@ TRACY_API void ___tracy_emit_message_appinfo( const char* txt, size_t size ); #define TracyCMessageLCS( txt, color, depth ) ___tracy_emit_messageLC( txt, color, depth ); -TRACY_API struct __tracy_lockable_context_data* ___tracy_announce_lockable_ctx( const struct ___tracy_source_location_data* srcloc ); -TRACY_API void ___tracy_terminate_lockable_ctx( struct __tracy_lockable_context_data* lockdata ); -TRACY_API int32_t ___tracy_before_lock_lockable_ctx( struct __tracy_lockable_context_data* lockdata ); -TRACY_API void ___tracy_after_lock_lockable_ctx( struct __tracy_lockable_context_data* lockdata ); -TRACY_API void ___tracy_after_unlock_lockable_ctx( struct __tracy_lockable_context_data* lockdata ); -TRACY_API void ___tracy_after_try_lock_lockable_ctx( struct __tracy_lockable_context_data* lockdata, int32_t acquired ); -TRACY_API void ___tracy_mark_lockable_ctx( struct __tracy_lockable_context_data* lockdata, const struct ___tracy_source_location_data* srcloc ); -TRACY_API void ___tracy_custom_name_lockable_ctx( struct __tracy_lockable_context_data* lockdata, const char* name, size_t nameSz ); +TRACY_API TracyCLockCtx ___tracy_announce_lockable_ctx(const struct ___tracy_source_location_data *srcloc); +TRACY_API void ___tracy_terminate_lockable_ctx(TracyCLockCtx lockdata); +TRACY_API int32_t ___tracy_before_lock_lockable_ctx(TracyCLockCtx lockdata); +TRACY_API void ___tracy_after_lock_lockable_ctx(TracyCLockCtx lockdata); +TRACY_API void ___tracy_after_unlock_lockable_ctx(TracyCLockCtx lockdata); +TRACY_API void ___tracy_after_try_lock_lockable_ctx(TracyCLockCtx lockdata, int32_t acquired); +TRACY_API void ___tracy_mark_lockable_ctx(TracyCLockCtx lockdata, const struct ___tracy_source_location_data *srcloc); +TRACY_API void ___tracy_custom_name_lockable_ctx(TracyCLockCtx lockdata, const char* name, size_t nameSz ); #define TracyCLockAnnounce( lock ) static const struct ___tracy_source_location_data TracyConcat(__tracy_source_location,TracyLine) = { NULL, __func__, TracyFile, (uint32_t)TracyLine, 0 }; lock = ___tracy_announce_lockable_ctx( &TracyConcat(__tracy_source_location,TracyLine) ); #define TracyCLockTerminate( lock ) ___tracy_terminate_lockable_ctx( lock ); @@ -381,18 +379,18 @@ TRACY_API void ___tracy_custom_name_lockable_ctx( struct __tracy_lockable_contex #define TracyCLockMark( lock ) static const struct ___tracy_source_location_data TracyConcat(__tracy_source_location,TracyLine) = { NULL, __func__, TracyFile, (uint32_t)TracyLine, 0 }; ___tracy_mark_lockable_ctx( lock, &TracyConcat(__tracy_source_location,TracyLine) ); #define TracyCLockCustomName( lock, name, nameSz ) ___tracy_custom_name_lockable_ctx( lock, name, nameSz ); -TRACY_API struct __tracy_shared_lockable_context_data *___tracy_announce_shared_lockable_ctx(const struct ___tracy_source_location_data *srcloc); -TRACY_API void ___tracy_terminate_shared_lockable_ctx(struct __tracy_shared_lockable_context_data *lockdata); -TRACY_API int32_t ___tracy_before_exclusive_lock_shared_lockable_ctx(struct __tracy_shared_lockable_context_data *lockdata); -TRACY_API void ___tracy_after_exclusive_lock_shared_lockable_ctx(struct __tracy_shared_lockable_context_data *lockdata); -TRACY_API void ___tracy_after_exclusive_unlock_shared_lockable_ctx(struct __tracy_shared_lockable_context_data *lockdata); -TRACY_API void ___tracy_after_try_exclusive_lock_shared_lockable_ctx(struct __tracy_shared_lockable_context_data *lockdata, int32_t acquired); -TRACY_API int32_t ___tracy_before_shared_lock_shared_lockable_ctx(struct __tracy_shared_lockable_context_data *lockdata); -TRACY_API void ___tracy_after_shared_lock_shared_lockable_ctx(struct __tracy_shared_lockable_context_data *lockdata); -TRACY_API void ___tracy_after_shared_unlock_shared_lockable_ctx(struct __tracy_shared_lockable_context_data *lockdata); -TRACY_API void ___tracy_after_try_shared_lock_shared_lockable_ctx(struct __tracy_shared_lockable_context_data *lockdata, int32_t acquired); -TRACY_API void ___tracy_mark_shared_lockable_ctx(struct __tracy_shared_lockable_context_data *lockdata, const struct ___tracy_source_location_data *srcloc); -TRACY_API void ___tracy_custom_name_shared_lockable_ctx(struct __tracy_shared_lockable_context_data *lockdata, const char *name, size_t nameSz); +TRACY_API TracyCSharedLockCtx ___tracy_announce_shared_lockable_ctx(const struct ___tracy_source_location_data *srcloc); +TRACY_API void ___tracy_terminate_shared_lockable_ctx(TracyCSharedLockCtx lockdata); +TRACY_API int32_t ___tracy_before_exclusive_lock_shared_lockable_ctx(TracyCSharedLockCtx lockdata); +TRACY_API void ___tracy_after_exclusive_lock_shared_lockable_ctx(TracyCSharedLockCtx lockdata); +TRACY_API void ___tracy_after_exclusive_unlock_shared_lockable_ctx(TracyCSharedLockCtx lockdata); +TRACY_API void ___tracy_after_try_exclusive_lock_shared_lockable_ctx(TracyCSharedLockCtx lockdata, int32_t acquired); +TRACY_API int32_t ___tracy_before_shared_lock_shared_lockable_ctx(TracyCSharedLockCtx lockdata); +TRACY_API void ___tracy_after_shared_lock_shared_lockable_ctx(TracyCSharedLockCtx lockdata); +TRACY_API void ___tracy_after_shared_unlock_shared_lockable_ctx(TracyCSharedLockCtx lockdata); +TRACY_API void ___tracy_after_try_shared_lock_shared_lockable_ctx(TracyCSharedLockCtx lockdata, int32_t acquired); +TRACY_API void ___tracy_mark_shared_lockable_ctx(TracyCSharedLockCtx lockdata, const struct ___tracy_source_location_data *srcloc); +TRACY_API void ___tracy_custom_name_shared_lockable_ctx(TracyCSharedLockCtx lockdata, const char *name, size_t nameSz); #define TracyCSharedLockAnnounce( lock ) static const struct ___tracy_source_location_data TracyConcat(__tracy_source_location,TracyLine) = { NULL, __func__, TracyFile, (uint32_t)TracyLine, 0 }; lock = ___tracy_announce_shared_lockable_ctx( &TracyConcat(__tracy_source_location,TracyLine) ); #define TracyCSharedLockTerminate( lock ) ___tracy_terminate_shared_lockable_ctx( lock );