diff --git a/src/gallium/drivers/r600/sfn/sfn_instr_alugroup.cpp b/src/gallium/drivers/r600/sfn/sfn_instr_alugroup.cpp index fa05fbd675f..c778be43b15 100644 --- a/src/gallium/drivers/r600/sfn/sfn_instr_alugroup.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_instr_alugroup.cpp @@ -135,6 +135,17 @@ AluGroup::add_trans_instructions(AluInstr *instr) return false; } +bool +AluGroup::require_push() const +{ + for (auto& i : m_slots) { + if (i) + if (i->cf_type() == cf_alu_push_before) + return true; + } + return false; +} + bool AluGroup::add_vec_instructions(AluInstr *instr) { diff --git a/src/gallium/drivers/r600/sfn/sfn_instr_alugroup.h b/src/gallium/drivers/r600/sfn/sfn_instr_alugroup.h index 3892bc800c9..e694c9e520a 100644 --- a/src/gallium/drivers/r600/sfn/sfn_instr_alugroup.h +++ b/src/gallium/drivers/r600/sfn/sfn_instr_alugroup.h @@ -87,6 +87,8 @@ public: AluGroup *as_alu_group() override { return this;} + bool require_push() const; + private: bool update_readport_reserver_vec(int i, AluReadportReservation& readports_evaluator); bool update_readport_reserver_trans(AluReadportReservation& readports_evaluator);