radv: Implement nir_intrinsic_load_layer_id().
Reviewed-by: Connor Abbott <cwabbott0@gmail.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:

committed by
Connor Abbott

parent
c31f470066
commit
c65e880a65
@@ -3200,6 +3200,9 @@ static void visit_intrinsic(struct ac_nir_context *ctx,
|
||||
ac_build_gather_values(&ctx->ac, values, 4));
|
||||
break;
|
||||
}
|
||||
case nir_intrinsic_load_layer_id:
|
||||
result = ctx->abi->inputs[ac_llvm_reg_index_soa(VARYING_SLOT_LAYER, 0)];
|
||||
break;
|
||||
case nir_intrinsic_load_front_face:
|
||||
result = ctx->abi->front_face;
|
||||
break;
|
||||
|
@@ -2479,7 +2479,8 @@ handle_fs_inputs(struct radv_shader_context *ctx,
|
||||
unsigned index = 0;
|
||||
|
||||
if (ctx->shader_info->info.ps.uses_input_attachments ||
|
||||
ctx->shader_info->info.needs_multiview_view_index) {
|
||||
ctx->shader_info->info.needs_multiview_view_index ||
|
||||
ctx->shader_info->info.ps.layer_input) {
|
||||
ctx->input_mask |= 1ull << VARYING_SLOT_LAYER;
|
||||
ctx->inputs[ac_llvm_reg_index_soa(VARYING_SLOT_LAYER, 0)] = LLVMGetUndef(ctx->ac.i32);
|
||||
}
|
||||
|
@@ -265,6 +265,10 @@ gather_intrinsic_info(const nir_shader *nir, const nir_intrinsic_instr *instr,
|
||||
if (nir->info.stage == MESA_SHADER_FRAGMENT)
|
||||
info->ps.layer_input = true;
|
||||
break;
|
||||
case nir_intrinsic_load_layer_id:
|
||||
if (nir->info.stage == MESA_SHADER_FRAGMENT)
|
||||
info->ps.layer_input = true;
|
||||
break;
|
||||
case nir_intrinsic_load_invocation_id:
|
||||
info->uses_invocation_id = true;
|
||||
break;
|
||||
|
Reference in New Issue
Block a user