diff options
author | Zack Rusin <[email protected]> | 2013-07-23 01:16:55 -0400 |
---|---|---|
committer | Zack Rusin <[email protected]> | 2013-07-25 02:02:36 -0400 |
commit | 0e9ec8697353d7a35ea0a2edc63c0c7395f7129e (patch) | |
tree | 7a5f04590b5a99ec6e351289b1ce9a92569275dc /src/gallium/auxiliary/translate | |
parent | 0ac316470813b4f2e825ff4befbbf2135cccce94 (diff) |
draw: cleanup and fix instance id computation
The instance id system value always starts at 0, even if the
specified start instance is larger than 0. Instead of implicitly
setting instance id to instance id plus start instance and then
having to subtract instance id when computing the buffer offsets
lets just set instance id to the proper instance id. This fixes
instance id computation and cleansup buffer offset computation.
Signed-off-by: Zack Rusin <[email protected]>
Reviewed-by: Roland Scheidegger <[email protected]>
Reviewed-by: Brian Paul <[email protected]>
Reviewed-by: Jose Fonseca <[email protected]>
Diffstat (limited to 'src/gallium/auxiliary/translate')
-rw-r--r-- | src/gallium/auxiliary/translate/translate_generic.c | 3 | ||||
-rw-r--r-- | src/gallium/auxiliary/translate/translate_sse.c | 4 |
2 files changed, 1 insertions, 6 deletions
diff --git a/src/gallium/auxiliary/translate/translate_generic.c b/src/gallium/auxiliary/translate/translate_generic.c index 96e35b0eb41..fdab0f34a1a 100644 --- a/src/gallium/auxiliary/translate/translate_generic.c +++ b/src/gallium/auxiliary/translate/translate_generic.c @@ -625,8 +625,7 @@ static ALWAYS_INLINE void PIPE_CDECL generic_run_one( struct translate_generic * if (tg->attrib[attr].instance_divisor) { index = start_instance; - index += (instance_id - start_instance) / - tg->attrib[attr].instance_divisor; + index += (instance_id / tg->attrib[attr].instance_divisor); /* XXX we need to clamp the index here too, but to a * per-array max value, not the draw->pt.max_index value * that's being given to us via translate->set_buffer(). diff --git a/src/gallium/auxiliary/translate/translate_sse.c b/src/gallium/auxiliary/translate/translate_sse.c index a4f7b243c13..726a9b1e34b 100644 --- a/src/gallium/auxiliary/translate/translate_sse.c +++ b/src/gallium/auxiliary/translate/translate_sse.c @@ -1094,10 +1094,6 @@ static boolean init_inputs( struct translate_sse *p, struct x86_reg tmp_EDX = p->tmp2_EDX; struct x86_reg tmp_ECX = p->src_ECX; - /* instance_num = instance_id - start_instance */ - x86_mov(p->func, tmp_EDX, start_instance); - x86_sub(p->func, tmp_EAX, tmp_EDX); - /* TODO: Add x86_shr() to rtasm and use it whenever * instance divisor is power of two. */ |