amd: lower load_pixel_coord in NIR

Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32782>
This commit is contained in:
Marek Olšák
2024-12-25 11:32:40 -05:00
committed by Marge Bot
parent 85c3b5159a
commit 58cb155068
4 changed files with 3 additions and 19 deletions

View File

@@ -170,7 +170,9 @@ lower_intrinsic_to_arg(nir_builder *b, nir_instr *instr, void *state)
} else { } else {
return false; return false;
} }
break;
case nir_intrinsic_load_pixel_coord:
replacement = nir_unpack_32_2x16(b, ac_nir_load_arg(b, s->args, s->args->pos_fixed_pt));
break; break;
default: default:
return false; return false;

View File

@@ -8158,12 +8158,6 @@ visit_intrinsic(isel_context* ctx, nir_intrinsic_instr* instr)
emit_load_frag_coord(ctx, get_ssa_temp(ctx, &instr->def), 4); emit_load_frag_coord(ctx, get_ssa_temp(ctx, &instr->def), 4);
break; break;
} }
case nir_intrinsic_load_pixel_coord: {
Temp dst = get_ssa_temp(ctx, &instr->def);
bld.copy(Definition(dst), get_arg(ctx, ctx->args->pos_fixed_pt));
emit_split_vector(ctx, dst, 2);
break;
}
case nir_intrinsic_load_frag_shading_rate: case nir_intrinsic_load_frag_shading_rate:
emit_load_frag_shading_rate(ctx, get_ssa_temp(ctx, &instr->def)); emit_load_frag_shading_rate(ctx, get_ssa_temp(ctx, &instr->def));
break; break;

View File

@@ -561,7 +561,6 @@ init_context(isel_context* ctx, nir_shader* shader)
case nir_intrinsic_load_interpolated_input: case nir_intrinsic_load_interpolated_input:
case nir_intrinsic_load_front_face_fsign: case nir_intrinsic_load_front_face_fsign:
case nir_intrinsic_load_frag_coord: case nir_intrinsic_load_frag_coord:
case nir_intrinsic_load_pixel_coord:
case nir_intrinsic_load_frag_shading_rate: case nir_intrinsic_load_frag_shading_rate:
case nir_intrinsic_load_sample_pos: case nir_intrinsic_load_sample_pos:
case nir_intrinsic_load_local_invocation_id: case nir_intrinsic_load_local_invocation_id:

View File

@@ -2883,14 +2883,6 @@ emit_load_frag_coord(struct ac_nir_context *ctx)
return ac_to_integer(&ctx->ac, ac_build_gather_values(&ctx->ac, values, 4)); return ac_to_integer(&ctx->ac, ac_build_gather_values(&ctx->ac, values, 4));
} }
static LLVMValueRef
emit_load_pixel_coord(struct ac_nir_context *ctx)
{
LLVMValueRef value = ac_get_arg(&ctx->ac, ctx->args->pos_fixed_pt);
return LLVMBuildBitCast(ctx->ac.builder, value, ctx->ac.v2i16, "");
}
static bool visit_intrinsic(struct ac_nir_context *ctx, nir_intrinsic_instr *instr) static bool visit_intrinsic(struct ac_nir_context *ctx, nir_intrinsic_instr *instr)
{ {
LLVMValueRef result = NULL; LLVMValueRef result = NULL;
@@ -3035,9 +3027,6 @@ static bool visit_intrinsic(struct ac_nir_context *ctx, nir_intrinsic_instr *ins
case nir_intrinsic_load_frag_coord: case nir_intrinsic_load_frag_coord:
result = emit_load_frag_coord(ctx); result = emit_load_frag_coord(ctx);
break; break;
case nir_intrinsic_load_pixel_coord:
result = emit_load_pixel_coord(ctx);
break;
case nir_intrinsic_load_frag_shading_rate: case nir_intrinsic_load_frag_shading_rate:
result = emit_load_frag_shading_rate(ctx); result = emit_load_frag_shading_rate(ctx);
break; break;