mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-27 19:10:14 +01:00
gm107/ir: fix texture argument order
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Cc: "10.3" <mesa-stable@lists.freedesktop.org>
This commit is contained in:
parent
d3c3bba6d0
commit
0532a5fd00
2 changed files with 34 additions and 5 deletions
|
|
@ -601,6 +601,21 @@ NVC0LoweringPass::handleTEX(TexInstruction *i)
|
|||
// lod bias
|
||||
// depth compare
|
||||
// offsets (same as fermi, except txd which takes it with array)
|
||||
//
|
||||
// Maxwell (tex):
|
||||
// array
|
||||
// coords
|
||||
// indirect handle
|
||||
// sample
|
||||
// lod bias
|
||||
// depth compare
|
||||
// offsets
|
||||
//
|
||||
// Maxwell (txd):
|
||||
// indirect handle
|
||||
// coords
|
||||
// array + offsets
|
||||
// derivatives
|
||||
|
||||
if (chipset >= NVISA_GK104_CHIPSET) {
|
||||
if (i->tex.rIndirectSrc >= 0 || i->tex.sIndirectSrc >= 0) {
|
||||
|
|
@ -634,12 +649,17 @@ NVC0LoweringPass::handleTEX(TexInstruction *i)
|
|||
const int sat = (i->op == OP_TXF) ? 1 : 0;
|
||||
DataType sTy = (i->op == OP_TXF) ? TYPE_U32 : TYPE_F32;
|
||||
bld.mkCvt(OP_CVT, TYPE_U16, layer, sTy, src)->saturate = sat;
|
||||
for (int s = dim; s >= 1; --s)
|
||||
i->setSrc(s, i->getSrc(s - 1));
|
||||
i->setSrc(0, layer);
|
||||
if (i->op != OP_TXD || chipset < NVISA_GM107_CHIPSET) {
|
||||
for (int s = dim; s >= 1; --s)
|
||||
i->setSrc(s, i->getSrc(s - 1));
|
||||
i->setSrc(0, layer);
|
||||
} else {
|
||||
i->setSrc(dim, layer);
|
||||
}
|
||||
}
|
||||
// Move the indirect reference to the first place
|
||||
if (i->tex.rIndirectSrc >= 0) {
|
||||
if (i->tex.rIndirectSrc >= 0 && (
|
||||
i->op == OP_TXD || chipset < NVISA_GM107_CHIPSET)) {
|
||||
Value *hnd = i->getIndirectR();
|
||||
|
||||
i->setIndirectR(NULL);
|
||||
|
|
@ -742,8 +762,10 @@ NVC0LoweringPass::handleTEX(TexInstruction *i)
|
|||
// create it if it's not already there, and INSBF it if it already
|
||||
// is.
|
||||
s = (i->tex.rIndirectSrc >= 0) ? 1 : 0;
|
||||
if (chipset >= NVISA_GM107_CHIPSET)
|
||||
s += dim;
|
||||
if (i->tex.target.isArray()) {
|
||||
bld.mkOp3(OP_INSBF, TYPE_U32, i->getSrc(0),
|
||||
bld.mkOp3(OP_INSBF, TYPE_U32, i->getSrc(s),
|
||||
bld.loadImm(NULL, imm), bld.mkImm(0xc10),
|
||||
i->getSrc(s));
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -1921,6 +1921,13 @@ RegAlloc::InsertConstraintsPass::texConstraintGM107(TexInstruction *tex)
|
|||
if (isTextureOp(tex->op)) {
|
||||
if (tex->op != OP_TXQ) {
|
||||
s = tex->tex.target.getArgCount() - tex->tex.target.isMS();
|
||||
if (tex->op == OP_TXD) {
|
||||
// Indirect handle belongs in the first arg
|
||||
if (tex->tex.rIndirectSrc >= 0)
|
||||
s++;
|
||||
if (!tex->tex.target.isArray() && tex->tex.useOffsets)
|
||||
s++;
|
||||
}
|
||||
n = tex->srcCount(0xff) - s;
|
||||
} else {
|
||||
s = tex->srcCount(0xff);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue