* XXX: Stream output surely needs to respect the prim_info->elt
* lists.
*/
- draw_pt_so_emit( fpme->so_emit,
- vert_info,
- prim_info );
-
- if (draw_pt_post_vs_run( fpme->post_vs,
- vert_info ))
- {
- opt |= PT_PIPELINE;
- }
+ draw_pt_so_emit( fpme->so_emit, vert_info, prim_info );
- /* Do we need to run the pipeline?
+ /*
+ * if there's no position, need to stop now, or the latter stages
+ * will try to access non-existent position output.
*/
- if (opt & PT_PIPELINE) {
- pipeline( fpme,
- vert_info,
- prim_info );
- }
- else {
- emit( fpme->emit,
- vert_info,
- prim_info );
+ if (draw_current_shader_position_output(draw) != -1) {
+
+ if (draw_pt_post_vs_run( fpme->post_vs, vert_info ))
+ {
+ opt |= PT_PIPELINE;
+ }
+
+ /* Do we need to run the pipeline?
+ */
+ if (opt & PT_PIPELINE) {
+ pipeline( fpme, vert_info, prim_info );
+ }
+ else {
+ emit( fpme->emit, vert_info, prim_info );
+ }
}
FREE(vert_info->verts);
}