From 06fe6651b3172eb56495a4cc863905d119c0fe76 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Tue, 4 May 2021 22:37:15 -0400 Subject: [PATCH] agx: Implement blend constant color sysvals Signed-off-by: Alyssa Rosenzweig Part-of: --- src/asahi/compiler/agx_compile.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/asahi/compiler/agx_compile.c b/src/asahi/compiler/agx_compile.c index dd9b6320d48..34270b2e15e 100644 --- a/src/asahi/compiler/agx_compile.c +++ b/src/asahi/compiler/agx_compile.c @@ -236,6 +236,15 @@ agx_emit_load_ubo(agx_builder *b, nir_intrinsic_instr *instr) return agx_wait(b, 0); } +static agx_instr * +agx_blend_const(agx_builder *b, agx_index dst, unsigned comp) +{ + agx_index val = agx_indexed_sysval(b->shader, + AGX_PUSH_BLEND_CONST, AGX_SIZE_32, comp * 2, 4 * 2); + + return agx_mov_to(b, dst, val); +} + static agx_instr * agx_emit_intrinsic(agx_builder *b, nir_intrinsic_instr *instr) { @@ -275,6 +284,11 @@ agx_emit_intrinsic(agx_builder *b, nir_intrinsic_instr *instr) case nir_intrinsic_load_vertex_id: return agx_mov_to(b, dst, agx_abs(agx_register(10, AGX_SIZE_32))); /* TODO: RA */ + case nir_intrinsic_load_blend_const_color_r_float: return agx_blend_const(b, dst, 0); + case nir_intrinsic_load_blend_const_color_g_float: return agx_blend_const(b, dst, 1); + case nir_intrinsic_load_blend_const_color_b_float: return agx_blend_const(b, dst, 2); + case nir_intrinsic_load_blend_const_color_a_float: return agx_blend_const(b, dst, 3); + default: fprintf(stderr, "Unhandled intrinsic %s\n", nir_intrinsic_infos[instr->intrinsic].name); unreachable("Unhandled intrinsic");