intel/fs: Simplify brw_barycentric_mode() args.

Reduce a bit of mode lookup noise I was tracing through trying to resolve
the previous bug.

Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17381>
This commit is contained in:
Emma Anholt 2022-07-06 13:01:24 -07:00 committed by Marge Bot
parent 2d1f021e16
commit 94bd06256a
3 changed files with 9 additions and 13 deletions

View File

@ -1178,13 +1178,16 @@ fs_visitor::emit_fragcoord_interpolation(fs_reg wpos)
} }
enum brw_barycentric_mode enum brw_barycentric_mode
brw_barycentric_mode(enum glsl_interp_mode mode, nir_intrinsic_op op) brw_barycentric_mode(nir_intrinsic_instr *intr)
{ {
const glsl_interp_mode mode =
(enum glsl_interp_mode) nir_intrinsic_interp_mode(intr);
/* Barycentric modes don't make sense for flat inputs. */ /* Barycentric modes don't make sense for flat inputs. */
assert(mode != INTERP_MODE_FLAT); assert(mode != INTERP_MODE_FLAT);
unsigned bary; unsigned bary;
switch (op) { switch (intr->intrinsic) {
case nir_intrinsic_load_barycentric_pixel: case nir_intrinsic_load_barycentric_pixel:
case nir_intrinsic_load_barycentric_at_offset: case nir_intrinsic_load_barycentric_at_offset:
bary = BRW_BARYCENTRIC_PERSPECTIVE_PIXEL; bary = BRW_BARYCENTRIC_PERSPECTIVE_PIXEL;
@ -7088,11 +7091,9 @@ brw_compute_barycentric_interp_modes(const struct intel_device_info *devinfo,
if (!is_used_in_not_interp_frag_coord(&intrin->dest.ssa)) if (!is_used_in_not_interp_frag_coord(&intrin->dest.ssa))
continue; continue;
enum glsl_interp_mode interp = (enum glsl_interp_mode)
nir_intrinsic_interp_mode(intrin);
nir_intrinsic_op bary_op = intrin->intrinsic; nir_intrinsic_op bary_op = intrin->intrinsic;
enum brw_barycentric_mode bary = enum brw_barycentric_mode bary =
brw_barycentric_mode(interp, bary_op); brw_barycentric_mode(intrin);
barycentric_interp_modes |= 1 << bary; barycentric_interp_modes |= 1 << bary;

View File

@ -648,8 +648,7 @@ fs_reg setup_imm_b(const brw::fs_builder &bld,
fs_reg setup_imm_ub(const brw::fs_builder &bld, fs_reg setup_imm_ub(const brw::fs_builder &bld,
uint8_t v); uint8_t v);
enum brw_barycentric_mode brw_barycentric_mode(enum glsl_interp_mode mode, enum brw_barycentric_mode brw_barycentric_mode(nir_intrinsic_instr *intr);
nir_intrinsic_op op);
uint32_t brw_fb_write_msg_control(const fs_inst *inst, uint32_t brw_fb_write_msg_control(const fs_inst *inst,
const struct brw_wm_prog_data *prog_data); const struct brw_wm_prog_data *prog_data);

View File

@ -3661,10 +3661,7 @@ fs_visitor::nir_emit_fs_intrinsic(const fs_builder &bld,
case nir_intrinsic_load_barycentric_centroid: case nir_intrinsic_load_barycentric_centroid:
case nir_intrinsic_load_barycentric_sample: { case nir_intrinsic_load_barycentric_sample: {
/* Use the delta_xy values computed from the payload */ /* Use the delta_xy values computed from the payload */
const glsl_interp_mode interp_mode = enum brw_barycentric_mode bary = brw_barycentric_mode(instr);
(enum glsl_interp_mode) nir_intrinsic_interp_mode(instr);
enum brw_barycentric_mode bary =
brw_barycentric_mode(interp_mode, instr->intrinsic);
const fs_reg srcs[] = { offset(this->delta_xy[bary], bld, 0), const fs_reg srcs[] = { offset(this->delta_xy[bary], bld, 0),
offset(this->delta_xy[bary], bld, 1) }; offset(this->delta_xy[bary], bld, 1) };
bld.LOAD_PAYLOAD(dest, srcs, ARRAY_SIZE(srcs), 0); bld.LOAD_PAYLOAD(dest, srcs, ARRAY_SIZE(srcs), 0);
@ -3788,8 +3785,7 @@ fs_visitor::nir_emit_fs_intrinsic(const fs_builder &bld,
dst_xy = retype(get_nir_src(instr->src[0]), BRW_REGISTER_TYPE_F); dst_xy = retype(get_nir_src(instr->src[0]), BRW_REGISTER_TYPE_F);
} else { } else {
/* Use the delta_xy values computed from the payload */ /* Use the delta_xy values computed from the payload */
enum brw_barycentric_mode bary = enum brw_barycentric_mode bary = brw_barycentric_mode(bary_intrinsic);
brw_barycentric_mode(interp_mode, bary_intrin);
dst_xy = this->delta_xy[bary]; dst_xy = this->delta_xy[bary];
} }