-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathBenchmark.h
188 lines (142 loc) · 4.7 KB
/
Benchmark.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
#ifndef BENCHMARK_H
#define BENCHMARK_H
#include <apps.h>
#include <typedefs.h>
#include <canvas.h>
#if defined(EP1) || defined(EP2)
#include <ati.h>
#endif
#define RESULT_STRING (64)
#define FLOAT_STRING (16)
extern char float_string[FLOAT_STRING];
/* CPU Benchmark */
#define TICKS_PER_SEC (8192)
#define DHRYSTONE_LOOP_RUNS (20000) /* 2000 - Import from GBA */
#define DMIPS_VAX_11_780_CONST (1757)
typedef struct {
WCHAR bogo_time[RESULT_STRING];
WCHAR bogo_mips[RESULT_STRING];
WCHAR dhrys_time[RESULT_STRING];
WCHAR dhrys_score[RESULT_STRING];
WCHAR dhrys_mips[RESULT_STRING];
} BENCHMARK_RESULTS_CPU_T;
#if defined(FTR_L7E)
#define FIX_DELAY_BMIPS
#endif
#if defined(FIX_DELAY_BMIPS)
#define delay_bmips delay_bmips_fix
#endif
extern void delay_bmips(UINT32 loops);
extern UINT32 BogoMIPS(BENCHMARK_RESULTS_CPU_T *result);
extern int Dhrystone(BENCHMARK_RESULTS_CPU_T *result);
/* GPU Benchmark */
/* Pass 1 */
#define BITMAP_WIDTH_LOW (32)
#define BITMAP_HEIGHT_LOW (24)
/* Pass 2 */
#define BITMAP_WIDTH_MID (48)
#define BITMAP_HEIGHT_MID (32)
/* Pass 3 */
#define BITMAP_WIDTH_HIGH (64)
#define BITMAP_HEIGHT_HIGH (48)
#define START_Y_COORD (220)
#define MAX_FPS_COUNT (64)
typedef struct {
BOOL is_CSTN_display;
UINT16 width;
UINT16 height;
UINT16 bmp_width;
UINT16 bmp_height;
UINT8 *p_fire;
UINT16 y_coord;
BOOL flag_restart_demo;
#if defined(EP1) || defined(EP2)
AHIDRVINFO_T *info_driver;
AHIDEVCONTEXT_T context;
AHISURFACE_T screen;
AHISURFACE_T draw;
AHISURFINFO_T info_surface_screen;
AHISURFINFO_T info_surface_draw;
AHIBITMAP_T bitmap;
AHIPOINT_T point_bitmap;
AHIRECT_T rect_bitmap;
AHIRECT_T rect_draw;
AHIUPDATEPARAMS_T update_params;
#endif // EP1 || EP2
GRAPHIC_REGION_T dal_draw_region;
} APP_AHI_T;
typedef struct {
UINT16 fps_i;
UINT16 fps_f;
} FPS_T;
typedef struct {
UINT16 size;
FPS_T values[MAX_FPS_COUNT];
} FPS_VALUES_T;
typedef struct {
WCHAR fps_pass1[RESULT_STRING];
WCHAR fms_pass1[RESULT_STRING];
WCHAR fps_pass2[RESULT_STRING];
WCHAR fms_pass2[RESULT_STRING];
WCHAR fps_pass3[RESULT_STRING];
WCHAR fms_pass3[RESULT_STRING];
WCHAR properties[RESULT_STRING * 4];
} BENCHMARK_RESULTS_GPU_T;
extern const char g_app_name[APP_NAME_LEN];
extern UINT32 ATI_Driver_Start(APP_AHI_T *ahi, WCHAR *props);
extern UINT32 ATI_Driver_Flush(APP_AHI_T *ahi);
extern UINT32 ATI_Driver_Stop(APP_AHI_T *ahi);
extern UINT32 Nvidia_Driver_Start(void);
extern UINT32 Nvidia_Driver_Flush(void* bitmap, INT32 srcW, INT32 srcH, INT32 srcX, INT32 srcY);
extern UINT32 Nvidia_Driver_Stop(APP_AHI_T *ahi);
extern UINT32 GFX_Draw_Start(APP_AHI_T *ahi);
extern UINT32 GFX_Draw_Step(APP_AHI_T *ahi);
extern UINT32 GFX_Draw_Stop(APP_AHI_T *ahi);
extern void FPS_Meter(void);
extern UINT32 CalculateAverageFpsAndTime(WCHAR *result_fps, WCHAR *result_fms);
extern UINT32 Bench_GPU_Passes(UINT32 bmp_width, UINT32 bmp_height, WCHAR *fps, WCHAR *fms, WCHAR *props);
/* RAM Benchmark */
#define RAM_TOP_BLOCKS_COUNT (6)
#define RAM_STEP_SIZE (256)
#if defined(EM1) || defined(EM2)
#define RAM_TOTAL_BLOCKS_COUNT (1024)
#else
#define RAM_TOTAL_BLOCKS_COUNT (512)
#endif
#define RAM_START_SIZE_TOTAL (RAM_STEP_SIZE * 4)
#define RAM_START_SIZE_BLOCK (RAM_STEP_SIZE * 8)
typedef struct {
WCHAR total[RESULT_STRING];
WCHAR blocks[RAM_TOP_BLOCKS_COUNT][RESULT_STRING];
} BENCHMARK_RESULTS_RAM_T;
typedef struct {
void *block_address;
UINT32 block_size;
UINT32 block_time;
} RAM_ALLOCATED_BLOCK_T;
extern UINT32 TopOfBiggestRamBlocks(BENCHMARK_RESULTS_RAM_T *result, BOOL uis);
extern UINT32 TotalRamSize(BENCHMARK_RESULTS_RAM_T *result, BOOL uis);
/* Java Heap Benchmark */
/* BUG: Is the M-CORE 7 MiB Heap patch bugged? `AmMemAllocPointer()` can only be called a few times. */
#if defined(EM1) || defined(EM2)
#define HEAP_STEP_SIZE (5591256 - 393216)
#else
#define HEAP_STEP_SIZE (4096)
#endif
#define HEAP_TOTAL_BLOCKS_COUNT (512)
#define HEAP_START_SIZE_TOTAL (HEAP_STEP_SIZE * 8)
typedef struct {
WCHAR total[RESULT_STRING];
WCHAR desc[RESULT_STRING];
} BENCHMARK_RESULTS_HEAP_T;
typedef struct {
void *block_address;
UINT32 block_size;
} HEAP_ALLOCATED_BLOCK_T;
extern UINT32 TotalHeapSize(BENCHMARK_RESULTS_HEAP_T *result);
/* Disk Benchmark */
#define MAX_VOLUMES_COUNT (5)
#define LENGTH_VOLUME_NAME (3 + 1) /* '/a/\0' */
extern UINT32 DisksResult(WCHAR *disk_result);
extern UINT32 DiskBenchmark(WCHAR *disk_result, WCHAR *disk, UINT32 addr, UINT32 c_size, UINT32 f_size);
#endif // BENCHMARK_H