From 4dcfb681bcab66faa9f9fddfc8a05b796c1f007d Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Sun, 13 Aug 2023 15:31:08 -0400 Subject: [PATCH] agx/lower_vbo: Handle nonzero component Fixes dEQP-VK.glsl.440.linkage.varying.component.vert_in.vec2.as_float_float Signed-off-by: Alyssa Rosenzweig Part-of: --- src/asahi/lib/agx_nir_lower_vbo.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/asahi/lib/agx_nir_lower_vbo.c b/src/asahi/lib/agx_nir_lower_vbo.c index 168698aa5db..5a4e3c1f508 100644 --- a/src/asahi/lib/agx_nir_lower_vbo.c +++ b/src/asahi/lib/agx_nir_lower_vbo.c @@ -240,10 +240,11 @@ pass(struct nir_builder *b, nir_instr *instr, void *data) * the format swizzle forwards to trim/pad/reorder as needed. */ nir_def *channels[4] = {NULL}; - assert(nir_intrinsic_component(intr) == 0 && "unimplemented"); - for (unsigned i = 0; i < intr->num_components; ++i) - channels[i] = apply_swizzle_channel(b, memory, desc->swizzle[i], is_int); + for (unsigned i = 0; i < intr->num_components; ++i) { + unsigned c = nir_intrinsic_component(intr) + i; + channels[i] = apply_swizzle_channel(b, memory, desc->swizzle[c], is_int); + } nir_def *logical = nir_vec(b, channels, intr->num_components); nir_def_rewrite_uses(&intr->def, logical);