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>
This commit is contained in:
@@ -2958,10 +2958,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.
|
||||
@@ -3010,6 +3006,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;
|
||||
|
||||
Reference in New Issue
Block a user