summaryrefslogtreecommitdiffstats
path: root/src/gallium/auxiliary
diff options
context:
space:
mode:
authorZack Rusin <[email protected]>2013-05-24 16:39:59 -0400
committerZack Rusin <[email protected]>2013-05-25 09:49:20 -0400
commit4b5595b38b3884531624fab6def7c604e92d0914 (patch)
tree6f41585cff8e0cdd4243dae71cc296a50991ca04 /src/gallium/auxiliary
parent97b8ae429ec64003e258764db12ea69d4e978f6d (diff)
draw: fixup draw_find_shader_output
draw_find_shader_output like most of the code in draw used to depend on position always being at output slot 0. which meant that any other attribute being at 0 could signify an error. unfortunately position can be at any of the output slots, thus other attributes can occupy slot 0 and we need to mark the ones which were not found by something else. This commit changes draw_find_shader_output so that it returns -1 if it can't find the given attribute and adjust the code that depended on it returning >0 whenever it correctly found an attrib. Signed-off-by: Zack Rusin <[email protected]> Reviewed-by: José Fonseca<[email protected]> Reviewed-by: Brian Paul <[email protected]> Reviewed-by: Roland Scheidegger <[email protected]>
Diffstat (limited to 'src/gallium/auxiliary')
-rw-r--r--src/gallium/auxiliary/draw/draw_context.c11
-rw-r--r--src/gallium/auxiliary/draw/draw_vertex.h2
2 files changed, 7 insertions, 6 deletions
diff --git a/src/gallium/auxiliary/draw/draw_context.c b/src/gallium/auxiliary/draw/draw_context.c
index 4250f10d13a..63ccf386f29 100644
--- a/src/gallium/auxiliary/draw/draw_context.c
+++ b/src/gallium/auxiliary/draw/draw_context.c
@@ -493,7 +493,7 @@ draw_alloc_extra_vertex_attrib(struct draw_context *draw,
uint n;
slot = draw_find_shader_output(draw, semantic_name, semantic_index);
- if (slot > 0) {
+ if (slot >= 0) {
return slot;
}
@@ -549,9 +549,10 @@ draw_get_shader_info(const struct draw_context *draw)
* attributes (such as texcoords for AA lines). The driver can call this
* function to find those attributes.
*
- * Zero is returned if the attribute is not found since this is
- * a don't care / undefined situtation. Returning -1 would be a bit more
- * work for the drivers.
+ * -1 is returned if the attribute is not found since this is
+ * an undefined situtation. Note, that zero is valid and can
+ * be used by any of the attributes, because position is not
+ * required to be attribute 0 or even at all present.
*/
int
draw_find_shader_output(const struct draw_context *draw,
@@ -574,7 +575,7 @@ draw_find_shader_output(const struct draw_context *draw,
}
}
- return 0;
+ return -1;
}
diff --git a/src/gallium/auxiliary/draw/draw_vertex.h b/src/gallium/auxiliary/draw/draw_vertex.h
index c87c3d84ce2..9e10ada1a59 100644
--- a/src/gallium/auxiliary/draw/draw_vertex.h
+++ b/src/gallium/auxiliary/draw/draw_vertex.h
@@ -125,7 +125,7 @@ static INLINE uint
draw_emit_vertex_attr(struct vertex_info *vinfo,
enum attrib_emit emit,
enum interp_mode interp, /* only used by softpipe??? */
- uint src_index)
+ int src_index)
{
const uint n = vinfo->num_attribs;
assert(n < Elements(vinfo->attrib));