nv50/ir: avoid asserts when the state tracker feeds us bogus inputs
authorIlia Mirkin <imirkin@alum.mit.edu>
Fri, 13 May 2016 03:42:47 +0000 (23:42 -0400)
committerIlia Mirkin <imirkin@alum.mit.edu>
Sun, 15 May 2016 18:12:56 +0000 (14:12 -0400)
commitbe2b13e3bf4e61aee96c9575e7781d053f0788a1
treeb56f36536baf4140650660a6c562950dc771d03a
parent9323d084ac5a5f59936097b6f5bf9db41c1a89bd
nv50/ir: avoid asserts when the state tracker feeds us bogus inputs

INTERP is defined (by me) to have to have a INPUT source. However the
state tracker does not always obey this. This happens due to varying
packing logic introducing additional mov's which can't always be undone.
Instead of just giving up, we instead try harder to find the original
input. This won't always be possible, for example with indirect
accesses. There's not much we can (easily) do about that though.

This fixes the remaining interpolateAt* failures in dEQP:

dEQP-GLES31.functional.shaders.multisample_interpolation.interpolate_at*

some of which were asserting due to INTERP_* being passed a non-input.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp