From: Rhys Perry Date: Tue, 5 Jun 2018 20:09:32 +0000 (+0100) Subject: nv50/ir: fix image stores with indirect handles X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d885303a384978eeefdb2a264ca747292eff0b86;p=mesa.git nv50/ir: fix image stores with indirect handles Having this if statement here prevented the next if statement from being reached in the case of image stores, which is needed for instructions with indirect bindless handles like "STORE TEMP[ADDR[2].x+1](1) ...". Signed-off-by: Rhys Perry Reviewed-by: Karol Herbst Signed-off-by: Karol Herbst --- diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp index d7844d73816..c92acc996c4 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp @@ -1570,6 +1570,11 @@ bool Source::scanInstruction(const struct tgsi_full_instruction *inst) if (insn.dstCount()) { Instruction::DstRegister dst = insn.getDst(0); + if (insn.getOpcode() == TGSI_OPCODE_STORE && + dst.getFile() != TGSI_FILE_MEMORY) { + info->io.globalAccess |= 0x2; + } + if (dst.getFile() == TGSI_FILE_OUTPUT) { if (dst.isIndirect(0)) for (unsigned i = 0; i < info->numOutputs; ++i) @@ -1587,10 +1592,6 @@ bool Source::scanInstruction(const struct tgsi_full_instruction *inst) if (isEdgeFlagPassthrough(insn)) info->io.edgeFlagIn = insn.getSrc(0).getIndex(0); } else - if (dst.getFile() != TGSI_FILE_MEMORY && - insn.getOpcode() == TGSI_OPCODE_STORE) { - info->io.globalAccess |= 0x2; - } else if (dst.getFile() == TGSI_FILE_TEMPORARY) { if (dst.isIndirect(0)) indirectTempArrays.insert(dst.getArrayId());