On 01/09/2012 05:36 PM, Eric Anholt wrote:
On Fri, 6 Jan 2012 16:50:03 -0800, "Ian Romanick"<i...@freedesktop.org> wrote:
From: Ian Romanick<ian.d.roman...@intel.com>
Signed-off-by: Ian Romanick<ian.d.roman...@intel.com>
Instead of making the compile process whack the assembly prog struct as
a side-effect, I think better would be to put uses_kill in the prog_data
during the GLSL and the ARB compile, and use that from the unit state.
I agree that doing it during the compile like this sucks, but I'm not
sure how best to do it.
One thing to keep in mind is that optimization passes may eliminate
discards. For example:
if (foo)
discard;
might get removed by dead code elimination if constant folding and
opt_algebraic determines that foo is false.
So, to get the most accurate answer, you'd probably to use a
post-optimization analysis pass. Creating a whole pass for such a
trivial thing seems like overkill, but it might be worthwhile if we
expand it to track other things. For example, I'd love to know up front
if something uses TXD on a shadow sampler.
Also, theoretically, optimizations in the backend could also eliminate
instructions, so doing it at the GLSL IR level would miss that. I guess
that's a lot less common, though, and we already miss that today. We
may also want to make a decision before doing the backend codegen, anyway.
I guess I'm okay with Ian's original code for now, since my desire to
rid ourselves of ir_to_mesa in 8.0 outweighs my desire to do this
better, and I'm not sure we'll have time. It should definitely be
reworked for 8.1 though.
(Long term, I've got a goal of moving the VS/WM state info to prog_data
output, so that when we detect identical compile results from different
shaders, we don't trigger state changes)
Would be cool.
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev