summaryrefslogtreecommitdiff
path: root/src/gallium/auxiliary
diff options
context:
space:
mode:
authorFabian Bieler <der.fabe@gmx.net>2011-02-24 10:56:16 +0100
committerMarek Olšák <maraeo@gmail.com>2011-02-24 15:05:10 +0100
commit728695b4353c8b74b30310cd2d87071f662fdb63 (patch)
treef358e9393262fa448cfb108838b5415bdc8f3677 /src/gallium/auxiliary
parent369ece170257ef687ca609cacd1d66d186274eb3 (diff)
gallium/utils: Fix vertex element setup
Check if element was translated per element instead of per buffer.
Diffstat (limited to 'src/gallium/auxiliary')
-rw-r--r--src/gallium/auxiliary/util/u_vbuf_mgr.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/gallium/auxiliary/util/u_vbuf_mgr.c b/src/gallium/auxiliary/util/u_vbuf_mgr.c
index 096392f313..dec8dd717e 100644
--- a/src/gallium/auxiliary/util/u_vbuf_mgr.c
+++ b/src/gallium/auxiliary/util/u_vbuf_mgr.c
@@ -156,7 +156,7 @@ static void u_vbuf_translate_begin(struct u_vbuf_mgr_priv *mgr,
{
struct translate_key key;
struct translate_element *te;
- unsigned tr_elem_index[PIPE_MAX_ATTRIBS] = {0};
+ unsigned tr_elem_index[PIPE_MAX_ATTRIBS];
struct translate *tr;
boolean vb_translated[PIPE_MAX_ATTRIBS] = {0};
uint8_t *vb_map[PIPE_MAX_ATTRIBS] = {0}, *out_map;
@@ -166,6 +166,7 @@ static void u_vbuf_translate_begin(struct u_vbuf_mgr_priv *mgr,
struct pipe_vertex_element new_velems[PIPE_MAX_ATTRIBS];
memset(&key, 0, sizeof(key));
+ memset(tr_elem_index, 0xff, sizeof(tr_elem_index));
/* Initialize the translate key, i.e. the recipe how vertices should be
* translated. */
@@ -281,7 +282,7 @@ static void u_vbuf_translate_begin(struct u_vbuf_mgr_priv *mgr,
/* Setup new vertex elements. */
for (i = 0; i < mgr->ve->count; i++) {
- if (vb_translated[mgr->ve->ve[i].vertex_buffer_index]) {
+ if (tr_elem_index[i] < key.nr_elements) {
te = &key.element[tr_elem_index[i]];
new_velems[i].instance_divisor = mgr->ve->ve[i].instance_divisor;
new_velems[i].src_format = te->output_format;