// Copyright 2008 Dolphin Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include struct Statistics { int num_pixel_shaders_created; int num_pixel_shaders_alive; int num_vertex_shaders_created; int num_vertex_shaders_alive; int num_textures_created; int num_textures_uploaded; int num_textures_alive; int num_vertex_loaders; std::array proj; std::array gproj; std::array g2proj; struct ThisFrame { int num_bp_loads; int num_cp_loads; int num_xf_loads; int num_bp_loads_in_dl; int num_cp_loads_in_dl; int num_xf_loads_in_dl; int num_prims; int num_dl_prims; int num_shader_changes; int num_primitive_joins; int num_draw_calls; int num_dlists_called; int bytes_vertex_streamed; int bytes_index_streamed; int bytes_uniform_streamed; int num_triangles_clipped; int num_triangles_in; int num_triangles_rejected; int num_triangles_culled; int num_drawn_objects; int rasterized_pixels; int num_triangles_drawn; int num_vertices_loaded; int tev_pixels_in; int tev_pixels_out; int num_efb_peeks; int num_efb_pokes; }; ThisFrame this_frame; void ResetFrame(); void SwapDL(); void Display() const; void DisplayProj() const; }; extern Statistics g_stats; #define STATISTICS #ifdef STATISTICS #define INCSTAT(a) (a)++; #define ADDSTAT(a, b) (a) += (b); #define SETSTAT(a, x) (a) = (int)(x); #else #define INCSTAT(a) ; #define ADDSTAT(a, b) ; #define SETSTAT(a, x) ; #endif