Created attachment 130064 [details]
shader_test demonstrating the issue
The attached shader_test produces an instruction like this:
2: LODQ TEMP, TEMP, SAMP, 2D
Which is clearly bogus (and hits an assert in nouveau code making sure that the destmask is a subset of .xy). I tried to get this to happen with a much simpler shader, but was unsuccessful. Haven't tried whittling this one down yet. It comes from some radeonsi bug with a trace from Hitman.
My guess is that it's an issue in the st_glsl_to_tgsi register renumbering or copy-prop passes... somehow. (Mostly because I hate them, and hope that this hatred is vindicated by them having bugs.)
Author: Ilia Mirkin <email@example.com>
Date: Sat Mar 4 13:52:48 2017 -0500
st/mesa: set result writemask based on ir type
This prevents textureQueryLevels, which maps as LODQ, from ending up
with a xyzw writemask, which is illegal.
Signed-off-by: Ilia Mirkin <firstname.lastname@example.org>
Reviewed-by: Marek Olšák <email@example.com>