diff --git a/.pick_status.json b/.pick_status.json index 18b467690ad..128fc6c75b9 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -504,7 +504,7 @@ "description": "iris: Add missing nir_metadata_preserve in iris_lower_storage_image_derefs", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "26a54ae4b26fc221e869af2c615ce0e8138e41d6", "notes": null diff --git a/src/gallium/drivers/iris/iris_program.c b/src/gallium/drivers/iris/iris_program.c index c5f620440fc..71762b82d98 100644 --- a/src/gallium/drivers/iris/iris_program.c +++ b/src/gallium/drivers/iris/iris_program.c @@ -773,6 +773,7 @@ iris_lower_storage_image_derefs(nir_shader *nir) nir_function_impl *impl = nir_shader_get_entrypoint(nir); nir_builder b = nir_builder_create(impl); + bool progress = false; nir_foreach_block(block, impl) { nir_foreach_instr_safe(instr, block) { @@ -797,6 +798,7 @@ iris_lower_storage_image_derefs(nir_shader *nir) nir_iadd_imm(&b, get_aoa_deref_offset(&b, deref, 1), var->data.driver_location); nir_rewrite_image_intrinsic(intrin, index, false); + progress = true; break; } @@ -805,6 +807,12 @@ iris_lower_storage_image_derefs(nir_shader *nir) } } } + + if (progress) { + nir_metadata_preserve(impl, nir_metadata_control_flow); + } else { + nir_metadata_preserve(impl, nir_metadata_all); + } } static bool