mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 02:58:05 +02:00
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>
This commit is contained in:
parent
097b933b55
commit
2a06728ba0
1 changed files with 5 additions and 0 deletions
|
|
@ -147,6 +147,11 @@ emit_pipeline_stat(struct brw_context *brw, drm_intel_bo *bo,
|
|||
};
|
||||
STATIC_ASSERT(ARRAY_SIZE(target_to_register) == MAX_PIPELINE_STATISTICS);
|
||||
uint32_t reg = target_to_register[pipeline_target_to_index(target)];
|
||||
/* Gen6 GS code counts full primitives, that is, it won't count individual
|
||||
* triangles in a triangle strip. Use CL_INVOCATION_COUNT for that.
|
||||
*/
|
||||
if (brw->gen == 6 && target == GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB)
|
||||
reg = CL_INVOCATION_COUNT;
|
||||
assert(reg != 0);
|
||||
|
||||
/* Emit a flush to make sure various parts of the pipeline are complete and
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue