summaryrefslogtreecommitdiffstats
path: root/src/gallium/auxiliary/tgsi/tgsi_scan.c
diff options
context:
space:
mode:
authorZack Rusin <[email protected]>2013-06-06 09:04:11 -0400
committerZack Rusin <[email protected]>2013-06-10 22:04:28 -0400
commit3d08eada3450aa8801aed194afea99c816dd71f0 (patch)
tree58e2e1f5f9f7d23dc3ce99418022b9178f8b0a34 /src/gallium/auxiliary/tgsi/tgsi_scan.c
parent0a3779d95537343505200ad096acf135dcd81b80 (diff)
gallium: add a cull distance semantic
cull distance is analogous to clip distance. If a register is given this semantic, then the values in it are assumed to be a float32 distance to a plane. Primitives will be completely discarded if the plane distance for all of the vertices in the primitive are < 0. Signed-off-by: Zack Rusin <[email protected]> Reviewed-by: Jose Fonseca <[email protected]> Reviewed-by: Brian Paul <[email protected]> Reviewed-by: Roland Scheidegger <[email protected]>
Diffstat (limited to 'src/gallium/auxiliary/tgsi/tgsi_scan.c')
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi_scan.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/tgsi/tgsi_scan.c b/src/gallium/auxiliary/tgsi/tgsi_scan.c
index 872e4ff3a4b..2a37b38d3c7 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_scan.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_scan.c
@@ -200,6 +200,10 @@ tgsi_scan_shader(const struct tgsi_token *tokens,
fulldecl->Semantic.Name == TGSI_SEMANTIC_CLIPDIST) {
info->num_written_clipdistance += util_bitcount(fulldecl->Declaration.UsageMask);
}
+ if ((procType == TGSI_PROCESSOR_VERTEX || procType == TGSI_PROCESSOR_GEOMETRY) &&
+ fulldecl->Semantic.Name == TGSI_SEMANTIC_CULLDIST) {
+ info->num_written_culldistance += util_bitcount(fulldecl->Declaration.UsageMask);
+ }
/* extra info for special outputs */
if (procType == TGSI_PROCESSOR_FRAGMENT &&
fulldecl->Semantic.Name == TGSI_SEMANTIC_POSITION)