simplify gitignore
[vg.git] / src / vg / vg_profiler.h
index 6c9530c07dc36cc7ce298aa9313136a4598d9275..87de34f53dae041f4a9be1dd465c656c9ef3f222 100644 (file)
@@ -1,7 +1,6 @@
 #ifndef VG_PROFILER_H
 #define VG_PROFILER_H
 
-#include <alloca.h>
 #include "vg_platform.h"
 
 #define VG_PROFILE_SAMPLE_COUNT 128
@@ -25,12 +24,12 @@ struct vg_profile
    struct timespec start;
 };
 
-static void vg_profile_begin( struct vg_profile *profile )
+VG_STATIC void vg_profile_begin( struct vg_profile *profile )
 {
    clock_gettime( CLOCK_REALTIME, &profile->start );
 }
 
-static void vg_profile_increment( struct vg_profile *profile )
+VG_STATIC void vg_profile_increment( struct vg_profile *profile )
 {
    profile->buffer_current ++;
 
@@ -43,7 +42,7 @@ static void vg_profile_increment( struct vg_profile *profile )
    profile->samples[ profile->buffer_current ] = 0.0f;
 }
 
-static void vg_profile_end( struct vg_profile *profile )
+VG_STATIC void vg_profile_end( struct vg_profile *profile )
 {
    struct timespec time_end;
 
@@ -62,7 +61,7 @@ static void vg_profile_end( struct vg_profile *profile )
    }
 }
 
-static void vg_profile_drawn( struct vg_profile **profiles, u32 count,
+VG_STATIC void vg_profile_drawn( struct vg_profile **profiles, u32 count,
                               float budget, ui_rect panel, u32 colour_offset )
 {
    if( !vg_profiler )
@@ -77,8 +76,11 @@ static void vg_profile_drawn( struct vg_profile **profiles, u32 count,
    float sh = panel[3] / VG_PROFILE_SAMPLE_COUNT,
          sw = panel[2];
 
-   float *avgs = alloca( count * sizeof(float) );
-   int   *ptrs = alloca( count * sizeof(int) );
+   ui_fill_rect( panel, 0xa0000000 );
+
+   assert( count <= 8 );
+   float avgs[8];
+   int   ptrs[8];
 
    for( int i=0; i<count; i++ )
    {
@@ -101,14 +103,14 @@ static void vg_profile_drawn( struct vg_profile **profiles, u32 count,
             ptrs[j] = VG_PROFILE_SAMPLE_COUNT-1;
 
          float sample  = profiles[j]->samples[ptrs[j]],
-               px      = (total  / (budget*0.25f)) * sw,
-               wx      = (sample / (budget*0.25f)) * sw;
+               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( &ui_global_ctx, block, colour );
+         ui_fill_rect( block, colour );
 
          total += sample;
          avgs[j] += sample;
@@ -119,19 +121,19 @@ static void vg_profile_drawn( struct vg_profile **profiles, u32 count,
 
    for( int i=0; i<count; i++ )
    {
-      snprintf( infbuf, 64, "%.1fms %s", 
+      snprintf( infbuf, 64, "%.4fms %s", 
                         avgs[i] * (1.0f/(VG_PROFILE_SAMPLE_COUNT-1)),
                         profiles[i]->name );
 
-      ui_text( &ui_global_ctx, (ui_rect){ panel[0] + panel[2] + 4,
-                                          panel[1] + i * 14, 0, 0 }, 
-                                          infbuf,
-                                          1,
-                                          k_text_align_left );
+      ui_text( (ui_rect){ panel[0] + panel[2] + 4,
+                          panel[1] + i * 14, 0, 0 }, 
+                          infbuf,
+                          1,
+                          k_text_align_left );
    }
 }
 
-static void vg_profiler_init(void)
+VG_STATIC void vg_profiler_init(void)
 {
    vg_convar_push( (struct vg_convar){
       .name = "vg_profiler",