mirror of
https://github.com/wolfpld/tracy.git
synced 2025-03-20 07:40:02 +08:00
91 lines
2.5 KiB
Fortran
91 lines
2.5 KiB
Fortran
module tracy
|
|
use, intrinsic :: iso_c_binding, only: c_ptr, c_loc, c_char, c_null_char, &
|
|
& c_int8_t, c_int16_t, c_int32_t, c_int64_t, c_int, c_float
|
|
implicit none
|
|
private
|
|
! skipped: TracyPlotFormatEnum
|
|
interface
|
|
subroutine impl_tracy_set_thread_name(name) bind(C, name="___tracy_set_thread_name")
|
|
import
|
|
type(c_ptr) :: name
|
|
end subroutine impl_tracy_set_thread_name
|
|
end interface
|
|
|
|
type, bind(C) :: tracy_source_location_data
|
|
type(c_ptr) :: name
|
|
type(c_ptr) :: function
|
|
type(c_ptr) :: file
|
|
integer(c_int32_t) :: line
|
|
integer(c_int32_t) :: color
|
|
end type
|
|
|
|
type, bind(C) :: tracy_c_zone_context
|
|
integer(c_int32_t) :: id
|
|
integer(c_int32_t) :: active
|
|
end type
|
|
|
|
type, bind(C) :: tracy_gpu_time_data
|
|
integer(c_int64_t) :: gpuTime
|
|
integer(c_int16_t) :: queryId
|
|
integer(c_int8_t) :: context
|
|
end type
|
|
|
|
type, bind(C) :: tracy_gpu_zone_begin_data
|
|
integer(c_int64_t) :: srcloc
|
|
integer(c_int16_t) :: queryId
|
|
integer(c_int8_t) :: context
|
|
end type
|
|
|
|
type, bind(C) :: tracy_gpu_zone_begin_callstack_data
|
|
integer(c_int64_t) :: srcloc
|
|
integer(c_int32_t) :: depth
|
|
integer(c_int16_t) :: queryId
|
|
integer(c_int8_t) :: context
|
|
end type
|
|
|
|
type, bind(C) :: tracy_gpu_zone_end_data
|
|
integer(c_int16_t) :: queryId
|
|
integer(c_int8_t) :: context
|
|
end type
|
|
|
|
type, bind(C) :: tracy_gpu_new_context_data
|
|
integer(c_int64_t) :: gpuTime
|
|
real(c_float) :: period
|
|
integer(c_int8_t) :: context
|
|
integer(c_int8_t) :: flags
|
|
integer(c_int8_t) :: type
|
|
end type
|
|
|
|
type, bind(C) :: tracy_gpu_context_name_data
|
|
integer(c_int8_t) :: context
|
|
type(c_ptr) :: name
|
|
integer(c_int16_t) :: len
|
|
end type
|
|
|
|
type, bind(C) :: tracy_gpu_calibration_data
|
|
integer(c_int64_t) :: gpuTime
|
|
integer(c_int64_t) :: cpuDelta
|
|
integer(c_int8_t) :: context
|
|
end type
|
|
|
|
type, bind(C) :: tracy_gpu_time_sync_data
|
|
integer(c_int64_t) :: gpuTime
|
|
integer(c_int8_t) :: context
|
|
end type
|
|
|
|
! tracy_lockable_context_data and related stuff is missed since Fortran does not have support of mutexes
|
|
|
|
!
|
|
public :: tracy_c_zone_context
|
|
!
|
|
public :: tracy_set_thread_name
|
|
contains
|
|
subroutine tracy_set_thread_name(name)
|
|
character(kind=c_char, len=*), intent(in) :: name
|
|
character(kind=c_char, len=:), allocatable, target :: alloc_name
|
|
allocate(character(kind=c_char, len=len(name) + 1) :: alloc_name)
|
|
alloc_name = name // c_null_char
|
|
call impl_tracy_set_thread_name(c_loc(alloc_name))
|
|
end subroutine tracy_set_thread_name
|
|
end module tracy
|