diff --git a/.pick_status.json b/.pick_status.json index bd8cd127cd8..ee4016166ae 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -2414,7 +2414,7 @@ "description": "zink: adjust swizzled deref loads by the variable component offset", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "17a35412dcc77a3058107100d27f734796a9d0ca", "notes": null diff --git a/src/gallium/drivers/zink/zink_compiler.c b/src/gallium/drivers/zink/zink_compiler.c index 5c3c1f1ed7d..e1411bcb841 100644 --- a/src/gallium/drivers/zink/zink_compiler.c +++ b/src/gallium/drivers/zink/zink_compiler.c @@ -3764,7 +3764,7 @@ add_derefs_instr(nir_builder *b, nir_intrinsic_instr *intr, void *data) } /* filter needed components */ if (intr->num_components < load->num_components) - load = nir_channels(b, load, BITFIELD_MASK(intr->num_components) << c); + load = nir_channels(b, load, BITFIELD_MASK(intr->num_components) << (c - var->data.location_frac)); nir_def_rewrite_uses(&intr->def, load); } else { nir_def *store = intr->src[0].ssa;