From: Alan Hourihane Date: Mon, 13 Oct 2008 11:30:40 +0000 (+0100) Subject: mesa: when emitting an address load instruction, for X-Git-Tag: 062012170305~17580^2~496^2~532 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5bc8ebb12be99ac769a0f2ad1f77a16ebb2bf41f;p=profile%2Fivi%2Fmesa.git mesa: when emitting an address load instruction, for indexed elements ensure we write to a single register. --- diff --git a/src/mesa/shader/slang/slang_emit.c b/src/mesa/shader/slang/slang_emit.c index 9e8daa1..f3c3fa6 100644 --- a/src/mesa/shader/slang/slang_emit.c +++ b/src/mesa/shader/slang/slang_emit.c @@ -1579,13 +1579,17 @@ emit_array_element(slang_emit_info *emitInfo, slang_ir_node *n) else { /* Variable array index */ struct prog_instruction *inst; + slang_ir_storage dstStore = *n->Store; /* do codegen for array index expression */ emit(emitInfo, n->Children[1]); inst = new_instruction(emitInfo, OPCODE_ARL); - storage_to_dst_reg(&inst->DstReg, n->Store, n->Writemask); + if (dstStore.Size > 4) + dstStore.Size = 4; /* only emit one instruction */ + + storage_to_dst_reg(&inst->DstReg, &dstStore, n->Writemask); storage_to_src_reg(&inst->SrcReg[0], n->Children[1]->Store); inst->DstReg.File = PROGRAM_ADDRESS;