From 91a5a18dbfe12a6836d2fda7a7eeb6fa4546b599 Mon Sep 17 00:00:00 2001 From: Emma Anholt Date: Fri, 10 Sep 2021 16:38:43 -0700 Subject: [PATCH] nir_to_tgsi: Add support for nir_intrinsic_load_barycentric_at_sample. It doesn't have to be a constant sample, so we need to store it at load time and use the load's dest at interpolate_at time. Acked-by: Gert Wollny Part-of: --- src/gallium/auxiliary/nir/nir_to_tgsi.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/gallium/auxiliary/nir/nir_to_tgsi.c b/src/gallium/auxiliary/nir/nir_to_tgsi.c index c35f2f1b622..2b3d7c1826b 100644 --- a/src/gallium/auxiliary/nir/nir_to_tgsi.c +++ b/src/gallium/auxiliary/nir/nir_to_tgsi.c @@ -1692,9 +1692,9 @@ ntt_emit_load_input(struct ntt_compile *c, nir_intrinsic_instr *instr) break; case nir_intrinsic_load_barycentric_at_sample: + /* We stored the sample in the fake "bary" dest. */ ureg_INTERP_SAMPLE(c->ureg, ntt_get_dest(c, &instr->dest), input, - ureg_imm1u(c->ureg, - ntt_src_as_uint(c, bary_instr->src[0]))); + ntt_get_src(c, instr->src[0])); break; case nir_intrinsic_load_barycentric_at_offset: @@ -1997,15 +1997,14 @@ ntt_emit_intrinsic(struct ntt_compile *c, nir_intrinsic_instr *instr) break; /* In TGSI we don't actually generate the barycentric coords, and emit - * interp intrinsics later. However, we do need to store the _at_offset - * argument so that we can use it at that point. + * interp intrinsics later. However, we do need to store the + * load_barycentric_at_* argument so that we can use it at that point. */ case nir_intrinsic_load_barycentric_pixel: case nir_intrinsic_load_barycentric_centroid: case nir_intrinsic_load_barycentric_sample: - case nir_intrinsic_load_barycentric_at_sample: break; - + case nir_intrinsic_load_barycentric_at_sample: case nir_intrinsic_load_barycentric_at_offset: ntt_store(c, &instr->dest, ntt_get_src(c, instr->src[0])); break;