Skip to content

lima/ppir: use a ready list in node_to_instr

Erico Nunes requested to merge enunes/mesa:lima-ppir-sched-readylist into master

After the recent optimizations in ppir lowering that increase options for combining, node_to_instr now may have multiple options of nodes to insert and needs to decide which is better. For example if an instruction uses both a varying and a texture, there are two load varying nodes that can be inserted to the same instruction (ld_var and ld_coords). It is much more advantageous to pipeline the texture coords since that enables the increased precision path. However, with the current recursive expansion, this cannot be influenced.

This simple ready list implementation in node_to_instr allows it to choose the next ready node to expand based on a score priority, rather than relying on the random order coming from the recursive expansion.

Other than preferring nodes with pipeline output (which covers ld_coords vs ld_var), nodes using later slots in the pipeline are expanded first, allowing node_to_instr to make all of the earlier (pipelineable) nodes ready so they will be available in the ready list when picking nodes for the earlier slots.

Edited by Erico Nunes

Merge request reports