diff --git a/src/amd/compiler/aco_scheduler.cpp b/src/amd/compiler/aco_scheduler.cpp index 93908a2c390..dfab79f5d85 100644 --- a/src/amd/compiler/aco_scheduler.cpp +++ b/src/amd/compiler/aco_scheduler.cpp @@ -1264,8 +1264,12 @@ schedule_program(Program* program) ctx.num_waves = std::max(ctx.num_waves / wave_fac, 1); assert(ctx.num_waves > 0); - ctx.mv.max_registers = {int16_t(get_addr_vgpr_from_waves(program, ctx.num_waves * wave_fac) - 2), - int16_t(get_addr_sgpr_from_waves(program, ctx.num_waves * wave_fac))}; + ctx.mv.max_registers = { + int16_t(get_addr_vgpr_from_waves( + program, std::max(ctx.num_waves * wave_fac, program->min_waves)) - + 2), + int16_t(get_addr_sgpr_from_waves( + program, std::max(ctx.num_waves * wave_fac, program->min_waves)))}; /* NGG culling shaders are very sensitive to position export scheduling. * Schedule less aggressively when early primitive export is used, and