replace VG_STATIC -> static
[vg.git] / vg_profiler.h
index c8db76dab3c7ad8bfcf3322eeec37e2e0659e3a3..67808a7a6d42d898f42e747d0be49f0a4528b8aa 100644 (file)
@@ -13,8 +13,8 @@ struct vg_profile
 {
    const char *name;
 
-   float samples[ VG_PROFILE_SAMPLE_COUNT ];
-   u32   buffer_count, buffer_current;
+   u64    samples[ VG_PROFILE_SAMPLE_COUNT ];
+   u32    buffer_count, buffer_current;
 
    enum profile_mode
    {
@@ -26,12 +26,12 @@ struct vg_profile
    u64 start;
 };
 
-VG_STATIC void vg_profile_begin( struct vg_profile *profile )
+static void vg_profile_begin( struct vg_profile *profile )
 {
    profile->start = SDL_GetPerformanceCounter();
 }
 
-VG_STATIC void vg_profile_increment( struct vg_profile *profile )
+static void vg_profile_increment( struct vg_profile *profile )
 {
    profile->buffer_current ++;
 
@@ -41,32 +41,24 @@ VG_STATIC void vg_profile_increment( struct vg_profile *profile )
    if( profile->buffer_current >= VG_PROFILE_SAMPLE_COUNT )
       profile->buffer_current = 0;
 
-   profile->samples[ profile->buffer_current ] = 0.0f;
+   profile->samples[ profile->buffer_current ] = 0;
 }
 
-VG_STATIC void vg_profile_end( struct vg_profile *profile )
+static void vg_profile_end( struct vg_profile *profile )
 {
    u64 time_end = SDL_GetPerformanceCounter(),
        delta    = time_end - profile->start;
 
-   if( profile->mode == k_profile_mode_frame )
-   {
-      profile->samples[ profile->buffer_current ] = (float)delta;
+   if( profile->mode == k_profile_mode_frame ){
+      profile->samples[ profile->buffer_current ] = delta;
       vg_profile_increment( profile );
    }
-   else
-   {
+   else{
       profile->samples[ profile->buffer_current ] += delta;
    }
 }
 
-VG_STATIC void vg_profile_graph_sample( struct vg_profile *profile, float s )
-{
-   profile->samples[ profile->buffer_current ] = s;
-   vg_profile_increment( profile );
-}
-
-VG_STATIC void vg_profile_drawn( struct vg_profile **profiles, u32 count,
+static void vg_profile_drawn( struct vg_profile **profiles, u32 count,
                               float budget, ui_rect panel, u32 colour_offset )
 {
    if( !vg_profiler )
@@ -81,14 +73,13 @@ VG_STATIC void vg_profile_drawn( struct vg_profile **profiles, u32 count,
    float sh = panel[3] / VG_PROFILE_SAMPLE_COUNT,
          sw = panel[2];
 
-   ui_fill_rect( panel, 0xa0000000 );
+   ui_fill( panel, 0xa0000000 );
 
    assert( count <= 8 );
-   float avgs[8];
-   int   ptrs[8];
+   double avgs[8];
+   int    ptrs[8];
 
-   for( int i=0; i<count; i++ )
-   {
+   for( int i=0; i<count; i++ ){
       ptrs[i] = profiles[i]->buffer_current;
       avgs[i] = 0.0f;
    }
@@ -96,28 +87,26 @@ VG_STATIC void vg_profile_drawn( struct vg_profile **profiles, u32 count,
    u32 colours[] = { 0xff0000ff, 0xff00ff00, 0xff00ffff, 0xffff0000,
                      0xffff00ff, 0xffffff00 };
 
-   float rate_mul = 1000.0f / (float)SDL_GetPerformanceFrequency();
+   double rate_mul = 1000.0 / (double)SDL_GetPerformanceFrequency();
 
-   for( int i=0; i<VG_PROFILE_SAMPLE_COUNT-1; i++ )
-   {
-      float total = 0.0f;
+   for( int i=0; i<VG_PROFILE_SAMPLE_COUNT-1; i++ ){
+      double total = 0.0;
 
-      for( int j=0; j<count; j++ )
-      {
+      for( int j=0; j<count; j++ ){
          ptrs[j] --;
 
          if( ptrs[j] < 0 )
             ptrs[j] = VG_PROFILE_SAMPLE_COUNT-1;
 
-         float sample  = profiles[j]->samples[ptrs[j]] * rate_mul,
-               px      = (total  / (budget)) * sw,
-               wx      = (sample / (budget)) * sw;
+         double sample  = (double)profiles[j]->samples[ptrs[j]] * rate_mul,
+                px      = (total  / (budget)) * sw,
+                wx      = (sample / (budget)) * sw;
 
          ui_rect block = { panel[0] + px, panel[1] + (float)i*sh,
                            wx,            sh };
 
          u32 colour = colours[ (j+colour_offset) % vg_list_size(colours) ];
-         ui_fill_rect( block, colour );
+         ui_fill( block, colour );
 
          total += sample;
          avgs[j] += sample;
@@ -126,8 +115,14 @@ VG_STATIC void vg_profile_drawn( struct vg_profile **profiles, u32 count,
 
    char infbuf[64];
 
-   for( int i=0; i<count; i++ )
-   {
+   snprintf( infbuf, 64, "accuracy: %.7fms", rate_mul );
+   ui_text( (ui_rect){ panel[0] + 4,
+                       panel[1] + 0 * 14, 500, 30 }, 
+                       infbuf,
+                       1,
+                       k_ui_align_left, 0 );
+
+   for( int i=0; i<count; i++ ){
       snprintf( infbuf, 64, "%.4fms %s", 
                         avgs[i] * (1.0f/(VG_PROFILE_SAMPLE_COUNT-1)),
                         profiles[i]->name );
@@ -136,19 +131,13 @@ VG_STATIC void vg_profile_drawn( struct vg_profile **profiles, u32 count,
                           panel[1] + i * 14, 0, 0 }, 
                           infbuf,
                           1,
-                          k_text_align_left );
+                          k_ui_align_left, 0 );
    }
 }
 
-VG_STATIC void vg_profiler_init(void)
+static void vg_profiler_init(void)
 {
-   vg_var_push( (struct vg_var){
-      .name = "vg_profiler",
-      .data = &vg_profiler,
-      .data_type = k_var_dtype_i32,
-      .opt_i32 = { .min=0, .max=1, .clamp=1 },
-      .persistent = 1
-   });
+   VG_VAR_I32( vg_profiler, flags=VG_VAR_PERSISTENT );
 }
 
 #endif /* VG_PROFILER_H */