Skip to content

auto-merge: Safe, reviewed patches from MR !13095.

Ian Romanick requested to merge idr/mesa:review/issue-4213-minimal into main

Previously a predicated BREAK that appeared immediately before the WHILE would get merged into the WHILE. This doesn't work if other flow control (e.g., a CONT) can transfer directly to the WHILE.

On Intel platforms, this fixes the CTS test dEQP-VK.graphicsfuzz.stable-binarysearch-tree-nested-if-and-conditional.

No shader-db changes on any Intel platform.

When this commit was first created (over a month before it is going to land), there were some regressions that were prevented by other commits in MR !13095. That does not appear to be the case now, so I don't know what changed. Basically, the treatment of discard as a combination of demote and terminate causes additional continues in some loops, and those continues trigger this bug. The other commits from that MR prevent those continues from being generated in the first place.

All Intel platforms had simlar fossil-db results. (Ice Lake shown) Instructions in all programs: 144419989 -> 144419995 (+0.0%) SENDs in all programs: 6947332 -> 6947332 (+0.0%) Loops in all programs: 38277 -> 38277 (+0.0%) Spills in all programs: 204075 -> 204075 (+0.0%) Fills in all programs: 319480 -> 319480 (+0.0%)

A few shaders in Doom 2016 were hurt by one instruction each. It seems likely that these shaders would have experienced at least some mis-rendering.

Closes: #4213 (closed) Fixes: d13bcdb3 ("i965/fs: Extend predicated break pass to predicate WHILE.") Reviewed-by: Jason Ekstrand jason@jlekstrand.net

Merge request reports