radeonsi/nir: fix input processing for packed varyings

The location was only being incremented the first time we processed a
location. This meant we would incorrectly skip some elements of
an array if the first element was packed and proccessed previously
but other elements were not.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
Timothy Arceri 2018-03-23 12:10:42 +11:00
parent 51f175028d
commit b260efbd5e
1 changed files with 2 additions and 3 deletions

View File

@ -852,7 +852,7 @@ bool si_nir_build_llvm(struct si_shader_context *ctx, struct nir_shader *nir)
/* Packed components share the same location so skip
* them if we have already processed the location.
*/
if (processed_inputs & ((uint64_t)1 << loc)) {
if (processed_inputs & ((uint64_t)1 << (loc + i))) {
input_idx += 4;
continue;
}
@ -870,8 +870,7 @@ bool si_nir_build_llvm(struct si_shader_context *ctx, struct nir_shader *nir)
bitcast_inputs(ctx, data, input_idx);
}
processed_inputs |= ((uint64_t)1 << loc);
loc++;
processed_inputs |= ((uint64_t)1 << (loc + i));
input_idx += 4;
}
}