Module: Mesa
Branch: main
Commit: feeae0f18f856043b25f922ce6ba212279aa0d57
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=feeae0f18f856043b25f922ce6ba212279aa0d57

Author: Qiang Yu <[email protected]>
Date:   Sat Apr 15 13:04:05 2023 +0800

ac/llvm,radeonsi: lower nir_load_point_coord_maybe_flipped in nir

Reviewed-by: Marek Olšák <[email protected]>
Signed-off-by: Qiang Yu <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22523>

---

 src/amd/llvm/ac_nir_to_llvm.c                   |  8 --------
 src/amd/llvm/ac_shader_abi.h                    |  3 ---
 src/gallium/drivers/radeonsi/si_nir_lower_abi.c | 10 ++++++++++
 src/gallium/drivers/radeonsi/si_shader_llvm.c   |  2 --
 4 files changed, 10 insertions(+), 13 deletions(-)

diff --git a/src/amd/llvm/ac_nir_to_llvm.c b/src/amd/llvm/ac_nir_to_llvm.c
index 904dc2981bd..dadfd248f1f 100644
--- a/src/amd/llvm/ac_nir_to_llvm.c
+++ b/src/amd/llvm/ac_nir_to_llvm.c
@@ -3812,14 +3812,6 @@ static bool visit_intrinsic(struct ac_nir_context *ctx, 
nir_intrinsic_instr *ins
                                        
nir_intrinsic_io_semantics(instr).high_16bits);
       break;
    }
-   case nir_intrinsic_load_point_coord_maybe_flipped: {
-      LLVMValueRef interp_param = lookup_interp_param(ctx, INTERP_MODE_NONE, 
INTERP_CENTER);
-      /* Load point coordinates (x, y) which are written by the hw after the 
interpolated inputs */
-      result = load_interpolated_input(ctx, interp_param, 
ctx->abi->num_interp, 2,
-                                       instr->dest.ssa.num_components, 
instr->dest.ssa.bit_size,
-                                       false);
-      break;
-   }
    case nir_intrinsic_emit_vertex_with_counter: {
       unsigned stream = nir_intrinsic_stream_id(instr);
       LLVMValueRef next_vertex = get_src(ctx, instr->src[0]);
diff --git a/src/amd/llvm/ac_shader_abi.h b/src/amd/llvm/ac_shader_abi.h
index b1dd01db51d..0369d574a5f 100644
--- a/src/amd/llvm/ac_shader_abi.h
+++ b/src/amd/llvm/ac_shader_abi.h
@@ -121,9 +121,6 @@ struct ac_shader_abi {
 
    /* Equal to radeon_info::conformant_trunc_coord. */
    bool conformant_trunc_coord;
-
-   /* Number of all interpolated inputs */
-   unsigned num_interp;
 };
 
 #endif /* AC_SHADER_ABI_H */
diff --git a/src/gallium/drivers/radeonsi/si_nir_lower_abi.c 
b/src/gallium/drivers/radeonsi/si_nir_lower_abi.c
index a3a7a6f3f8e..c56caa1c41f 100644
--- a/src/gallium/drivers/radeonsi/si_nir_lower_abi.c
+++ b/src/gallium/drivers/radeonsi/si_nir_lower_abi.c
@@ -513,6 +513,16 @@ static bool lower_abi_instr(nir_builder *b, nir_instr 
*instr, struct lower_abi_s
       replacement = nir_vec(b, color, 4);
       break;
    }
+   case nir_intrinsic_load_point_coord_maybe_flipped: {
+      nir_ssa_def *interp_param =
+         nir_load_barycentric_pixel(b, 32, .interp_mode = INTERP_MODE_NONE);
+
+      /* Load point coordinates (x, y) which are written by the hw after the 
interpolated inputs */
+      replacement = nir_load_interpolated_input(b, 2, 32, interp_param, 
nir_imm_int(b, 0),
+                                                .base = 
si_get_ps_num_interp(shader),
+                                                .component = 2);
+      break;
+   }
    default:
       return false;
    }
diff --git a/src/gallium/drivers/radeonsi/si_shader_llvm.c 
b/src/gallium/drivers/radeonsi/si_shader_llvm.c
index 1955112bc78..583abbd61e2 100644
--- a/src/gallium/drivers/radeonsi/si_shader_llvm.c
+++ b/src/gallium/drivers/radeonsi/si_shader_llvm.c
@@ -832,8 +832,6 @@ static bool si_llvm_translate_nir(struct si_shader_context 
*ctx, struct si_shade
       break;
 
    case MESA_SHADER_FRAGMENT: {
-      ctx->abi.num_interp = si_get_ps_num_interp(shader);
-
       ctx->abi.kill_ps_if_inf_interp =
          ctx->screen->options.no_infinite_interp &&
          (ctx->shader->selector->info.uses_persp_center ||

Reply via email to