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
|
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;
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue