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 ++;
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;
}
}
-VG_STATIC void vg_profile_drawn( struct vg_profile **profiles, u32 count,
- float budget, ui_rect panel, u32 colour_offset )
+static void vg_profile_drawn( struct vg_profile **profiles, u32 count,
+ float budget, ui_rect panel, u32 colour_offset,
+ int dir )
{
- if( !vg_profiler )
- return;
-
if( panel[2] == 0 )
panel[2] = 256;
if( panel[3] == 0 )
panel[3] = VG_PROFILE_SAMPLE_COUNT * 2;
- float sh = panel[3] / VG_PROFILE_SAMPLE_COUNT,
- sw = panel[2];
+ f32 sh = (f32)panel[3^dir] / (f32)VG_PROFILE_SAMPLE_COUNT,
+ sw = (f32)panel[2^dir];
- ui_fill_rect( panel, 0xa0000000 );
+ ui_fill( panel, 0xa0000000 );
assert( count <= 8 );
- double avgs[8];
- int ptrs[8];
+ f64 avgs[8];
+ int ptrs[8];
for( int i=0; i<count; i++ ){
+#if 0
ptrs[i] = profiles[i]->buffer_current;
+#else
+ ptrs[i] = 0;
+#endif
avgs[i] = 0.0f;
}
u32 colours[] = { 0xff0000ff, 0xff00ff00, 0xff00ffff, 0xffff0000,
0xffff00ff, 0xffffff00 };
- double rate_mul = 1000.0 / (double)SDL_GetPerformanceFrequency();
+ f64 rate_mul = 1000.0 / (f64)SDL_GetPerformanceFrequency();
for( int i=0; i<VG_PROFILE_SAMPLE_COUNT-1; i++ ){
- double total = 0.0;
+ f64 total = 0.0;
for( int j=0; j<count; j++ ){
+#if 0
ptrs[j] --;
if( ptrs[j] < 0 )
ptrs[j] = VG_PROFILE_SAMPLE_COUNT-1;
+#else
+ ptrs[j] ++;
+#endif
- double sample = (double)profiles[j]->samples[ptrs[j]] * rate_mul,
- px = (total / (budget)) * sw,
- wx = (sample / (budget)) * sw;
+ f64 sample = (f64)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 };
+ ui_rect block;
+ block[0^dir] = panel[0^dir] + px;
+ block[1^dir] = panel[1^dir] + (f32)i*sh;
+ block[2^dir] = wx;
+ block[3^dir] = ceilf(sh)-1;
u32 colour = colours[ (j+colour_offset) % vg_list_size(colours) ];
- ui_fill_rect( block, colour );
+ ui_fill( block, colour );
total += sample;
avgs[j] += sample;
snprintf( infbuf, 64, "accuracy: %.7fms", rate_mul );
ui_text( (ui_rect){ panel[0] + 4,
- panel[1] + 0 * 14, 0, 0 },
+ panel[1] + panel[3] - 14, 500, 30 },
infbuf,
1,
- k_text_align_left );
+ k_ui_align_left, 0 );
for( int i=0; i<count; i++ ){
snprintf( infbuf, 64, "%.4fms %s",
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_I32( vg_profiler, flags=VG_VAR_PERSISTENT );
}