const struct vertex_info *vinfo;
unsigned dst_offset;
struct translate_key hw_key;
+ unsigned keysize;
unsigned i;
boolean ok;
return;
}
- memset(&hw_key, 0, sizeof(hw_key));
-
/* Must do this after set_primitive() above:
*/
vinfo = draw->render->get_vertex_info(draw->render);
-
+ keysize = 2*4 + vinfo->num_attribs * sizeof(hw_key.element[0]);
/* Translate from pipeline vertices to hw vertices.
*/
hw_key.output_stride = vinfo->size * 4;
if (!emit->translate ||
- memcmp(&emit->translate->key, &hw_key, sizeof(hw_key)) != 0)
+ memcmp(&emit->translate->key, &hw_key, keysize) != 0)
{
+ memset((char *)&hw_key + keysize, 0, sizeof(hw_key) - keysize);
emit->translate = translate_cache_find(emit->cache, &hw_key);
}
}
unsigned i, nr = 0;
unsigned dst_offset = 0;
struct translate_key key;
+ unsigned keysize;
fetch->vertex_size = vertex_size;
-
- memset(&key, 0, sizeof(key));
+ keysize = (2*4 +
+ (draw->pt.nr_vertex_elements + 1) * sizeof(key.element[0]));
/* Always emit/leave space for a vertex header.
*
if (!fetch->translate ||
- memcmp(&fetch->translate->key, &key, sizeof(key)) != 0)
+ memcmp(&fetch->translate->key, &key, keysize) != 0)
{
+ memset((char *)&key + keysize, 0, sizeof(key) - keysize);
fetch->translate = translate_cache_find(fetch->cache, &key);
{