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:
@@ -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;
|
||||
|
||||
@@ -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: {
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user