AluInstr *m_last_lds_instr{nullptr};
};
-class BlockSheduler {
+class BlockScheduler {
public:
- BlockSheduler(r600_chip_class chip_class);
+ BlockScheduler(r600_chip_class chip_class);
void run(Shader *shader);
void finalize();
Block *m_current_block;
int m_lds_addr_count{0};
- int m_alu_groups_schduled{0};
+ int m_alu_groups_scheduled{0};
r600_chip_class m_chip_class;
};
// to be able to re-start scheduling
auto scheduled_shader = original;
- BlockSheduler s(original->chip_class());
+ BlockScheduler s(original->chip_class());
s.run(scheduled_shader);
s.finalize();
return scheduled_shader;
}
-BlockSheduler::BlockSheduler(r600_chip_class chip_class):
+BlockScheduler::BlockScheduler(r600_chip_class chip_class):
current_shed(sched_alu),
m_last_pos(nullptr),
m_last_pixel(nullptr),
}
void
-BlockSheduler::run(Shader *shader)
+BlockScheduler::run(Shader *shader)
{
Shader::ShaderBlocks scheduled_blocks;
}
void
-BlockSheduler::schedule_block(Block& in_block,
+BlockScheduler::schedule_block(Block& in_block,
Shader::ShaderBlocks& out_blocks,
ValueFactory& vf)
{
}
void
-BlockSheduler::finalize()
+BlockScheduler::finalize()
{
if (m_last_pos)
m_last_pos->set_is_last_export(true);
}
bool
-BlockSheduler::schedule_alu(Shader::ShaderBlocks& out_blocks)
+BlockScheduler::schedule_alu(Shader::ShaderBlocks& out_blocks)
{
bool success = false;
AluGroup *group = nullptr;
if (has_alu_ready || !alu_groups_ready.empty()) {
if (m_current_block->type() != Block::alu) {
start_new_block(out_blocks, Block::alu);
- m_alu_groups_schduled = 0;
+ m_alu_groups_scheduled = 0;
}
}
}
if (success) {
- ++m_alu_groups_schduled;
+ ++m_alu_groups_scheduled;
break;
} else if (m_current_block->kcache_reservation_failed()) {
// LDS read groups should not lead to impossible
}
bool
-BlockSheduler::schedule_tex(Shader::ShaderBlocks& out_blocks)
+BlockScheduler::schedule_tex(Shader::ShaderBlocks& out_blocks)
{
if (m_current_block->type() != Block::tex || m_current_block->remaining_slots() == 0) {
start_new_block(out_blocks, Block::tex);
}
bool
-BlockSheduler::schedule_vtx(Shader::ShaderBlocks& out_blocks)
+BlockScheduler::schedule_vtx(Shader::ShaderBlocks& out_blocks)
{
if (m_current_block->type() != Block::vtx || m_current_block->remaining_slots() == 0) {
start_new_block(out_blocks, Block::vtx);
template <typename I>
bool
-BlockSheduler::schedule_gds(Shader::ShaderBlocks& out_blocks, std::list<I *>& ready_list)
+BlockScheduler::schedule_gds(Shader::ShaderBlocks& out_blocks, std::list<I *>& ready_list)
{
bool was_full = m_current_block->remaining_slots() == 0;
if (m_current_block->type() != Block::gds || was_full) {
}
void
-BlockSheduler::start_new_block(Shader::ShaderBlocks& out_blocks, Block::Type type)
+BlockScheduler::start_new_block(Shader::ShaderBlocks& out_blocks, Block::Type type)
{
if (!m_current_block->empty()) {
sfn_log << SfnLog::schedule << "Start new block\n";
template <typename I>
bool
-BlockSheduler::schedule_cf(Shader::ShaderBlocks& out_blocks, std::list<I *>& ready_list)
+BlockScheduler::schedule_cf(Shader::ShaderBlocks& out_blocks, std::list<I *>& ready_list)
{
if (ready_list.empty())
return false;
}
bool
-BlockSheduler::schedule_alu_to_group_vec(AluGroup *group)
+BlockScheduler::schedule_alu_to_group_vec(AluGroup *group)
{
assert(group);
assert(!alu_vec_ready.empty());
}
bool
-BlockSheduler::schedule_alu_to_group_trans(AluGroup *group,
+BlockScheduler::schedule_alu_to_group_trans(AluGroup *group,
std::list<AluInstr *>& readylist)
{
assert(group);
template <typename I>
bool
-BlockSheduler::schedule(std::list<I *>& ready_list)
+BlockScheduler::schedule(std::list<I *>& ready_list)
{
if (!ready_list.empty() && m_current_block->remaining_slots() > 0) {
auto ii = ready_list.begin();
template <typename I>
bool
-BlockSheduler::schedule_block(std::list<I *>& ready_list)
+BlockScheduler::schedule_block(std::list<I *>& ready_list)
{
bool success = false;
while (!ready_list.empty() && m_current_block->remaining_slots() > 0) {
}
bool
-BlockSheduler::schedule_exports(Shader::ShaderBlocks& out_blocks,
+BlockScheduler::schedule_exports(Shader::ShaderBlocks& out_blocks,
std::list<ExportInstr *>& ready_list)
{
if (m_current_block->type() != Block::cf)
}
bool
-BlockSheduler::collect_ready(CollectInstructions& available)
+BlockScheduler::collect_ready(CollectInstructions& available)
{
sfn_log << SfnLog::schedule << "Ready instructions\n";
bool result = false;
}
bool
-BlockSheduler::collect_ready_alu_vec(std::list<AluInstr *>& ready,
+BlockScheduler::collect_ready_alu_vec(std::list<AluInstr *>& ready,
std::list<AluInstr *>& available)
{
auto i = available.begin();
template <typename T>
bool
-BlockSheduler::collect_ready_type(std::list<T *>& ready, std::list<T *>& available)
+BlockScheduler::collect_ready_type(std::list<T *>& ready, std::list<T *>& available)
{
auto i = available.begin();
auto e = available.end();