177 lines
7.8 KiB
Odin
177 lines
7.8 KiB
Odin
package tracy
|
|
|
|
import "core:c"
|
|
|
|
_ :: c
|
|
|
|
when TRACY_ENABLE {
|
|
when ODIN_OS == .Darwin do foreign import tracy "tracy.dylib"
|
|
when ODIN_OS == .Windows do foreign import tracy "tracy.lib"
|
|
when ODIN_OS == .Linux do foreign import tracy "tracy.so"
|
|
}
|
|
|
|
TracyPlotFormatEnum :: enum i32 {
|
|
TracyPlotFormatNumber,
|
|
TracyPlotFormatMemory,
|
|
TracyPlotFormatPercentage,
|
|
TracyPlotFormatWatt,
|
|
}
|
|
|
|
___tracy_source_location_data :: struct {
|
|
name: cstring,
|
|
function: cstring,
|
|
file: cstring,
|
|
line: u32,
|
|
color: u32,
|
|
}
|
|
|
|
___tracy_c_zone_context :: struct {
|
|
id: u32,
|
|
active: b32,
|
|
}
|
|
|
|
___tracy_gpu_time_data :: struct {
|
|
gpuTime: i64,
|
|
queryId: u16,
|
|
_context: u8, // NOTE(oskar): `context` is a reserved identifier in Odin.
|
|
}
|
|
|
|
___tracy_gpu_zone_begin_data :: struct {
|
|
srcloc: u64,
|
|
queryId: u16,
|
|
_context: u8, // NOTE(oskar): `context` is a reserved identifier in Odin.
|
|
}
|
|
|
|
___tracy_gpu_zone_begin_callstack_data :: struct {
|
|
srcloc: u64,
|
|
depth: i32,
|
|
queryId: u16,
|
|
_context: u8, // NOTE(oskar): `context` is a reserved identifier in Odin.
|
|
}
|
|
|
|
___tracy_gpu_zone_end_data :: struct {
|
|
queryId: u16,
|
|
_context: u8, // NOTE(oskar): `context` is a reserved identifier in Odin.
|
|
}
|
|
|
|
___tracy_gpu_new_context_data :: struct {
|
|
gpuTime: i64,
|
|
period: f32,
|
|
_context: u8, // NOTE(oskar): `context` is a reserved identifier in Odin.
|
|
flags: u8,
|
|
type: u8,
|
|
}
|
|
|
|
___tracy_gpu_context_name_data :: struct {
|
|
_context: u8, // NOTE(oskar): `context` is a reserved identifier in Odin.
|
|
name: cstring,
|
|
len: u16,
|
|
}
|
|
|
|
___tracy_gpu_calibration_data :: struct {
|
|
gpuTime: i64,
|
|
cpuDelta: i64,
|
|
_context: u8, // NOTE(oskar): `context` is a reserved identifier in Odin.
|
|
}
|
|
|
|
___tracy_gpu_time_sync_data :: struct {
|
|
gpuTime: i64,
|
|
_context: u8, // NOTE(oskar): `context` is a reserved identifier in Odin.
|
|
}
|
|
|
|
__tracy_lockable_context_data :: struct {} // NOTE(oskar): opaque
|
|
|
|
when TRACY_ENABLE {
|
|
when #config(TRACY_MANUAL_LIFETIME, false) {
|
|
@(default_calling_convention = "c")
|
|
foreign tracy {
|
|
___tracy_startup_profiler :: proc() ---
|
|
___tracy_shutdown_profiler :: proc() ---
|
|
___tracy_profiler_started :: proc() -> b32 ---
|
|
}
|
|
}
|
|
@(default_calling_convention = "c")
|
|
foreign tracy {
|
|
___tracy_set_thread_name :: proc(name: cstring) ---
|
|
|
|
___tracy_alloc_srcloc :: proc(line: u32, source: cstring, sourceSz: c.size_t, function: cstring, functionSz: c.size_t, color: u32 = 0) -> u64 ---
|
|
___tracy_alloc_srcloc_name :: proc(line: u32, source: cstring, sourceSz: c.size_t, function: cstring, functionSz: c.size_t, name: cstring, nameSz: c.size_t, color: u32 = 0) -> u64 ---
|
|
|
|
___tracy_emit_zone_begin :: proc(srcloc: ^___tracy_source_location_data, active: b32) -> ___tracy_c_zone_context ---
|
|
___tracy_emit_zone_begin_callstack :: proc(srcloc: ^___tracy_source_location_data, depth: i32, active: b32) -> ___tracy_c_zone_context ---
|
|
___tracy_emit_zone_begin_alloc :: proc(srcloc: u64, active: b32) -> ___tracy_c_zone_context ---
|
|
___tracy_emit_zone_begin_alloc_callstack :: proc(srcloc: u64, depth: i32, active: b32) -> ___tracy_c_zone_context ---
|
|
___tracy_emit_zone_end :: proc(ctx: ___tracy_c_zone_context) ---
|
|
___tracy_emit_zone_text :: proc(ctx: ___tracy_c_zone_context, txt: cstring, size: c.size_t) ---
|
|
___tracy_emit_zone_name :: proc(ctx: ___tracy_c_zone_context, txt: cstring, size: c.size_t) ---
|
|
___tracy_emit_zone_color :: proc(ctx: ___tracy_c_zone_context, color: u32) ---
|
|
___tracy_emit_zone_value :: proc(ctx: ___tracy_c_zone_context, value: u64) ---
|
|
|
|
___tracy_emit_gpu_zone_begin :: proc(_: ___tracy_gpu_zone_begin_data) ---
|
|
___tracy_emit_gpu_zone_begin_callstack :: proc(_: ___tracy_gpu_zone_begin_callstack_data) ---
|
|
___tracy_emit_gpu_zone_begin_alloc :: proc(_: ___tracy_gpu_zone_begin_data) ---
|
|
___tracy_emit_gpu_zone_begin_alloc_callstack :: proc(_: ___tracy_gpu_zone_begin_callstack_data) ---
|
|
___tracy_emit_gpu_zone_end :: proc(_: ___tracy_gpu_zone_end_data) ---
|
|
___tracy_emit_gpu_time :: proc(_: ___tracy_gpu_time_data) ---
|
|
___tracy_emit_gpu_new_context :: proc(_: ___tracy_gpu_new_context_data) ---
|
|
___tracy_emit_gpu_context_name :: proc(_: ___tracy_gpu_context_name_data) ---
|
|
___tracy_emit_gpu_calibration :: proc(_: ___tracy_gpu_calibration_data) ---
|
|
___tracy_emit_gpu_time_sync :: proc(_: ___tracy_gpu_time_sync_data) ---
|
|
|
|
___tracy_emit_gpu_zone_begin_serial :: proc(_: ___tracy_gpu_zone_begin_data) ---
|
|
___tracy_emit_gpu_zone_begin_callstack_serial :: proc(_: ___tracy_gpu_zone_begin_callstack_data) ---
|
|
___tracy_emit_gpu_zone_begin_alloc_serial :: proc(_: ___tracy_gpu_zone_begin_data) ---
|
|
___tracy_emit_gpu_zone_begin_alloc_callstack_serial :: proc(_: ___tracy_gpu_zone_begin_callstack_data) ---
|
|
___tracy_emit_gpu_zone_end_serial :: proc(_: ___tracy_gpu_zone_end_data) ---
|
|
___tracy_emit_gpu_time_serial :: proc(_: ___tracy_gpu_time_data) ---
|
|
___tracy_emit_gpu_new_context_serial :: proc(_: ___tracy_gpu_new_context_data) ---
|
|
___tracy_emit_gpu_context_name_serial :: proc(_: ___tracy_gpu_context_name_data) ---
|
|
___tracy_emit_gpu_calibration_serial :: proc(_: ___tracy_gpu_calibration_data) ---
|
|
___tracy_emit_gpu_time_sync_serial :: proc(_: ___tracy_gpu_time_sync_data) ---
|
|
|
|
___tracy_connected :: proc() -> b32 ---
|
|
|
|
___tracy_emit_memory_alloc :: proc(ptr: rawptr, size: c.size_t, secure: b32) ---
|
|
___tracy_emit_memory_alloc_callstack :: proc(ptr: rawptr, size: c.size_t, depth: i32, secure: b32) ---
|
|
___tracy_emit_memory_free :: proc(ptr: rawptr, secure: b32) ---
|
|
___tracy_emit_memory_free_callstack :: proc(ptr: rawptr, depth: i32, secure: b32) ---
|
|
___tracy_emit_memory_alloc_named :: proc(ptr: rawptr, size: c.size_t, secure: b32, name: cstring) ---
|
|
___tracy_emit_memory_alloc_callstack_named :: proc(ptr: rawptr, size: c.size_t, depth: i32, secure: b32, name: cstring) ---
|
|
___tracy_emit_memory_free_named :: proc(ptr: rawptr, secure: b32, name: cstring) ---
|
|
___tracy_emit_memory_free_callstack_named :: proc(ptr: rawptr, depth: i32, secure: b32, name: cstring) ---
|
|
|
|
___tracy_emit_message :: proc(txt: cstring, size: c.size_t, callstack: i32) ---
|
|
___tracy_emit_messageL :: proc(txt: cstring, callstack: i32) ---
|
|
___tracy_emit_messageC :: proc(txt: cstring, size: c.size_t, color: u32, callstack: i32) ---
|
|
___tracy_emit_messageLC :: proc(txt: cstring, color: u32, callstack: i32) ---
|
|
|
|
___tracy_emit_frame_mark :: proc(name: cstring) ---
|
|
___tracy_emit_frame_mark_start :: proc(name: cstring) ---
|
|
___tracy_emit_frame_mark_end :: proc(name: cstring) ---
|
|
___tracy_emit_frame_image :: proc(image: rawptr, w, h: u16, offset: u8, flip: b32) ---
|
|
|
|
___tracy_emit_plot :: proc(name: cstring, val: f64) ---
|
|
___tracy_emit_plot_float :: proc(name: cstring, val: f32) ---
|
|
___tracy_emit_plot_int :: proc(name: cstring, val: i64) ---
|
|
___tracy_emit_plot_config :: proc(name: cstring, type: TracyPlotFormatEnum, step, fill: b32, color: u32) ---
|
|
___tracy_emit_message_appinfo :: proc(txt: cstring, size: c.size_t) ---
|
|
|
|
___tracy_announce_lockable_ctx :: proc(srcloc: ^___tracy_source_location_data) -> ^__tracy_lockable_context_data ---
|
|
___tracy_terminate_lockable_ctx :: proc(lockdata: ^__tracy_lockable_context_data) ---
|
|
___tracy_before_lock_lockable_ctx :: proc(lockdata: ^__tracy_lockable_context_data) -> b32 ---
|
|
___tracy_after_lock_lockable_ctx :: proc(lockdata: ^__tracy_lockable_context_data) ---
|
|
___tracy_after_unlock_lockable_ctx :: proc(lockdata: ^__tracy_lockable_context_data) ---
|
|
___tracy_after_try_lock_lockable_ctx :: proc(lockdata: ^__tracy_lockable_context_data, acquired: b32) ---
|
|
___tracy_mark_lockable_ctx :: proc(lockdata: ^__tracy_lockable_context_data, srcloc: ^___tracy_source_location_data) ---
|
|
___tracy_custom_name_lockable_ctx :: proc(lockdata: ^__tracy_lockable_context_data, name: cstring, nameSz: c.size_t) ---
|
|
}
|
|
|
|
when #config(TRACY_FIBERS, false) {
|
|
@(default_calling_convention = "c")
|
|
foreign tracy {
|
|
___tracy_fiber_enter :: proc(fiber: cstring) ---
|
|
___tracy_fiber_leave :: proc() ---
|
|
}
|
|
}
|
|
}
|