SSBM Decomp
Loading...
Searching...
No Matches
perf.h
Go to the documentation of this file.
1#ifndef _DOLPHIN_PERF_H_
2#define _DOLPHIN_PERF_H_
3
4#include <dolphin/types.h>
5
6#ifdef __cplusplus
7extern "C" {
8#endif
9
10typedef u8 PERFId;
11
18
19struct Frame {
20 // total size: 0x10
21 struct PerfSample * samples; // offset 0x0, size 0x4
22 long lastSample; // offset 0x4, size 0x4
23 unsigned long end; // offset 0x8, size 0x4
24 unsigned long cachemisscycles; // offset 0xC, size 0x4
25};
26
27struct PerfEvent {
28 // total size: 0x10
29 char * name; // offset 0x0, size 0x4
30 PerfType type; // offset 0x4, size 0x4
31 long currSample; // offset 0x8, size 0x4
32 struct _GXColor color; // offset 0xC, size 0x4
33};
34
35typedef struct PerfSample {
36 /* 0x00 */ u8 id;
38 /* 0x08 */ u32 cpuTimeStampEnd;
40 /* 0x10 */ u32 gpTimeStampEnd;
41 /* 0x14 */ int interrupted;
42 /* 0x18 */ u32 origcpuStart;
43 /* 0x1C */ u32 origgpStart;
44 /* 0x20 */ u32 cacheMisses[4];
45 /* 0x30 */ u32 instructions[4];
46 /* 0x40 */ u32 cpReq[2];
47 /* 0x48 */ u32 tcReq[2];
48 /* 0x50 */ u32 cpuRdReq[2];
49 /* 0x58 */ u32 cpuWrReq[2];
50 /* 0x60 */ u32 dspReq[2];
51 /* 0x68 */ u32 ioReq[2];
52 /* 0x70 */ u32 viReq[2];
53 /* 0x78 */ u32 peReq[2];
54 /* 0x80 */ u32 rfReq[2];
55 /* 0x88 */ u32 fiReq[2];
56 /* 0x90 */ u32 xfWaitIn[2];
57 /* 0x98 */ u32 xfWaitOut[2];
58 /* 0xA0 */ u32 rasBusy[2];
59 /* 0xA8 */ u32 rasClocks[2];
61
62typedef void *(*PERFAllocator)(u32 size);
63typedef void (*PERFDeallocator)(void *block);
64typedef void (*PERFDrawCallback)(void);
65
66extern void (* GameDrawInit)(); // size: 0x4, address: 0x14
67
68u32 PERFInit(u32 numSamples, u32 numFramesHistory, u32 numTypes,
69 PERFAllocator allocator, PERFDeallocator deallocator, PERFDrawCallback initDraw);
72void PERFSetEvent(PERFId id, char *name, PerfType type);
73void PERFStartFrame(void);
74void PERFEndFrame(void);
75void PERFStartAutoSampling(f32 msInterval);
77
82void PERFSetDrawBWBar(int tf);
83void PERFSetDrawCPUBar(int tf);
84void PERFSetDrawXFBars(int tf);
85void PERFSetDrawRASBar(int tf);
91
92extern struct Frame * PERFFrames; // size: 0x4, address: 0x0
93extern unsigned long PERFCurrFrame; // size: 0x4, address: 0x0
94extern struct PerfEvent * PERFEvents; // size: 0x4, address: 0x0
95
96#ifdef __cplusplus
97}
98#endif
99
100#endif
void PERFEventStart(PERFId id)
u8 PERFId
Definition perf.h:10
void PERFStopAutoSampling(void)
void(* GameDrawInit)()
void PERFToggleDrawBWBarKey()
void PERFToggleDrawBWBar()
PerfType
Definition perf.h:13
@ PERF_CPU_EVENT
Definition perf.h:14
@ PERF_CPU_GP_EVENT
Definition perf.h:15
@ PERF_GP_EVENT
Definition perf.h:16
u32 PERFInit(u32 numSamples, u32 numFramesHistory, u32 numTypes, PERFAllocator allocator, PERFDeallocator deallocator, PERFDrawCallback initDraw)
void PERFToggleDrawXFBars()
void PERFStartAutoSampling(f32 msInterval)
void PERFToggleDrawCPUBar()
void(* PERFDrawCallback)(void)
Definition perf.h:64
struct Frame * PERFFrames
void PERFSetDrawBWBarKey(int tf)
void PERFDumpScreen()
unsigned long PERFCurrFrame
void PERFPostDraw()
void PERFStartFrame(void)
void PERFSetDrawXFBars(int tf)
void PERFSetDrawBWBar(int tf)
struct PerfEvent * PERFEvents
void PERFToggleDrawRASBar()
void PERFPreDraw()
void PERFSetDrawRASBar(int tf)
void *(* PERFAllocator)(u32 size)
Definition perf.h:62
void PERFEndFrame(void)
void PERFEventEnd(PERFId id)
void PERFSetEvent(PERFId id, char *name, PerfType type)
void PERFSetDrawCPUBar(int tf)
void(* PERFDeallocator)(void *block)
Definition perf.h:63
unsigned long u32
Definition types.h:9
float f32
Definition types.h:13
unsigned char u8
Definition hsd_3B2B.h:2
Definition perf.h:19
long lastSample
Definition perf.h:22
unsigned long end
Definition perf.h:23
unsigned long cachemisscycles
Definition perf.h:24
struct PerfSample * samples
Definition perf.h:21
Definition perf.h:27
long currSample
Definition perf.h:31
struct _GXColor color
Definition perf.h:32
PerfType type
Definition perf.h:30
char * name
Definition perf.h:29
Definition perf.h:35
u32 rasBusy[2]
Definition perf.h:58
u32 tcReq[2]
Definition perf.h:47
u32 viReq[2]
Definition perf.h:52
u32 xfWaitOut[2]
Definition perf.h:57
u32 origgpStart
Definition perf.h:43
u32 rasClocks[2]
Definition perf.h:59
u32 cpuTimeStampStart
Definition perf.h:37
u32 rfReq[2]
Definition perf.h:54
u32 dspReq[2]
Definition perf.h:50
u32 cpuTimeStampEnd
Definition perf.h:38
u32 xfWaitIn[2]
Definition perf.h:56
u32 cpuRdReq[2]
Definition perf.h:48
u32 peReq[2]
Definition perf.h:53
u32 gpTimeStampEnd
Definition perf.h:40
u32 fiReq[2]
Definition perf.h:55
u32 gpTimeStampStart
Definition perf.h:39
u32 cpuWrReq[2]
Definition perf.h:49
u32 ioReq[2]
Definition perf.h:51
u8 id
Definition perf.h:36
u32 instructions[4]
Definition perf.h:45
u32 cpReq[2]
Definition perf.h:46
int interrupted
Definition perf.h:41
u32 cacheMisses[4]
Definition perf.h:44
u32 origcpuStart
Definition perf.h:42