diff options
author | Zack Rusin <[email protected]> | 2013-06-06 09:04:11 -0400 |
---|---|---|
committer | Zack Rusin <[email protected]> | 2013-06-10 22:04:28 -0400 |
commit | 3d08eada3450aa8801aed194afea99c816dd71f0 (patch) | |
tree | 58e2e1f5f9f7d23dc3ce99418022b9178f8b0a34 /src/gallium/auxiliary | |
parent | 0a3779d95537343505200ad096acf135dcd81b80 (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')
-rw-r--r-- | src/gallium/auxiliary/tgsi/tgsi_scan.c | 4 | ||||
-rw-r--r-- | src/gallium/auxiliary/tgsi/tgsi_scan.h | 1 | ||||
-rw-r--r-- | src/gallium/auxiliary/tgsi/tgsi_strings.c | 3 |
3 files changed, 7 insertions, 1 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) diff --git a/src/gallium/auxiliary/tgsi/tgsi_scan.h b/src/gallium/auxiliary/tgsi/tgsi_scan.h index a5b70244bd7..91eef67ca0b 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_scan.h +++ b/src/gallium/auxiliary/tgsi/tgsi_scan.h @@ -78,6 +78,7 @@ struct tgsi_shader_info boolean writes_viewport_index; boolean writes_layer; + unsigned num_written_culldistance; unsigned num_written_clipdistance; /** * Bitmask indicating which register files are accessed with diff --git a/src/gallium/auxiliary/tgsi/tgsi_strings.c b/src/gallium/auxiliary/tgsi/tgsi_strings.c index 27856767877..6f244e5142f 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_strings.c +++ b/src/gallium/auxiliary/tgsi/tgsi_strings.c @@ -80,7 +80,8 @@ const char *tgsi_semantic_names[TGSI_SEMANTIC_COUNT] = "TEXCOORD", "PCOORD", "VIEWPORT_INDEX", - "LAYER" + "LAYER", + "CULLDIST" }; const char *tgsi_texture_names[TGSI_TEXTURE_COUNT] = |