package tracy import "core:c" 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 #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() --- } }