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.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)) {

View File

@ -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<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* 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 );