diff options
author | Keith Whitwell <[email protected]> | 2008-05-08 22:13:21 +0100 |
---|---|---|
committer | Keith Whitwell <[email protected]> | 2008-05-08 22:15:00 +0100 |
commit | b514f5f3ba4c9cf6c39cbcdf5bf0d2d8efb8d19b (patch) | |
tree | 1886ac244a69a5b3393b4f032b4b285b8e1cd753 /src/gallium/auxiliary/draw/draw_pt_fetch.c | |
parent | fec1d215f623221cb52f22c8f10e5de99ebc9cc2 (diff) |
draw: only fill in / compare the part of the translate key we're using.
It's quite a big struct & we examine it a lot (too much). Reduce
the impact of this by just looking at the active part where possible.
Diffstat (limited to 'src/gallium/auxiliary/draw/draw_pt_fetch.c')
-rw-r--r-- | src/gallium/auxiliary/draw/draw_pt_fetch.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/gallium/auxiliary/draw/draw_pt_fetch.c b/src/gallium/auxiliary/draw/draw_pt_fetch.c index 1f765b73adf..a5bebb4ca12 100644 --- a/src/gallium/auxiliary/draw/draw_pt_fetch.c +++ b/src/gallium/auxiliary/draw/draw_pt_fetch.c @@ -62,10 +62,11 @@ void draw_pt_fetch_prepare( struct pt_fetch *fetch, 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. * @@ -110,8 +111,9 @@ void draw_pt_fetch_prepare( struct pt_fetch *fetch, 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); { |