diff --git a/src/compiler/nir/nir_lower_blend.c b/src/compiler/nir/nir_lower_blend.c index c35d33817a7..b169317747d 100644 --- a/src/compiler/nir/nir_lower_blend.c +++ b/src/compiler/nir/nir_lower_blend.c @@ -635,19 +635,20 @@ consume_dual_stores(nir_builder *b, nir_intrinsic_instr *store, void *data) * This pass requires that shader I/O is lowered to explicit load/store * instructions using nir_lower_io. */ -void +bool nir_lower_blend(nir_shader *shader, const nir_lower_blend_options *options) { assert(shader->info.stage == MESA_SHADER_FRAGMENT); struct ctx ctx = { .options = options }; - nir_shader_intrinsics_pass(shader, consume_dual_stores, - nir_metadata_block_index | - nir_metadata_dominance, - ctx.src1); + bool progress = nir_shader_intrinsics_pass(shader, consume_dual_stores, + nir_metadata_block_index | + nir_metadata_dominance, + ctx.src1); - nir_shader_intrinsics_pass(shader, nir_lower_blend_instr, - nir_metadata_block_index | - nir_metadata_dominance, - &ctx); + progress |= nir_shader_intrinsics_pass(shader, nir_lower_blend_instr, + nir_metadata_block_index | + nir_metadata_dominance, + &ctx); + return progress; } diff --git a/src/compiler/nir/nir_lower_blend.h b/src/compiler/nir/nir_lower_blend.h index f2c4a0b2a85..91d69828a22 100644 --- a/src/compiler/nir/nir_lower_blend.h +++ b/src/compiler/nir/nir_lower_blend.h @@ -59,7 +59,7 @@ typedef struct { bool scalar_blend_const; } nir_lower_blend_options; -void nir_lower_blend(nir_shader *shader, +bool nir_lower_blend(nir_shader *shader, const nir_lower_blend_options *options); #endif