intel/elk: Move wpos_w setup right into nir_intrinsic_load_frag_w.

Given that the intrinsic will be CSEed at the NIR level, we don't need to
preemptively set it up at the top of the shader.  No change in HSW shader-db.

Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25190>
This commit is contained in:
Emma Anholt
2025-02-21 10:51:01 -08:00
committed by Marge Bot
parent 269fbcb144
commit cd981e27f7
3 changed files with 1 additions and 15 deletions
-1
View File
@@ -392,7 +392,6 @@ public:
elk_fs_reg uw_pixel_x;
elk_fs_reg uw_pixel_y;
elk_fs_reg pixel_z;
elk_fs_reg wpos_w;
elk_fs_reg delta_xy[ELK_BARYCENTRIC_MODE_COUNT];
elk_fs_reg final_gs_vertex_count;
elk_fs_reg control_data_bits;
+1 -1
View File
@@ -3926,7 +3926,7 @@ fs_nir_emit_fs_intrinsic(nir_to_elk_state &ntb,
case nir_intrinsic_load_frag_coord_w:
/* Lowered to interpolation pre-gen6. */
assert(devinfo->ver >= 6);
bld.MOV(dest, s.wpos_w);
bld.emit(ELK_SHADER_OPCODE_RCP, dest, fetch_payload_reg(bld, s.fs_payload().source_w_reg));
break;
case nir_intrinsic_load_interpolated_input: {
-13
View File
@@ -140,12 +140,6 @@ elk_fs_visitor::emit_interpolation_setup_gfx4()
this->delta_xy[ELK_BARYCENTRIC_PERSPECTIVE_PIXEL];
abld = bld.annotate("compute pos.w and 1/pos.w");
/* Compute wpos.w. It's always in our setup, since it's needed to
* interpolate the other attributes.
*/
this->wpos_w = vgrf(glsl_float_type());
abld.emit(ELK_FS_OPCODE_LINTERP, wpos_w, delta_xy,
interp_reg(abld, VARYING_SLOT_POS, 3, 0));
}
/** Emits the interpolation for the varying inputs. */
@@ -273,13 +267,6 @@ elk_fs_visitor::emit_interpolation_setup_gfx6()
if (wm_prog_data->uses_src_depth)
this->pixel_z = fetch_payload_reg(bld, fs_payload().source_depth_reg);
if (wm_prog_data->uses_src_w) {
abld = bld.annotate("compute pos.w");
this->wpos_w = vgrf(glsl_float_type());
abld.emit(ELK_SHADER_OPCODE_RCP, this->wpos_w,
fetch_payload_reg(abld, fs_payload().source_w_reg));
}
if (wm_key->persample_interp == ELK_SOMETIMES) {
assert(!elk_needs_unlit_centroid_workaround(devinfo));