From 9b97ed12506000fdf21917fb08e2b11fa8d26ef6 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Fri, 28 Jun 2019 09:30:59 -0700 Subject: [PATCH] panfrost/midgard: Emit type appropriate ld_vary Signed-off-by: Alyssa Rosenzweig --- .../panfrost/midgard/midgard_compile.c | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/panfrost/midgard/midgard_compile.c b/src/gallium/drivers/panfrost/midgard/midgard_compile.c index d7155289a71..4a399293af0 100644 --- a/src/gallium/drivers/panfrost/midgard/midgard_compile.c +++ b/src/gallium/drivers/panfrost/midgard/midgard_compile.c @@ -1091,7 +1091,7 @@ emit_varying_read( compiler_context *ctx, unsigned dest, unsigned offset, unsigned nr_comp, unsigned component, - nir_src *indirect_offset) + nir_src *indirect_offset, nir_alu_type type) { /* XXX: Half-floats? */ /* TODO: swizzle, mask */ @@ -1119,6 +1119,23 @@ emit_varying_read( ins.load_store.unknown = 0x1e9e; /* xxx: what is this? */ } + /* Use the type appropriate load */ + switch (type) { + case nir_type_uint: + case nir_type_bool: + ins.load_store.op = midgard_op_ld_vary_32u; + break; + case nir_type_int: + ins.load_store.op = midgard_op_ld_vary_32i; + break; + case nir_type_float: + ins.load_store.op = midgard_op_ld_vary_32; + break; + default: + unreachable("Attempted to load unknown type"); + break; + } + emit_mir_instruction(ctx, ins); } @@ -1280,7 +1297,7 @@ emit_intrinsic(compiler_context *ctx, nir_intrinsic_instr *instr) uint32_t uindex = nir_src_as_uint(index) + 1; emit_ubo_read(ctx, reg, offset / 16, NULL, uindex); } else if (ctx->stage == MESA_SHADER_FRAGMENT && !ctx->is_blend) { - emit_varying_read(ctx, reg, offset, nr_comp, component, !direct ? &instr->src[0] : NULL); + emit_varying_read(ctx, reg, offset, nr_comp, component, !direct ? &instr->src[0] : NULL, t); } else if (ctx->is_blend) { /* For blend shaders, load the input color, which is * preloaded to r0 */ -- 2.30.2