agx: Implement nir_intrinsic_load_coefficients_agx
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24498>
This commit is contained in:
committed by
Marge Bot
parent
10cdc0ad9f
commit
22f694c008
@@ -344,6 +344,22 @@ agx_format_for_pipe(enum pipe_format format)
|
||||
unreachable("Invalid format");
|
||||
}
|
||||
|
||||
static void
|
||||
agx_emit_load_coefficients(agx_builder *b, agx_index dest,
|
||||
nir_intrinsic_instr *instr)
|
||||
{
|
||||
enum glsl_interp_mode mode = nir_intrinsic_interp_mode(instr);
|
||||
bool smooth = (mode != INTERP_MODE_FLAT);
|
||||
bool perspective = smooth && (mode != INTERP_MODE_NOPERSPECTIVE);
|
||||
|
||||
agx_index cf = agx_get_cf(b->shader, smooth, perspective,
|
||||
nir_intrinsic_io_semantics(instr).location,
|
||||
nir_intrinsic_component(instr), 1);
|
||||
|
||||
agx_ldcf_to(b, dest, cf, 1);
|
||||
agx_emit_cached_split(b, dest, 3);
|
||||
}
|
||||
|
||||
static void
|
||||
agx_emit_load_vary_flat(agx_builder *b, agx_index dest,
|
||||
nir_intrinsic_instr *instr)
|
||||
@@ -953,6 +969,11 @@ agx_emit_intrinsic(agx_builder *b, nir_intrinsic_instr *instr)
|
||||
agx_emit_load_vary_flat(b, dst, instr);
|
||||
return NULL;
|
||||
|
||||
case nir_intrinsic_load_coefficients_agx:
|
||||
assert(stage == MESA_SHADER_FRAGMENT);
|
||||
agx_emit_load_coefficients(b, dst, instr);
|
||||
return NULL;
|
||||
|
||||
case nir_intrinsic_load_agx:
|
||||
case nir_intrinsic_load_constant_agx:
|
||||
agx_emit_load(b, dst, instr);
|
||||
|
||||
Reference in New Issue
Block a user