[Bug 94477] Too many temporary expressions in shader freeze glLinkProgram

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Mon Jul 25 18:22:39 UTC 2016


https://bugs.freedesktop.org/show_bug.cgi?id=94477

--- Comment #3 from Matt Turner <mattst88 at gmail.com> ---
I've come back to this recently.

The first problem appears to be in the do_copy_propagation() pass.
visit_leave(ir_assignment *) calls kill(), and kill() does a linked-list walk
across many thousands of elements in the "ACP". visit_leave() executes for each
assignment. Printing the list length in kill() shows it to continually
increase, so I'm not sure if replacing the ACP with a different data structure
is sufficient or if there is another bug...

Replacing the ACP with a hash table, for instance, isn't completely
straightforward, because we need to be able to look up entries by "lhs", of
which there only may be one, and "rhs", of which there may be many (or none).

do_copy_propagation_elements() suffers from the same problem.

But neither of these would be a problem if we didn't call
brw_do_channel_expressions(). It makes a huge mess of the program, massively
increasing the number of assignments.

Removing it has been something we want to do for a long time, but we aren't
there yet because it actually hurts programs in our shader-db if we remove it.

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/intel-3d-bugs/attachments/20160725/a82f331d/attachment.html>


More information about the intel-3d-bugs mailing list