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:
parent
2d1f021e16
commit
94bd06256a
|
@ -1178,13 +1178,16 @@ fs_visitor::emit_fragcoord_interpolation(fs_reg wpos)
|
|||
}
|
||||
|
||||
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. */
|
||||
assert(mode != INTERP_MODE_FLAT);
|
||||
|
||||
unsigned bary;
|
||||
switch (op) {
|
||||
switch (intr->intrinsic) {
|
||||
case nir_intrinsic_load_barycentric_pixel:
|
||||
case nir_intrinsic_load_barycentric_at_offset:
|
||||
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))
|
||||
continue;
|
||||
|
||||
enum glsl_interp_mode interp = (enum glsl_interp_mode)
|
||||
nir_intrinsic_interp_mode(intrin);
|
||||
nir_intrinsic_op bary_op = intrin->intrinsic;
|
||||
enum brw_barycentric_mode bary =
|
||||
brw_barycentric_mode(interp, bary_op);
|
||||
brw_barycentric_mode(intrin);
|
||||
|
||||
barycentric_interp_modes |= 1 << bary;
|
||||
|
||||
|
|
|
@ -648,8 +648,7 @@ fs_reg setup_imm_b(const brw::fs_builder &bld,
|
|||
fs_reg setup_imm_ub(const brw::fs_builder &bld,
|
||||
uint8_t v);
|
||||
|
||||
enum brw_barycentric_mode brw_barycentric_mode(enum glsl_interp_mode mode,
|
||||
nir_intrinsic_op op);
|
||||
enum brw_barycentric_mode brw_barycentric_mode(nir_intrinsic_instr *intr);
|
||||
|
||||
uint32_t brw_fb_write_msg_control(const fs_inst *inst,
|
||||
const struct brw_wm_prog_data *prog_data);
|
||||
|
|
|
@ -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_sample: {
|
||||
/* Use the delta_xy values computed from the payload */
|
||||
const glsl_interp_mode interp_mode =
|
||||
(enum glsl_interp_mode) nir_intrinsic_interp_mode(instr);
|
||||
enum brw_barycentric_mode bary =
|
||||
brw_barycentric_mode(interp_mode, instr->intrinsic);
|
||||
enum brw_barycentric_mode bary = brw_barycentric_mode(instr);
|
||||
const fs_reg srcs[] = { offset(this->delta_xy[bary], bld, 0),
|
||||
offset(this->delta_xy[bary], bld, 1) };
|
||||
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);
|
||||
} else {
|
||||
/* Use the delta_xy values computed from the payload */
|
||||
enum brw_barycentric_mode bary =
|
||||
brw_barycentric_mode(interp_mode, bary_intrin);
|
||||
enum brw_barycentric_mode bary = brw_barycentric_mode(bary_intrinsic);
|
||||
dst_xy = this->delta_xy[bary];
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue