diff options
| author | Zack Rusin <zackr@vmware.com> | 2013-06-06 08:49:09 -0400 |
|---|---|---|
| committer | Zack Rusin <zackr@vmware.com> | 2013-06-10 22:04:28 -0400 |
| commit | 0a3779d95537343505200ad096acf135dcd81b80 (patch) | |
| tree | fffde02ddbdc14609680b5783c6617469c8308a9 /src/gallium/auxiliary/draw/draw_context.c | |
| parent | 2b2e7bb13361fa93c49c4872cc5070a66a7b1746 (diff) | |
| download | external_mesa3d-0a3779d95537343505200ad096acf135dcd81b80.tar.gz external_mesa3d-0a3779d95537343505200ad096acf135dcd81b80.tar.bz2 external_mesa3d-0a3779d95537343505200ad096acf135dcd81b80.zip | |
draw: fix clipper invocation statistics
We need to figure out the number of invocations of the clipper
before the emit, because in the emit we are after clipping
where the number of primitives will be equal to number of clipper
invocations minus the clipped primitives. So our computations
were always off by the number of clipped primitives.
Signed-off-by: Zack Rusin <zackr@vmware.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Diffstat (limited to 'src/gallium/auxiliary/draw/draw_context.c')
| -rw-r--r-- | src/gallium/auxiliary/draw/draw_context.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/draw/draw_context.c b/src/gallium/auxiliary/draw/draw_context.c index e8480f6ba7..81b3068553 100644 --- a/src/gallium/auxiliary/draw/draw_context.c +++ b/src/gallium/auxiliary/draw/draw_context.c @@ -37,6 +37,7 @@ #include "util/u_cpu_detect.h" #include "util/u_inlines.h" #include "util/u_helpers.h" +#include "util/u_prim.h" #include "draw_context.h" #include "draw_vs.h" #include "draw_gs.h" @@ -925,3 +926,27 @@ draw_collect_pipeline_statistics(struct draw_context *draw, { draw->collect_statistics = enable; } + +/** + * Computes clipper invocation statistics. + * + * Figures out how many primitives would have been + * sent to the clipper given the specified + * prim info data. + */ +void +draw_stats_clipper_primitives(struct draw_context *draw, + const struct draw_prim_info *prim_info) +{ + if (draw->collect_statistics) { + unsigned start, i; + for (start = i = 0; + i < prim_info->primitive_count; + start += prim_info->primitive_lengths[i], i++) + { + draw->statistics.c_invocations += + u_decomposed_prims_for_vertices(prim_info->prim, + prim_info->primitive_lengths[i]); + } + } +} |
