i965/gen6: Fix GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB
authorIago Toral Quiroga <itoral@igalia.com>
Fri, 20 Feb 2015 07:21:25 +0000 (08:21 +0100)
committerIago Toral Quiroga <itoral@igalia.com>
Fri, 20 Feb 2015 10:24:11 +0000 (11:24 +0100)
commit2a06728ba0da5e4175843b1b53919d6167ca0aea
tree5417b5d8fbe48c58cce867a5637024cd7ad6f6a2
parent097b933b55eea6181678b34ede94bbc588dc94ff
i965/gen6: Fix GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB

In gen6 we need to compute the primitive count in the generated GS program.
The current implementation only counts full primitives, that is, if the
output primitive type is a triangle strip, it won't count individual
triangles in the strip, only complete strips.

If we want to count basic primitives instead we have two options: rework
the assembly code we generate for strip primitives or simply use
CL_INVOCATION_COUNT to resolve the query and let the hardware do that work
for us. This patch implements the latter approach.

Fixes the following piglit test:
bin/arb_pipeline_statistics_query-geom -auto

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89210
Tested-by: Mark Janes <mark.a.janes@intel.com>
Reviewed-by: Ben Widawsky <ben@bwidawsk.net>
src/mesa/drivers/dri/i965/gen6_queryobj.c