tracy lock C api internals simplification

This commit is contained in:
jacob 2025-05-20 18:06:11 -05:00
parent 079ae4c47c
commit cdb5eeea63
3 changed files with 99 additions and 84 deletions

View File

@ -1276,7 +1276,7 @@ void sim_step(struct sim_step_ctx *ctx)
def.max_force = F32_INFINITY; def.max_force = F32_INFINITY;
def.linear_spring_hz = 5; def.linear_spring_hz = 5;
def.linear_spring_damp = 0.7; def.linear_spring_damp = 0.7;
def.angular_spring_hz = 5; def.angular_spring_hz = 1;
def.angular_spring_damp = 0.1; def.angular_spring_damp = 0.1;
joint_ent->mouse_joint_data = phys_mouse_joint_from_def(def); joint_ent->mouse_joint_data = phys_mouse_joint_from_def(def);
} else if (sim_ent_is_valid_and_active(joint_ent)) { } else if (sim_ent_is_valid_and_active(joint_ent)) {

View File

@ -4791,132 +4791,149 @@ TRACY_API void ___tracy_emit_gpu_time_sync_serial( const struct ___tracy_gpu_tim
tracy::Profiler::QueueSerialFinish(); tracy::Profiler::QueueSerialFinish();
} }
/* ========================== *
* Lock
* ========================== */
struct __tracy_lockable_context_data struct __tracy_lockable_context_data
{ {
tracy::LockableCtx ctx; 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 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)); tracy::LockableCtx *ctx = (tracy::LockableCtx *)tracy::tracy_malloc(sizeof(tracy::LockableCtx));
new(ctx) tracy::LockableCtx((tracy::SourceLocationData *)srcloc);
// Because Tracy deletes the "=" operator return (TracyCLockCtx)ctx;
tracy::LockableCtx ctx { (tracy::SourceLocationData *)srcloc };
memcpy(&lockdata->ctx, &ctx, sizeof(ctx));
return lockdata;
} }
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::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 /* ========================== *
{ * Shared lock
tracy::SharedLockableCtx ctx; * ========================== */
};
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 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)); tracy::SharedLockableCtx *ctx = (tracy::SharedLockableCtx *)tracy::tracy_malloc(sizeof(tracy::SharedLockableCtx));
new(ctx) tracy::SharedLockableCtx((tracy::SourceLocationData *)srcloc);
// Because Tracy deletes the "=" operator return (TracyCSharedLockCtx )ctx;
tracy::SharedLockableCtx ctx { (tracy::SourceLocationData *)srcloc };
memcpy(&lockdata->ctx, &ctx, sizeof(ctx));
return lockdata;
} }
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::SharedLockableCtx *ctx = (tracy::SharedLockableCtx *)lockdata;
ctx->~SharedLockableCtx();
tracy::tracy_free((void *)lockdata); 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 ) TRACY_API int32_t ___tracy_connected( void )
{ {
return static_cast<int32_t>( tracy::GetProfiler().IsConnected() ); return static_cast<int32_t>( tracy::GetProfiler().IsConnected() );

View File

@ -38,8 +38,8 @@ TRACY_API void ___tracy_set_thread_name( const char* name );
typedef const void* TracyCZoneCtx; typedef const void* TracyCZoneCtx;
typedef const void* TracyCLockCtx; typedef void *TracyCLockCtx;
typedef const void* TracyCSharedLockCtx; typedef void *TracyCSharedLockCtx;
#define TracyCZone(c,x) #define TracyCZone(c,x)
#define TracyCZoneN(c,x,y) #define TracyCZoneN(c,x,y)
@ -208,14 +208,12 @@ struct ___tracy_gpu_time_sync_data {
uint8_t context; uint8_t context;
}; };
struct __tracy_lockable_context_data;
// Some containers don't support storing const types. // 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. // 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 /*const*/ struct ___tracy_c_zone_context TracyCZoneCtx;
typedef struct __tracy_lockable_context_data* TracyCLockCtx; typedef void *TracyCLockCtx;
typedef struct __tracy_lockable_context_data *TracyCSharedLockCtx; typedef void *TracyCSharedLockCtx;
#ifdef TRACY_MANUAL_LIFETIME #ifdef TRACY_MANUAL_LIFETIME
TRACY_API void ___tracy_startup_profiler(void); 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 ); #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 TracyCLockCtx ___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 void ___tracy_terminate_lockable_ctx(TracyCLockCtx 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);
TRACY_API void ___tracy_after_lock_lockable_ctx( struct __tracy_lockable_context_data* lockdata ); TRACY_API void ___tracy_after_lock_lockable_ctx(TracyCLockCtx lockdata);
TRACY_API void ___tracy_after_unlock_lockable_ctx( struct __tracy_lockable_context_data* lockdata ); TRACY_API void ___tracy_after_unlock_lockable_ctx(TracyCLockCtx lockdata);
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);
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);
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 );
#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 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 ); #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 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 ); #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 TracyCSharedLockCtx ___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 void ___tracy_terminate_shared_lockable_ctx(TracyCSharedLockCtx 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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
#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 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 ); #define TracyCSharedLockTerminate( lock ) ___tracy_terminate_shared_lockable_ctx( lock );