nv50/ir/nir: Fix zero source handling of tex instructions.

For TXQ we know make sure that we at least add one source. If the nir
instruction however didn't had any sources, we inserted a fake 0 source
ending up with two 0s for TXQ.

It's unclear to me if we have other ops where this would be necessary.

Fixes: 85a31fa1fc ("nv50/ir/nir: fix txq emission on MS textures")
Signed-off-by: Karol Herbst <git@karolherbst.de>
Acked-by: M Henning <drawoc@darkrefraction.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24373>
(cherry picked from commit 8d7f682bdb)
This commit is contained in:
Karol Herbst 2023-07-28 18:42:03 +02:00 committed by Dylan Baker
parent 5073369d9c
commit 63968a36f8
2 changed files with 5 additions and 5 deletions

View file

@ -22284,7 +22284,7 @@
"description": "nv50/ir/nir: Fix zero source handling of tex instructions.",
"nominated": true,
"nomination_type": 1,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "85a31fa1fc906d500e10a7fa5c9973aa17e7f1d6",
"notes": null

View file

@ -2964,10 +2964,6 @@ Converter::visit(nir_tex_instr *insn)
srcs.push_back(getSSA());
}
if (insn->op == nir_texop_texture_samples)
srcs.push_back(zero);
else if (!insn->num_srcs)
srcs.push_back(loadImm(NULL, 0));
if (biasIdx != -1)
srcs.push_back(getSrc(&insn->src[biasIdx].src, 0));
// TXQ requires a lod argument for all queries we care about here.
@ -3016,6 +3012,10 @@ Converter::visit(nir_tex_instr *insn)
if (target.isMS() || (op == OP_TEX && prog->getType() != Program::TYPE_FRAGMENT))
lz = true;
// TODO figure out which instructions still need this.
if (srcs.empty())
srcs.push_back(loadImm(NULL, 0));
TexInstruction *texi = mkTex(op, target.getEnum(), r, s, defs, srcs);
texi->tex.levelZero = lz;
texi->tex.mask = mask;