diff --git a/src/compiler/nir/nir_lower_atomics_to_ssbo.c b/src/compiler/nir/nir_lower_atomics_to_ssbo.c index a72c20e5491..8c8f9f8121e 100644 --- a/src/compiler/nir/nir_lower_atomics_to_ssbo.c +++ b/src/compiler/nir/nir_lower_atomics_to_ssbo.c @@ -127,10 +127,16 @@ lower_instr(nir_intrinsic_instr *instr, unsigned ssbo_offset, nir_builder *b) break; } - if (new_instr->intrinsic == nir_intrinsic_load_ssbo || - new_instr->intrinsic == nir_intrinsic_store_ssbo) + if (new_instr->intrinsic == nir_intrinsic_load_ssbo) { nir_intrinsic_set_align(new_instr, 4, 0); + /* we could be replacing an intrinsic with fixed # of dest + * num_components with one that has variable number. So + * best to take this from the dest: + */ + new_instr->num_components = instr->dest.ssa.num_components; + } + nir_ssa_dest_init(&new_instr->instr, &new_instr->dest, instr->dest.ssa.num_components, instr->dest.ssa.bit_size, NULL); @@ -145,11 +151,6 @@ lower_instr(nir_intrinsic_instr *instr, unsigned ssbo_offset, nir_builder *b) nir_ssa_def_rewrite_uses(&instr->dest.ssa, nir_src_for_ssa(&new_instr->dest.ssa)); } - /* we could be replacing an intrinsic with fixed # of dest num_components - * with one that has variable number. So best to take this from the dest: - */ - new_instr->num_components = instr->dest.ssa.num_components; - return true; }