summaryrefslogtreecommitdiffstats
path: root/src/gallium/auxiliary/draw/draw_context.c
diff options
context:
space:
mode:
authorZack Rusin <[email protected]>2013-06-06 09:07:33 -0400
committerZack Rusin <[email protected]>2013-06-10 22:04:28 -0400
commitbabe35a067d1610d9032cc28eec8e16b18685621 (patch)
tree9c84b9f48f59e563e3bf5162ee5bb24998129320 /src/gallium/auxiliary/draw/draw_context.c
parent3d08eada3450aa8801aed194afea99c816dd71f0 (diff)
draw: implement distance culling
Works similarly to clip distance. If the cull distance is negative for all vertices against a specific plane then the primitive is culled. 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/draw/draw_context.c')
-rw-r--r--src/gallium/auxiliary/draw/draw_context.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/draw/draw_context.c b/src/gallium/auxiliary/draw/draw_context.c
index 81b3068553d..0dbddb45111 100644
--- a/src/gallium/auxiliary/draw/draw_context.c
+++ b/src/gallium/auxiliary/draw/draw_context.c
@@ -752,6 +752,23 @@ draw_current_shader_num_written_clipdistances(const struct draw_context *draw)
return draw->vs.vertex_shader->info.num_written_clipdistance;
}
+
+uint
+draw_current_shader_culldistance_output(const struct draw_context *draw, int index)
+{
+ if (draw->gs.geometry_shader)
+ return draw->gs.geometry_shader->culldistance_output[index];
+ return draw->vs.vertex_shader->culldistance_output[index];
+}
+
+uint
+draw_current_shader_num_written_culldistances(const struct draw_context *draw)
+{
+ if (draw->gs.geometry_shader)
+ return draw->gs.geometry_shader->info.num_written_culldistance;
+ return draw->vs.vertex_shader->info.num_written_culldistance;
+}
+
/**
* Return a pointer/handle for a driver/CSO rasterizer object which
* disabled culling, stippling, unfilled tris, etc.