draw: fix vs/fs input/output mismatches
authorZack Rusin <zackr@vmware.com>
Thu, 30 May 2013 17:48:36 +0000 (13:48 -0400)
committerZack Rusin <zackr@vmware.com>
Thu, 30 May 2013 19:34:19 +0000 (15:34 -0400)
When we've changed draw_find_shader_output to return -1 instead
of 0 on non found attribs we broke the default behavior of
draw, which was to always redirect those to the first (0th) slot.
To preserve that behavior if draw_emit_vertex_attr notices a
mismatched vertex attrib, it just redirects it to the first slot
(instead of trying to use negative index in an array).

Signed-off-by: Zack Rusin <zackr@vmware.com>
Reviewed-by: José Fonseca <jfonseca@vmware.com>
src/gallium/auxiliary/draw/draw_vertex.h

index 9e10ada1a59ad482bcb119550a07d04e30de8b4c..2e726e0c36d70b8bedc73d82fadf682b10bc6d17 100644 (file)
@@ -128,6 +128,13 @@ draw_emit_vertex_attr(struct vertex_info *vinfo,
                       int src_index)
 {
    const uint n = vinfo->num_attribs;
+
+   /* If the src_index is negative, meaning it hasn't been found
+    * lets just redirect it to the first output slot */
+   if (src_index < 0) {
+      src_index = 0;
+   }
+
    assert(n < Elements(vinfo->attrib));
    vinfo->attrib[n].emit = emit;
    vinfo->attrib[n].interp_mode = interp;