diff options
| author | Keith Whitwell <keithw@vmware.com> | 2010-08-20 15:45:25 +0100 | 
|---|---|---|
| committer | Keith Whitwell <keithw@vmware.com> | 2010-08-25 10:29:27 +0100 | 
| commit | 98f3ff8f4a761d579ee9b42ee3090635519213a5 (patch) | |
| tree | 7962c36d0141eced4f37b0ad206d6b08af1a1dbc /src | |
| parent | 5a45e53df4419fde1fe7696f3a9459893363f7c5 (diff) | |
llvmpipe: more rasterization counters
Diffstat (limited to 'src')
| -rw-r--r-- | src/gallium/drivers/llvmpipe/lp_perf.c | 21 | ||||
| -rw-r--r-- | src/gallium/drivers/llvmpipe/lp_perf.h | 7 | ||||
| -rw-r--r-- | src/gallium/drivers/llvmpipe/lp_rast_tri_tmp.h | 7 | 
3 files changed, 29 insertions, 6 deletions
| diff --git a/src/gallium/drivers/llvmpipe/lp_perf.c b/src/gallium/drivers/llvmpipe/lp_perf.c index 083e7e30a5..e22532f25c 100644 --- a/src/gallium/drivers/llvmpipe/lp_perf.c +++ b/src/gallium/drivers/llvmpipe/lp_perf.c @@ -46,7 +46,7 @@ lp_print_counters(void)  {     if (LP_DEBUG & DEBUG_COUNTERS) {        unsigned total_64, total_16, total_4; -      float p1, p2, p3, p4; +      float p1, p2, p3, p5, p6;        debug_printf("llvmpipe: nr_triangles:                 %9u\n", lp_count.nr_tris);        debug_printf("llvmpipe: nr_culled_triangles:          %9u\n", lp_count.nr_culled_tris); @@ -58,11 +58,15 @@ lp_print_counters(void)        p1 = 100.0 * (float) lp_count.nr_empty_64 / (float) total_64;        p2 = 100.0 * (float) lp_count.nr_fully_covered_64 / (float) total_64;        p3 = 100.0 * (float) lp_count.nr_partially_covered_64 / (float) total_64; -      p4 = 100.0 * (float) lp_count.nr_shade_opaque_64 / (float) total_64; +      p5 = 100.0 * (float) lp_count.nr_shade_opaque_64 / (float) total_64; +      p6 = 100.0 * (float) lp_count.nr_shade_64 / (float) total_64;        debug_printf("llvmpipe: nr_64x64:                     %9u\n", total_64);        debug_printf("llvmpipe:   nr_fully_covered_64x64:     %9u (%3.0f%% of %u)\n", lp_count.nr_fully_covered_64, p2, total_64); -      debug_printf("llvmpipe:     nr_shade_opaque_64x64:    %9u (%3.0f%% of %u)\n", lp_count.nr_shade_opaque_64, p4, total_64); +      debug_printf("llvmpipe:     nr_shade_opaque_64x64:    %9u (%3.0f%% of %u)\n", lp_count.nr_shade_opaque_64, p5, total_64); +      debug_printf("llvmpipe:        nr_pure_shade_opaque:  %9u (%3.0f%% of %u)\n", lp_count.nr_pure_shade_opaque_64, 0.0, lp_count.nr_shade_opaque_64); +      debug_printf("llvmpipe:     nr_shade_64x64:           %9u (%3.0f%% of %u)\n", lp_count.nr_shade_64, p6, total_64); +      debug_printf("llvmpipe:        nr_pure_shade:         %9u (%3.0f%% of %u)\n", lp_count.nr_pure_shade_64, 0.0, lp_count.nr_shade_64);        debug_printf("llvmpipe:   nr_partially_covered_64x64: %9u (%3.0f%% of %u)\n", lp_count.nr_partially_covered_64, p3, total_64);        debug_printf("llvmpipe:   nr_empty_64x64:             %9u (%3.0f%% of %u)\n", lp_count.nr_empty_64, p1, total_64); @@ -79,12 +83,17 @@ lp_print_counters(void)        debug_printf("llvmpipe:   nr_partially_covered_16x16: %9u (%3.0f%% of %u)\n", lp_count.nr_partially_covered_16, p3, total_16);        debug_printf("llvmpipe:   nr_empty_16x16:             %9u (%3.0f%% of %u)\n", lp_count.nr_empty_16, p1, total_16); -      total_4 = (lp_count.nr_empty_4 + lp_count.nr_non_empty_4); +      total_4 = (lp_count.nr_empty_4 + +                 lp_count.nr_fully_covered_4 + +                 lp_count.nr_partially_covered_4);        p1 = 100.0 * (float) lp_count.nr_empty_4 / (float) total_4; -      p2 = 100.0 * (float) lp_count.nr_non_empty_4 / (float) total_4; +      p2 = 100.0 * (float) lp_count.nr_fully_covered_4 / (float) total_4; +      p3 = 100.0 * (float) lp_count.nr_partially_covered_4 / (float) total_4; -      debug_printf("llvmpipe: nr_4x4:                       %9u\n", total_4); +      debug_printf("llvmpipe: nr_tri_4x4:                   %9u\n", total_4); +      debug_printf("llvmpipe:   nr_fully_covered_4x4:       %9u (%3.0f%% of %u)\n", lp_count.nr_fully_covered_4, p2, total_4); +      debug_printf("llvmpipe:   nr_partially_covered_4x4:   %9u (%3.0f%% of %u)\n", lp_count.nr_partially_covered_4, p3, total_4);        debug_printf("llvmpipe:   nr_empty_4x4:               %9u (%3.0f%% of %u)\n", lp_count.nr_empty_4, p1, total_4);        debug_printf("llvmpipe:   nr_non_empty_4x4:           %9u (%3.0f%% of %u)\n", lp_count.nr_non_empty_4, p2, total_4); diff --git a/src/gallium/drivers/llvmpipe/lp_perf.h b/src/gallium/drivers/llvmpipe/lp_perf.h index 4774f64550..c28652fc30 100644 --- a/src/gallium/drivers/llvmpipe/lp_perf.h +++ b/src/gallium/drivers/llvmpipe/lp_perf.h @@ -44,11 +44,16 @@ struct lp_counters     unsigned nr_empty_64;     unsigned nr_fully_covered_64;     unsigned nr_partially_covered_64; +   unsigned nr_pure_shade_opaque_64; +   unsigned nr_pure_shade_64; +   unsigned nr_shade_64;     unsigned nr_shade_opaque_64;     unsigned nr_empty_16;     unsigned nr_fully_covered_16;     unsigned nr_partially_covered_16;     unsigned nr_empty_4; +   unsigned nr_fully_covered_4; +   unsigned nr_partially_covered_4;     unsigned nr_non_empty_4;     unsigned nr_llvm_compiles;     int64_t llvm_compile_time;  /**< total, in microseconds */ @@ -66,9 +71,11 @@ extern struct lp_counters lp_count;  #ifdef DEBUG  #define LP_COUNT(counter) lp_count.counter++  #define LP_COUNT_ADD(counter, incr)  lp_count.counter += (incr) +#define LP_COUNT_GET(counter) (lp_count.counter)  #else  #define LP_COUNT(counter)  #define LP_COUNT_ADD(counter, incr) (void) incr +#define LP_COUNT_GET(counter) 0  #endif diff --git a/src/gallium/drivers/llvmpipe/lp_rast_tri_tmp.h b/src/gallium/drivers/llvmpipe/lp_rast_tri_tmp.h index 43f72d8ca8..70a4b64c8d 100644 --- a/src/gallium/drivers/llvmpipe/lp_rast_tri_tmp.h +++ b/src/gallium/drivers/llvmpipe/lp_rast_tri_tmp.h @@ -102,6 +102,8 @@ TAG(do_block_16)(struct lp_rasterizer_task *task,     assert((partial_mask & inmask) == 0); +   LP_COUNT_ADD(nr_empty_4, util_bitcount(0xffff & ~(partial_mask | inmask))); +     /* Iterate over partials:      */     while (partial_mask) { @@ -114,6 +116,8 @@ TAG(do_block_16)(struct lp_rasterizer_task *task,        partial_mask &= ~(1 << i); +      LP_COUNT(nr_partially_covered_4); +        for (j = 0; j < NR_PLANES; j++)           cx[j] = (c[j]   		  - plane[j].dcdx * ix @@ -133,6 +137,7 @@ TAG(do_block_16)(struct lp_rasterizer_task *task,        inmask &= ~(1 << i); +      LP_COUNT(nr_fully_covered_4);        block_full_4(task, tri, px, py);     }  } @@ -190,6 +195,8 @@ TAG(lp_rast_triangle)(struct lp_rasterizer_task *task,     assert((partial_mask & inmask) == 0); +   LP_COUNT_ADD(nr_empty_16, util_bitcount(0xffff & ~(partial_mask | inmask))); +     /* Iterate over partials:      */     while (partial_mask) { | 
