radeonsi: add bitcast_inputs() helper
Will be used in a following patch to help support doubles. Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
96cfd4bd7e
commit
cf75ee3ab1
|
@ -644,6 +644,16 @@ si_nir_load_sampler_desc(struct ac_shader_abi *abi,
|
|||
return si_load_sampler_desc(ctx, list, index, desc_type);
|
||||
}
|
||||
|
||||
static void bitcast_inputs(struct si_shader_context *ctx,
|
||||
LLVMValueRef data[4],
|
||||
unsigned input_idx)
|
||||
{
|
||||
for (unsigned chan = 0; chan < 4; chan++) {
|
||||
ctx->inputs[input_idx + chan] =
|
||||
LLVMBuildBitCast(ctx->ac.builder, data[chan], ctx->ac.i32, "");
|
||||
}
|
||||
}
|
||||
|
||||
bool si_nir_build_llvm(struct si_shader_context *ctx, struct nir_shader *nir)
|
||||
{
|
||||
struct tgsi_shader_info *info = &ctx->shader->selector->info;
|
||||
|
@ -667,15 +677,14 @@ bool si_nir_build_llvm(struct si_shader_context *ctx, struct nir_shader *nir)
|
|||
if (processed_inputs & ((uint64_t)1 << loc))
|
||||
continue;
|
||||
|
||||
if (nir->info.stage == MESA_SHADER_VERTEX)
|
||||
if (nir->info.stage == MESA_SHADER_VERTEX) {
|
||||
declare_nir_input_vs(ctx, variable, data);
|
||||
else if (nir->info.stage == MESA_SHADER_FRAGMENT)
|
||||
bitcast_inputs(ctx, data, input_idx);
|
||||
} else if (nir->info.stage == MESA_SHADER_FRAGMENT) {
|
||||
declare_nir_input_fs(ctx, variable, input_idx / 4, data);
|
||||
|
||||
for (unsigned chan = 0; chan < 4; chan++) {
|
||||
ctx->inputs[input_idx + chan] =
|
||||
LLVMBuildBitCast(ctx->ac.builder, data[chan], ctx->ac.i32, "");
|
||||
bitcast_inputs(ctx, data, input_idx);
|
||||
}
|
||||
|
||||
processed_inputs |= ((uint64_t)1 << loc);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue