projects
/
vg.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
labs work
[vg.git]
/
vg_profiler.h
diff --git
a/vg_profiler.h
b/vg_profiler.h
index d0106af5d7eef89c6ffd3503d8715853aa1faf47..699e2a72eadfdacac40abac419c53737554c34dd 100644
(file)
--- a/
vg_profiler.h
+++ b/
vg_profiler.h
@@
-59,8
+59,8
@@
static void vg_profile_end( struct vg_profile *profile )
}
static void vg_profile_drawn( struct vg_profile **profiles, u32 count,
}
static void vg_profile_drawn( struct vg_profile **profiles, u32 count,
- f
loat budget, ui_rect panel, u32 colour_offset
,
- int dir )
+ f
64 budget, ui_rect panel
,
+ int dir
, i32 normalize
)
{
if( panel[2] == 0 )
panel[2] = 256;
{
if( panel[2] == 0 )
panel[2] = 256;
@@
-68,54
+68,41
@@
static void vg_profile_drawn( struct vg_profile **profiles, u32 count,
if( panel[3] == 0 )
panel[3] = VG_PROFILE_SAMPLE_COUNT * 2;
if( panel[3] == 0 )
panel[3] = VG_PROFILE_SAMPLE_COUNT * 2;
- f
32
sh = (f32)panel[3^dir] / (f32)VG_PROFILE_SAMPLE_COUNT,
+ f
64
sh = (f32)panel[3^dir] / (f32)VG_PROFILE_SAMPLE_COUNT,
sw = (f32)panel[2^dir];
ui_fill( panel, 0xa0000000 );
assert( count <= 8 );
f64 avgs[8];
sw = (f32)panel[2^dir];
ui_fill( panel, 0xa0000000 );
assert( count <= 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[8];
+ for( u32 i=0; i<count; i ++ ){
+ avgs[i] = 0.0;
+ colours[i] = ui_colour( k_ui_red + ((i*3)&0xe) );
}
}
- u32 colours[] = { 0xff0000ff, 0xff00ff00, 0xff00ffff, 0xffff0000,
- 0xffff00ff, 0xffffff00 };
-
f64 rate_mul = 1000.0 / (f64)SDL_GetPerformanceFrequency();
f64 rate_mul = 1000.0 / (f64)SDL_GetPerformanceFrequency();
- for( i
nt i=0; i<VG_PROFILE_SAMPLE_COUNT-1
; i++ ){
+ for( i
32 i=0; i<VG_PROFILE_SAMPLE_COUNT
; i++ ){
f64 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
+ if( normalize ){
+ budget = 0.0;
+ for( u32 j=0; j<count; j++ )
+ budget += (f64)profiles[j]->samples[i] * rate_mul;
+ }
- f64 sample = (f64)profiles[j]->samples[ptrs[j]] * rate_mul,
- px = (total / (budget)) * sw,
- wx = (sample / (budget)) * sw;
+ for( int j=0; j<count; j++ ){
+ f64 sample = (f64)profiles[j]->samples[i] * rate_mul,
+ px = (total / budget) * sw,
+ wx = (sample / budget) * sw;
ui_rect block;
block[0^dir] = panel[0^dir] + px;
block[1^dir] = panel[1^dir] + (f32)i*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[2^dir] =
VG_MAX( 1, wx-1 )
;
block[3^dir] = ceilf(sh)-1;
block[3^dir] = ceilf(sh)-1;
-
- u32 colour = colours[ (j+colour_offset) % vg_list_size(colours) ];
- ui_fill( block, colour );
+ ui_fill( block, colours[j] );
total += sample;
avgs[j] += sample;
total += sample;
avgs[j] += sample;
@@
-136,11
+123,10
@@
static void vg_profile_drawn( struct vg_profile **profiles, u32 count,
avgs[i] * (1.0f/(VG_PROFILE_SAMPLE_COUNT-1)),
profiles[i]->name );
avgs[i] * (1.0f/(VG_PROFILE_SAMPLE_COUNT-1)),
profiles[i]->name );
- ui_text( (ui_rect){ panel[0] + panel[2] + 4,
- panel[1] + i * 14, 0, 0 },
- infbuf,
- 1,
- k_ui_align_left, 0 );
+ ui_text( (ui_rect){ panel[0] + 4,
+ panel[1] + panel[3] + 4 + i*14,
+ panel[2]-8, 14 },
+ infbuf, 1, k_ui_align_left, 0 );
}
}
}
}