From: Fabian Bieler Date: Thu, 24 Feb 2011 09:56:16 +0000 (+0100) Subject: gallium/utils: Fix vertex element setup X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=728695b4353c8b74b30310cd2d87071f662fdb63;p=mesa.git gallium/utils: Fix vertex element setup Check if element was translated per element instead of per buffer. --- diff --git a/src/gallium/auxiliary/util/u_vbuf_mgr.c b/src/gallium/auxiliary/util/u_vbuf_mgr.c index 096392f3133..dec8dd717e8 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;