nv50/ir: use levelZero for non-frag tex/txp ops

radeonsi also does the same thing. I suspect that this is likely to be a
no-op in reality, but it brings nouveau code closer to what the blob
produces. Plus it makes sense to not try to do auto-derivatives on this.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
This commit is contained in:
Ilia Mirkin 2016-10-18 00:25:38 -04:00
parent 3fdeb7c983
commit adad576bfc
1 changed files with 5 additions and 0 deletions

View File

@ -2227,6 +2227,11 @@ Converter::handleTEX(Value *dst[4], int R, int S, int L, int C, int Dx, int Dy)
if (tgsi.getOpcode() == TGSI_OPCODE_SAMPLE_C_LZ)
texi->tex.levelZero = true;
if (prog->getType() != Program::TYPE_FRAGMENT &&
(tgsi.getOpcode() == TGSI_OPCODE_TEX ||
tgsi.getOpcode() == TGSI_OPCODE_TEX2 ||
tgsi.getOpcode() == TGSI_OPCODE_TXP))
texi->tex.levelZero = true;
if (tgsi.getOpcode() == TGSI_OPCODE_TG4 && !tgt.isShadow())
texi->tex.gatherComp = tgsi.getSrc(1).getValueU32(0, info);