13 static const char *pcnt_names[PCNT_CNT] = { "", "gpu", "spu", "blit", "test" };
15 #define PCNT_FRAMES 10
17 extern unsigned int pcounters[PCNT_CNT];
18 extern unsigned int pcounter_starts[PCNT_CNT];
20 #define pcnt_start(id) \
21 pcounter_starts[id] = pcnt_get()
23 #define pcnt_end(id) \
24 pcounters[id] += pcnt_get() - pcounter_starts[id]
26 void pcnt_hook_plugins(void);
28 static inline void pcnt_print(float fps)
30 static int print_counter;
31 unsigned int total, rem;
34 for (i = 0; i < PCNT_CNT; i++)
35 pcounters[i] /= 1000 * PCNT_FRAMES;
37 rem = total = pcounters[PCNT_ALL];
38 for (i = 1; i < PCNT_CNT; i++)
43 if (--print_counter < 0) {
45 for (i = 1; i < PCNT_CNT; i++)
46 printf("%5s ", pcnt_names[i]);
47 printf("%5s\n", "rem");
51 printf("%4.1f ", fps);
52 for (i = 1; i < PCNT_CNT; i++)
53 printf("%5u ", pcounters[i]);
55 for (i = 1; i < PCNT_CNT; i++)
56 printf("%2u ", pcounters[i] * 100 / total);
57 printf("%2u) %u\n", rem * 100 / total, total);
59 memset(pcounters, 0, sizeof(pcounters));
62 static inline unsigned int pcnt_get(void)
65 #ifdef __ARM_ARCH_7A__
66 __asm__ volatile("mrc p15, 0, %0, c9, c13, 0"
76 #define pcnt_start(id)
78 #define pcnt_hook_plugins()
79 #define pcnt_print(fps)