draw: don't run pipeline stages when gs has no position output
authorRoland Scheidegger <sroland@vmware.com>
Tue, 5 Aug 2014 23:07:18 +0000 (01:07 +0200)
committerRoland Scheidegger <sroland@vmware.com>
Wed, 6 Aug 2014 16:01:33 +0000 (18:01 +0200)
commit11bd6f0e9b348b67f73f39dfd2b8b6b9a8452bc4
tree206a69b1e7bd93aed74f9e63b1f64592bf2c992e
parentc40d7d6d948912a4d51cbf8f0854cf2ebe916636
draw: don't run pipeline stages when gs has no position output

The clip stage may crash if there's no position output, for this reason
code was added to avoid running the pipeline stages in this case
(c7c7186045ec617c53f7899280cbe12e59503e4d). However, this failed to actually
work when there was a geometry shader, since unlike the vertex shader it did
not initialize the position output to -1, hence the code trying to detect
this didn't trigger. So simply initialize the position output to -1 just like
the vs does.
This fixes piglit glsl-1.50-transform-feedback-type-and-size (segfault->pass).
clip-distance-out-values.shader_test goes from segfault to assertion failure,
suggesting more fixes are needed, no other piglit changes.

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Zack Rusin <zackr@vmware.com>
src/gallium/auxiliary/draw/draw_cliptest_tmp.h
src/gallium/auxiliary/draw/draw_gs.c