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:
parent
51f175028d
commit
b260efbd5e
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue