diff --git a/performance.c b/performance.c index 146e89c055..3f41512652 100644 --- a/performance.c +++ b/performance.c @@ -141,6 +141,13 @@ void retro_perf_log(void) log_counters(perf_counters_libretro, perf_ptr_libretro); } +/** + * rarch_get_perf_counter: + * + * Gets performance counter. + * + * Returns: performance counter. + **/ retro_perf_tick_t rarch_get_perf_counter(void) { retro_perf_tick_t time_ticks = 0; @@ -193,6 +200,13 @@ retro_perf_tick_t rarch_get_perf_counter(void) return time_ticks; } +/** + * rarch_get_time_usec: + * + * Gets time in microseconds. + * + * Returns: time in microseconds. + **/ retro_time_t rarch_get_time_usec(void) { #if defined(_WIN32) @@ -311,6 +325,13 @@ static void arm_enable_runfast_mode(void) } #endif +/** + * rarch_get_cpu_cores: + * + * Gets the amount of available CPU cores. + * + * Returns: amount of CPU cores available. + **/ unsigned rarch_get_cpu_cores(void) { #if defined(_WIN32) && !defined(_XBOX) @@ -354,6 +375,13 @@ unsigned rarch_get_cpu_cores(void) #endif } +/** + * rarch_get_cpu_features: + * + * Gets CPU features.. + * + * Returns: bitmask of all CPU features available. + **/ uint64_t rarch_get_cpu_features(void) { uint64_t cpu = 0; diff --git a/performance.h b/performance.h index 3d959625b3..f47a87231b 100644 --- a/performance.h +++ b/performance.h @@ -17,27 +17,55 @@ #ifndef _RARCH_PERF_H #define _RARCH_PERF_H +#include "general.h" + +#ifdef __cplusplus +extern "C" { +#endif + #ifdef _WIN32 #define PERF_LOG_FMT "[PERF]: Avg (%s): %I64u ticks, %I64u runs.\n" #else #define PERF_LOG_FMT "[PERF]: Avg (%s): %llu ticks, %llu runs.\n" #endif -#ifdef __cplusplus -extern "C" { -#endif +/* Used internally by RetroArch. */ +#define RARCH_PERFORMANCE_INIT(X) \ + static struct retro_perf_counter X = {#X}; \ + do { \ + if (!(X).registered) \ + rarch_perf_register(&(X)); \ + } while(0) -#include "general.h" +#define RARCH_PERFORMANCE_START(X) rarch_perf_start(&(X)) +#define RARCH_PERFORMANCE_STOP(X) rarch_perf_stop(&(X)) +#ifndef MAX_COUNTERS #define MAX_COUNTERS 64 +#endif extern const struct retro_perf_counter *perf_counters_rarch[MAX_COUNTERS]; extern const struct retro_perf_counter *perf_counters_libretro[MAX_COUNTERS]; extern unsigned perf_ptr_rarch; extern unsigned perf_ptr_libretro; + +/** + * rarch_get_perf_counter: + * + * Gets performance counter. + * + * Returns: performance counter. + **/ retro_perf_tick_t rarch_get_perf_counter(void); +/** + * rarch_get_time_usec: + * + * Gets time in microseconds. + * + * Returns: time in microseconds. + **/ retro_time_t rarch_get_time_usec(void); void rarch_perf_register(struct retro_perf_counter *perf); @@ -51,34 +79,53 @@ void rarch_perf_log(void); void retro_perf_log(void); +/** + * rarch_perf_start: + * @perf : pointer to performance counter + * + * Start performance counter. + **/ static inline void rarch_perf_start(struct retro_perf_counter *perf) { - if (g_extern.perfcnt_enable) - { - perf->call_cnt++; - perf->start = rarch_get_perf_counter(); - } + if (!g_extern.perfcnt_enable || !perf) + return; + + perf->call_cnt++; + perf->start = rarch_get_perf_counter(); } +/** + * rarch_perf_stop: + * @perf : pointer to performance counter + * + * Stop performance counter. + **/ static inline void rarch_perf_stop(struct retro_perf_counter *perf) { - if (g_extern.perfcnt_enable) - perf->total += rarch_get_perf_counter() - perf->start; + if (!g_extern.perfcnt_enable || !perf) + return; + + perf->total += rarch_get_perf_counter() - perf->start; } +/** + * rarch_get_cpu_features: + * + * Gets CPU features.. + * + * Returns: bitmask of all CPU features available. + **/ uint64_t rarch_get_cpu_features(void); + +/** + * rarch_get_cpu_cores: + * + * Gets the amount of available CPU cores. + * + * Returns: amount of CPU cores available. + **/ unsigned rarch_get_cpu_cores(void); -/* Used internally by RetroArch. */ -#define RARCH_PERFORMANCE_INIT(X) \ - static struct retro_perf_counter X = {#X}; \ - do { \ - if (!(X).registered) \ - rarch_perf_register(&(X)); \ - } while(0) - -#define RARCH_PERFORMANCE_START(X) rarch_perf_start(&(X)) -#define RARCH_PERFORMANCE_STOP(X) rarch_perf_stop(&(X)) #ifdef __cplusplus }