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
17
18struct Frame {
19 // total size: 0x10
20 struct PerfSample* samples; // offset 0x0, size 0x4
21 long lastSample; // offset 0x4, size 0x4
22 unsigned long end; // offset 0x8, size 0x4
23 unsigned long cachemisscycles; // offset 0xC, size 0x4
24};
25
26struct PerfEvent {
27 // total size: 0x10
28 char* name; // offset 0x0, size 0x4
29 PerfType type; // offset 0x4, size 0x4
30 long currSample; // offset 0x8, size 0x4
31 struct _GXColor color; // offset 0xC, size 0x4
32};
33
34typedef struct PerfSample {
35 /* 0x00 */ u8 id;
37 /* 0x08 */ u32 cpuTimeStampEnd;
39 /* 0x10 */ u32 gpTimeStampEnd;
40 /* 0x14 */ int interrupted;
41 /* 0x18 */ u32 origcpuStart;
42 /* 0x1C */ u32 origgpStart;
43 /* 0x20 */ u32 cacheMisses[4];
44 /* 0x30 */ u32 instructions[4];
45 /* 0x40 */ u32 cpReq[2];
46 /* 0x48 */ u32 tcReq[2];
47 /* 0x50 */ u32 cpuRdReq[2];
48 /* 0x58 */ u32 cpuWrReq[2];
49 /* 0x60 */ u32 dspReq[2];
50 /* 0x68 */ u32 ioReq[2];
51 /* 0x70 */ u32 viReq[2];
52 /* 0x78 */ u32 peReq[2];
53 /* 0x80 */ u32 rfReq[2];
54 /* 0x88 */ u32 fiReq[2];
55 /* 0x90 */ u32 xfWaitIn[2];
56 /* 0x98 */ u32 xfWaitOut[2];
57 /* 0xA0 */ u32 rasBusy[2];
58 /* 0xA8 */ u32 rasClocks[2];
60
61typedef void* (*PERFAllocator)(u32 size);
62typedef void (*PERFDeallocator)(void* block);
63typedef void (*PERFDrawCallback)(void);
64
65extern void (*GameDrawInit)(); // size: 0x4, address: 0x14
66
67u32 PERFInit(u32 numSamples, u32 numFramesHistory, u32 numTypes,
68 PERFAllocator allocator, PERFDeallocator deallocator,
69 PERFDrawCallback initDraw);
70void PERFEventStart(PERFId id);
71void PERFEventEnd(PERFId id);
72void PERFSetEvent(PERFId id, char* name, PerfType type);
73void PERFStartFrame(void);
74void PERFEndFrame(void);
75void PERFStartAutoSampling(f32 msInterval);
76void PERFStopAutoSampling(void);
77
78void PERFPreDraw();
79void PERFDumpScreen();
80void PERFPostDraw();
81void PERFSetDrawBWBarKey(int tf);
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
size_t size
Definition __os.h:98
void PERFEventStart(PERFId id)
Definition perf.c:303
u8 PERFId
Definition perf.h:10
void PERFStopAutoSampling(void)
Definition perf.c:487
void(* GameDrawInit)()
Definition perfdraw.c:110
void PERFToggleDrawBWBarKey()
Definition perfdraw.c:699
void PERFToggleDrawBWBar()
Definition perfdraw.c:704
PerfType
Definition perf.h:12
@ PERF_CPU_EVENT
Definition perf.h:13
@ PERF_CPU_GP_EVENT
Definition perf.h:14
@ PERF_GP_EVENT
Definition perf.h:15
u32 PERFInit(u32 numSamples, u32 numFramesHistory, u32 numTypes, PERFAllocator allocator, PERFDeallocator deallocator, PERFDrawCallback initDraw)
void PERFToggleDrawXFBars()
Definition perfdraw.c:714
void PERFStartAutoSampling(f32 msInterval)
Definition perf.c:480
void PERFToggleDrawCPUBar()
Definition perfdraw.c:709
void(* PERFDrawCallback)(void)
Definition perf.h:63
struct Frame * PERFFrames
Definition perf.c:26
void PERFSetDrawBWBarKey(int tf)
Definition perfdraw.c:674
void PERFDumpScreen()
Definition perfdraw.c:414
unsigned long PERFCurrFrame
Definition perf.c:28
void PERFPostDraw()
Definition perfdraw.c:653
void PERFStartFrame(void)
Definition perf.c:259
void PERFSetDrawXFBars(int tf)
Definition perfdraw.c:689
void PERFSetDrawBWBar(int tf)
Definition perfdraw.c:679
struct PerfEvent * PERFEvents
Definition perf.c:27
void PERFToggleDrawRASBar()
Definition perfdraw.c:719
void PERFPreDraw()
Definition perfdraw.c:150
void PERFSetDrawRASBar(int tf)
Definition perfdraw.c:694
void *(* PERFAllocator)(u32 size)
Definition perf.h:61
void PERFEndFrame(void)
Definition perf.c:279
void PERFEventEnd(PERFId id)
Definition perf.c:369
void PERFSetEvent(PERFId id, char *name, PerfType type)
Definition perf.c:244
void PERFSetDrawCPUBar(int tf)
Definition perfdraw.c:684
void(* PERFDeallocator)(void *block)
Definition perf.h:62
unsigned int u32
Definition types.h:13
float f32
Definition types.h:18
unsigned char u8
Definition types.h:5
Definition perf.h:18
long lastSample
Definition perf.h:21
unsigned long end
Definition perf.h:22
unsigned long cachemisscycles
Definition perf.h:23
struct PerfSample * samples
Definition perf.h:20
Definition perf.h:26
long currSample
Definition perf.h:30
struct _GXColor color
Definition perf.h:31
PerfType type
Definition perf.h:29
char * name
Definition perf.h:28
Definition perf.h:34
u32 rasBusy[2]
Definition perf.h:57
u32 tcReq[2]
Definition perf.h:46
u32 viReq[2]
Definition perf.h:51
u32 xfWaitOut[2]
Definition perf.h:56
u32 origgpStart
Definition perf.h:42
u32 rasClocks[2]
Definition perf.h:58
u32 cpuTimeStampStart
Definition perf.h:36
u32 rfReq[2]
Definition perf.h:53
u32 dspReq[2]
Definition perf.h:49
u32 cpuTimeStampEnd
Definition perf.h:37
u32 xfWaitIn[2]
Definition perf.h:55
u32 cpuRdReq[2]
Definition perf.h:47
u32 peReq[2]
Definition perf.h:52
u32 gpTimeStampEnd
Definition perf.h:39
u32 fiReq[2]
Definition perf.h:54
u32 gpTimeStampStart
Definition perf.h:38
u32 cpuWrReq[2]
Definition perf.h:48
u32 ioReq[2]
Definition perf.h:50
u8 id
Definition perf.h:35
u32 instructions[4]
Definition perf.h:44
u32 cpReq[2]
Definition perf.h:45
int interrupted
Definition perf.h:40
u32 cacheMisses[4]
Definition perf.h:43
u32 origcpuStart
Definition perf.h:41