summaryrefslogtreecommitdiffstats
path: root/src/gallium/auxiliary/draw/draw_vertex.h
diff options
context:
space:
mode:
authorZack Rusin <zackr@vmware.com>2013-05-30 13:48:36 -0400
committerZack Rusin <zackr@vmware.com>2013-05-30 15:34:19 -0400
commit978d5ed06bfc3d87a4b1ca1981caeeaa88de2790 (patch)
tree6466672fb18e70e5c0a43bea818c3388a5fb6b26 /src/gallium/auxiliary/draw/draw_vertex.h
parent0a70fdfb3ffe2b03c037c64076fe4c6d3e8a0fe5 (diff)
downloadexternal_mesa3d-978d5ed06bfc3d87a4b1ca1981caeeaa88de2790.zip
external_mesa3d-978d5ed06bfc3d87a4b1ca1981caeeaa88de2790.tar.gz
external_mesa3d-978d5ed06bfc3d87a4b1ca1981caeeaa88de2790.tar.bz2
draw: fix vs/fs input/output mismatches
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>
Diffstat (limited to 'src/gallium/auxiliary/draw/draw_vertex.h')
-rw-r--r--src/gallium/auxiliary/draw/draw_vertex.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/draw/draw_vertex.h b/src/gallium/auxiliary/draw/draw_vertex.h
index 9e10ada..2e726e0 100644
--- a/src/gallium/auxiliary/draw/draw_vertex.h
+++ b/src/gallium/auxiliary/draw/draw_vertex.h
@@ -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;