i965/gs: Set number of control data bits for stream mode.
authorIago Toral Quiroga <itoral@igalia.com>
Tue, 3 Jun 2014 10:25:08 +0000 (12:25 +0200)
committerIago Toral Quiroga <itoral@igalia.com>
Mon, 30 Jun 2014 06:08:50 +0000 (08:08 +0200)
If the geometry shader is indeed using streams then we need 2 control data
bits per vertex for the StreamID. If the shader is not using streams then
we don't need control data bits.

Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
src/mesa/drivers/dri/i965/brw_vec4_gs.c

index 4b1ba367341aab8690deb77160467e67c2cc1f02..642829160094807578185031a78162f1f9f5be56 100644 (file)
@@ -81,10 +81,11 @@ do_gs_prog(struct brw_context *brw,
        */
       c.prog_data.control_data_format = GEN7_GS_CONTROL_DATA_FORMAT_GSCTL_SID;
 
-      /* However, StreamID is not yet supported, so we output zero bits of
-       * control data per vertex.
-       */
-      c.control_data_bits_per_vertex = 0;
+      /* We only have to emit control bits if we are using streams */
+      if (prog->Geom.UsesStreams)
+         c.control_data_bits_per_vertex = 2;
+      else
+         c.control_data_bits_per_vertex = 0;
    } else {
       /* When the output type is triangle_strip or line_strip, EndPrimitive()
        * may be used to terminate the current strip and start a new one