Skip to content

freedreno/ir3: (jp) fixes

Rob Clark requested to merge robclark/mesa:wip/jp-fixes into master

First patch converts predecessors to a struct set to make them easier to update in the second patch, which updates ir3_legalize to properly maintain sucessors and predecessors.

The third patch is what finally fixes things, to set the (jp) flag based on successors and predecessors, instead of based on branch/jump targets (which can miss fall-thrus). In principle any block w/ more than one predecessors is by definition a convergence point. But also (in case of loops) a block with a single predecessor which has multiple successors can also be a convergence point where live threads can re-join parked threads that exited the loop on a previous iteration.

Fixes:

dEQP-GLES3.functional.shaders.switch.switch_in_do_while_loop_dynamic_vertex
dEQP-GLES3.functional.shaders.switch.switch_in_do_while_loop_dynamic_fragment

Merge request reports