From: Alyssa Rosenzweig Date: Thu, 15 Aug 2019 23:53:03 +0000 (-0700) Subject: pan/midgard: Clamp st_vary swizzle by number of components X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2788721cc4f911850bf92ccd02f82bed9d4dd360;p=mesa.git pan/midgard: Clamp st_vary swizzle by number of components Same issue with liveness analysis. If we store out a vec3, we should not reference the .w component. Signed-off-by: Alyssa Rosenzweig --- diff --git a/src/panfrost/midgard/midgard_compile.c b/src/panfrost/midgard/midgard_compile.c index 2b454a92260..55406e6f458 100644 --- a/src/panfrost/midgard/midgard_compile.c +++ b/src/panfrost/midgard/midgard_compile.c @@ -1577,11 +1577,12 @@ emit_intrinsic(compiler_context *ctx, nir_intrinsic_instr *instr) emit_explicit_constant(ctx, reg, reg); unsigned component = nir_intrinsic_component(instr); + unsigned nr_comp = nir_src_num_components(instr->src[0]); midgard_instruction st = m_st_vary_32(reg, offset); st.load_store.arg_1 = 0x9E; st.load_store.arg_2 = 0x1E; - st.load_store.swizzle = SWIZZLE_XYZW << (2*component); + st.load_store.swizzle = swizzle_of(nr_comp) << (2*component); emit_mir_instruction(ctx, st); } else { DBG("Unknown store\n");